From e766102fad3d2e05d0fe0aafa888f6ccbdae804f Mon Sep 17 00:00:00 2001 From: Robert Schulze <112553298+deveritec-rosc@users.noreply.github.com> Date: Fri, 6 Jan 2023 10:35:08 +0100 Subject: [PATCH 01/20] [nrfconnect] Allow use of certifcates stored on the HDD for factory data (#24274) * [nrfconnect] Allow use of certifcates stored somewhere on the HDD for factory data Instead of just allow usage for the default certificates or certificates generated on demand also add the possibility to use certificates already located on the HDD. This makes it easier to use generated test DCL certificates. * [nrfconnect] Rename options and provide help string Signed-off-by: Robert Schulze * [nrfconnect] fix indententaion error in Kconfig Signed-off-by: Robert Schulze Signed-off-by: Robert Schulze --- config/nrfconnect/chip-module/Kconfig | 47 +++++++++++++++---- .../chip-module/generate_factory_data.cmake | 4 ++ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/config/nrfconnect/chip-module/Kconfig b/config/nrfconnect/chip-module/Kconfig index 4b477d357287d1..b6700cbe7f3602 100644 --- a/config/nrfconnect/chip-module/Kconfig +++ b/config/nrfconnect/chip-module/Kconfig @@ -135,16 +135,45 @@ config CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE As a result, a new output file merged.hex will consist of all partitions including factory data. -# Use default certificates without generating or providing them -config CHIP_FACTORY_DATA_USE_DEFAULT_CERTS - bool "Use default certificates located in Matter repository" - default y +# Select source of the certificates +choice CHIP_FACTORY_DATA_CERT_SOURCE + prompt "Attestation certificate file source" + default CHIP_FACTORY_DATA_USE_DEFAULT_CERTS + + config CHIP_FACTORY_DATA_USE_DEFAULT_CERTS + bool "Use pre-generated development certificates" + help + Use pre-generated certificate files from the credentials/development/attestation/ + directory that match the configured Product ID. This can be used for development + purpose. + config CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED + bool "Auto-generate certificates" + help + Generate new certificates instead of using pre-generated ones. + The certificates are generated on every build. + config CHIP_FACTORY_DATA_CERT_SOURCE_USER + bool "Use user-provided certificate files" + help + Use user-provided certificate files. + The user needs to specify the absolute path to all necessary files. +endchoice + +if CHIP_FACTORY_DATA_CERT_SOURCE_USER + +config CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT + string "Path to the DAC certificate *.der-file" + help + Absolute path to the DAC certificate file in binary format. +config CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY + string "Path to the DAC private key *.der-file" help - Pre-generated certificates can be used for development purpose. - This config includes default pre-generated certificates - which are located in credentials/development/attestation/ directory - instead of generating new ones. - If this config is set to `n` new certificates will be generated. + Absolute path to the DAC keysfile in binary format. + Note that both public and private keys must be present (will be extracted automatically). +config CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT + string "Path to the PAI certificate *.der-file" + help + Absolute path pointing to the PAI certificate in binary format. +endif # Configs for SPAKE2 generation config CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER diff --git a/config/nrfconnect/chip-module/generate_factory_data.cmake b/config/nrfconnect/chip-module/generate_factory_data.cmake index 2888822efcaea3..be0c4c0fac692c 100644 --- a/config/nrfconnect/chip-module/generate_factory_data.cmake +++ b/config/nrfconnect/chip-module/generate_factory_data.cmake @@ -69,6 +69,10 @@ if(CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS) string(APPEND script_args "--dac_cert \"${CHIP_ROOT}/credentials/development/attestation/Matter-Development-DAC-${raw_pid_upper}-Cert.der\"\n") string(APPEND script_args "--dac_key \"${CHIP_ROOT}/credentials/development/attestation/Matter-Development-DAC-${raw_pid_upper}-Key.der\"\n") string(APPEND script_args "--pai_cert \"${CHIP_ROOT}/credentials/development/attestation/Matter-Development-PAI-noPID-Cert.der\"\n") +elseif(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER) + string(APPEND script_args "--dac_cert \"${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT}\"\n") + string(APPEND script_args "--dac_key \"${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY}\"\n") + string(APPEND script_args "--pai_cert \"${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT}\"\n") else() find_program(chip_cert_exe NAMES chip-cert REQUIRED) string(APPEND script_args "--gen_cd\n") From 48284ae115a0157b54c80c99c043253f965076bb Mon Sep 17 00:00:00 2001 From: pankore <86098180+pankore@users.noreply.github.com> Date: Fri, 6 Jan 2023 22:40:33 +0800 Subject: [PATCH 02/20] [Ameba] Update docker image (#24199) * Update Dockerfile * Update version --- integrations/docker/images/chip-build-ameba/Dockerfile | 2 +- integrations/docker/images/chip-build/version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/docker/images/chip-build-ameba/Dockerfile b/integrations/docker/images/chip-build-ameba/Dockerfile index 2a7f2b4574b65f..95fa65905b89e6 100644 --- a/integrations/docker/images/chip-build-ameba/Dockerfile +++ b/integrations/docker/images/chip-build-ameba/Dockerfile @@ -3,7 +3,7 @@ FROM connectedhomeip/chip-build:${VERSION} # Setup Ameba ARG AMEBA_DIR=/opt/ameba -ARG TAG_NAME=ameba_update_2022_11_25 +ARG TAG_NAME=ameba_update_2022_12_21 RUN set -x \ && apt-get update \ && mkdir ${AMEBA_DIR} \ diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 2c5730e10a8e14..121070f6e3a7f3 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.6.28 Version bump reason: Updating ZAP to v2023.01.05-nightly +0.6.29 Version bump reason: [Ameba] Update Docker image (fix bugs) From 451e602649b8b37ba6c9aab8ba5e30747293f778 Mon Sep 17 00:00:00 2001 From: Tennessee Carmel-Veilleux Date: Fri, 6 Jan 2023 10:55:30 -0500 Subject: [PATCH 03/20] Update PAAs in SDK from DCL mirror, Jan 6 2023 (#24305) Problem: - New PAAs were added, both in Main Net and Test Net, since last mirror - These were missing from the SDK Description of change: Ran the following from SDK root ``` pip install click_option_group # somehow missing from cd credentials/development python ../fetch-paa-certs-from-dcl.py --use-test-net-http cd ../production python ../fetch-paa-certs-from-dcl.py --use-main-net-http ``` Testing done: - Validate that expected new PAAs from web UI are present Co-authored-by: Tennessee Carmel-Veilleux --- ...d_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.der | Bin 0 -> 458 bytes ...d_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.pem | 12 ++++++++++++ ...irror_CN_Heiman_Matter_Test_PAA_vid_0x120B.der | Bin 0 -> 464 bytes ...irror_CN_Heiman_Matter_Test_PAA_vid_0x120B.pem | 12 ++++++++++++ ...Development_PAA_With_VID_0x1351_vid_0x1351.der | Bin 0 -> 508 bytes ...Development_PAA_With_VID_0x1351_vid_0x1351.pem | 13 +++++++++++++ ..._mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.der | Bin 0 -> 461 bytes ..._mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.pem | 12 ++++++++++++ .../dcld_mirror_CN_PV_Test_PAA_vid_0x1381.der | Bin 0 -> 444 bytes .../dcld_mirror_CN_PV_Test_PAA_vid_0x1381.pem | 12 ++++++++++++ .../dcld_mirror_CN_Pankore_Matter_Test_PAA.der | Bin 0 -> 423 bytes .../dcld_mirror_CN_Pankore_Matter_Test_PAA.pem | 11 +++++++++++ ...cld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.der | Bin 0 -> 452 bytes ...cld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.pem | 12 ++++++++++++ ..._mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.der | Bin 0 -> 458 bytes ..._mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.pem | 12 ++++++++++++ ..._mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.der | Bin 0 -> 461 bytes ..._mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.pem | 12 ++++++++++++ ...elink_Matter_Development_PAA_01_vid_0x1141.der | Bin 0 -> 483 bytes ...elink_Matter_Development_PAA_01_vid_0x1141.pem | 13 +++++++++++++ .../dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der | Bin 0 -> 448 bytes .../dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem | 13 +++++++++++++ ...scent_Matter_Development_PAA_01_vid_0x1400.der | Bin 0 -> 484 bytes ...scent_Matter_Development_PAA_01_vid_0x1400.pem | 13 +++++++++++++ .../dcld_mirror_CN_ACK_PAA_vid_0x137A.der | Bin 0 -> 440 bytes .../dcld_mirror_CN_ACK_PAA_vid_0x137A.pem | 12 ++++++++++++ .../dcld_mirror_CN_Basics_PAA_vid_0x137B.der | Bin 0 -> 446 bytes .../dcld_mirror_CN_Basics_PAA_vid_0x137B.pem | 12 ++++++++++++ ..._Matter_PAA_O_Espressif_Systems_vid_0x131B.der | Bin 0 -> 524 bytes ..._Matter_PAA_O_Espressif_Systems_vid_0x131B.pem | 13 +++++++++++++ .../dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.der | Bin 0 -> 451 bytes .../dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.pem | 12 ++++++++++++ ..._mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.der | Bin 0 -> 465 bytes ..._mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.pem | 12 ++++++++++++ ...ror_CN_Legrand_Group_Matter_PAA_vid_0x1021.der | Bin 0 -> 480 bytes ...ror_CN_Legrand_Group_Matter_PAA_vid_0x1021.pem | 12 ++++++++++++ .../dcld_mirror_CN_Leviton_PAA_vid_0x109B.der | Bin 0 -> 442 bytes .../dcld_mirror_CN_Leviton_PAA_vid_0x109B.pem | 12 ++++++++++++ ...AA_1_O_ubisys_technologies_GmbH_vid_0x10F2.der | Bin 0 -> 523 bytes ...AA_1_O_ubisys_technologies_GmbH_vid_0x10F2.pem | 13 +++++++++++++ ..._mirror_CN_Matter_Signify_PAA_1_vid_0x100B.der | Bin 0 -> 433 bytes ..._mirror_CN_Matter_Signify_PAA_1_vid_0x100B.pem | 12 ++++++++++++ ...cld_mirror_CN_Meross_Matter_PAA_vid_0x1345.der | Bin 0 -> 453 bytes ...cld_mirror_CN_Meross_Matter_PAA_vid_0x1345.pem | 12 ++++++++++++ ..._Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.der | Bin 0 -> 482 bytes ..._Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.pem | 13 +++++++++++++ .../dcld_mirror_CN_Prime_PAA_vid_0x1381.der | Bin 0 -> 444 bytes .../dcld_mirror_CN_Prime_PAA_vid_0x1381.pem | 12 ++++++++++++ ...ld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.der | Bin 0 -> 428 bytes ...ld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.pem | 11 +++++++++++ .../dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.der | Bin 0 -> 451 bytes .../dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.pem | 12 ++++++++++++ .../dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der | Bin 0 -> 448 bytes .../dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem | 12 ++++++++++++ ...XP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.der | Bin 0 -> 558 bytes ...XP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.pem | 14 ++++++++++++++ 56 files changed, 343 insertions(+) create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.der create mode 100644 credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem create mode 100644 credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.der create mode 100644 credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.pem diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.der b/credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.der new file mode 100644 index 0000000000000000000000000000000000000000..ab43a33ac40d22e00c49f5109632b27990415787 GIT binary patch literal 458 zcmXqLVmxNh#F(>ynTe5!iNnyLr$cGp$y5U_HV&;ek8`#x%uEI*hB5|HY|No7%sj%b z!2t@si6teeMG66qjtV8I#U+L!210CH+H8z0j7^Jbm>79j42=z)3>3t9jSLOUj4TXI zjEqf;qa^q(fxytn7>GBbgc5nVlF|OxDya4$9yD?w<4U zVqGcms|$`w_jtI?|cB4V{=la9_ zi~oO{u{g~j1?Uy#P+4I{#{VoF25dlziILHO4E8$LxJ6A&2no5A Id}Q4N0L*TWxc~qF literal 0 HcmV?d00001 diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.pem new file mode 100644 index 00000000000000..3be0a6dcc30a38 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBxjCCAWygAwIBAgIIMUCMiCKeyWUwCgYIKoZIzj0EAwIwNDEcMBoGA1UEAwwT +RVNQIE1hdHRlciBQQUEgdGVzdDEUMBIGCisGAQQBgqJ8AgEMBDEzMUIwIBcNMjEw +NjI4MTQyMzQzWhgPOTk5OTEyMzEyMzU5NTlaMDQxHDAaBgNVBAMME0VTUCBNYXR0 +ZXIgUEFBIHRlc3QxFDASBgorBgEEAYKifAIBDAQxMzFCMFkwEwYHKoZIzj0CAQYI +KoZIzj0DAQcDQgAENKx8o1Jvt+7eQ8dzLRoX1aDGOKLVskUvXlDvsIKflsN81Szm +RvBz9g/ngVOM/YphlMQSmJbYgCX5r8OPo//2mKNmMGQwEgYDVR0TAQH/BAgwBgEB +/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBBXiQ7CHOd7WlZhCcoLOera +CCdxMB8GA1UdIwQYMBaAFBBXiQ7CHOd7WlZhCcoLOeraCCdxMAoGCCqGSM49BAMC +A0gAMEUCIQCKtY04p5Cw0f/Dx4+lsawvVtVRj8crBpN7MIO9CPY02wIgdPICa/zE +5VQbBubw19Epj4Ib+8DcRlqRYFRU0mPEruA= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.der new file mode 100644 index 0000000000000000000000000000000000000000..d8b27845f7f7f473cfd76e96b85458c3c05a724d GIT binary patch literal 464 zcmXqLVmxEe#8|X|nTe5!i6icsUD5@$?|lYbY#dr`9_MUXn3)XB4do4F*_cCFn0drJ zQZsWC^Avm&OG;9U6hcyqOB4be9SubcgxI*W*%(J29}_DxEOwVmJAE$L{y zeUS;vsjiU4X$C1k-!O;D3NtePXW=kl15!+kj0SulF@BI3Fi;rTz(FF*$0EieBGr9; zJ2&427Gsx70#2qOZkoqkGY#ZH%9U9p48$6+D?kcjW)B7fS0)9Yh&d`aOb$2$Ieu~iXYX=`};jop8vwu&!%_dU?wq<`{m Kl7{_xy>b93jEwF8 literal 0 HcmV?d00001 diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.pem new file mode 100644 index 00000000000000..82397ca822460f --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBzDCCAXKgAwIBAgIIXtY+YtAm944wCgYIKoZIzj0EAwIwNzEfMB0GA1UEAwwW +SGVpbWFuIE1hdHRlciBUZXN0IFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEyMEIwIBcN +MjEwNjI4MTQyMzQzWhgPOTk5OTEyMzEyMzU5NTlaMDcxHzAdBgNVBAMMFkhlaW1h +biBNYXR0ZXIgVGVzdCBQQUExFDASBgorBgEEAYKifAIBDAQxMjBCMFkwEwYHKoZI +zj0CAQYIKoZIzj0DAQcDQgAE3giOwaFlfhbRss7S+v70G1rQc6UdkSJk3u02DxuW +j3kXzq59tH8c3jA6NM7gOWe3sl6Gz7aLGUEzt6I0BMqKVKNmMGQwEgYDVR0TAQH/ +BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBqL17cLDtAEM0TS +EEI1VEYpx0VpMB8GA1UdIwQYMBaAFBqL17cLDtAEM0TSEEI1VEYpx0VpMAoGCCqG +SM49BAMCA0gAMEUCIExYnMl3qsXwJN1nCAC1D+D3i+L6NMOf0kJiLDHG6OUHAiEA +xoj89D0kF6k9McvsPv8yhnj0vb7gK7Ivyd1iKD/PLnc= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.der b/credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.der new file mode 100644 index 0000000000000000000000000000000000000000..bc2efdaa0768bf0d98889205e2af737397867900 GIT binary patch literal 508 zcmXqLV*Fvy#5ivOGZP~d69=2`Zl;5-7j_$Pv2kd%d7QIlVP-P$Gc+?WVPg(uVdl~G z$j=YT%vA7AEGbDXQgBHvOU=nI$W6^FQ3!B!R0z*3$xsOMbWt#HINhMH8Lo-f;&!1d4|LjS>?GF^E{kOZ_<-L3TuYDClog2*- z+RXDf$-G^aw{ec0|G`^E)Bk$qJ1kB!NCA40IaF4dk?}tZhXEUqVq#=8-~);AgT#OV z$jD|O3*z&!h_Q%VSQQ++a`qqg{BkW{k(B1E8~cvr7|4U9m02VV#2T$Tc|9K$wjk>^de!s56-v*_oXfSPrNbu!pVQ(JW*& z$$HAFi}PonUC&)qZxNUvV7V&7@cZI7MLoL&LX}n+T#kOpv}J8ysIlPY^G6RmR7T9W zCc?SSU~!s33eYdip|Zk^jQ?3U4A_7a6C literal 0 HcmV?d00001 diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.pem new file mode 100644 index 00000000000000..00f4f71eb4daad --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIByTCCAW6gAwIBAgIIVeghUiXWLnIwCgYIKoZIzj0EAwIwNTEdMBsGA1UEAwwU +S2FzYSBNYXR0ZXIgVGVzdCBQQUExFDASBgorBgEEAYKifAIBDAQxMzkxMCAXDTIy +MTEwMzE0MjM0M1oYDzk5OTkxMjMxMjM1OTU5WjA1MR0wGwYDVQQDDBRLYXNhIE1h +dHRlciBUZXN0IFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEzOTEwWTATBgcqhkjOPQIB +BggqhkjOPQMBBwNCAATAJXAHVqu4gxI6kjuUqtGfm82vC3J/OFFgEDmqWDH3o+xy +jLoQVSKoMNNb6QK0rY5VMxGzz8XDQHlYmNYUCa4wo2YwZDASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUFCV19rUO5+aWJqjFu9+D +ivU1R94wHwYDVR0jBBgwFoAUFCV19rUO5+aWJqjFu9+DivU1R94wCgYIKoZIzj0E +AwIDSQAwRgIhAJt239EX0sb/Iq4k8tUhuU8Z7K8yPmuopqPTSnO2x4K/AiEAwDn9 +Dodh5Mj1cX9xLGNoUKad82M6m1lxq+Gzp2PFuGQ= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.der b/credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.der new file mode 100644 index 0000000000000000000000000000000000000000..bafcf483f1d72ac63230c5f586e31cc2a23d6c11 GIT binary patch literal 444 zcmXqLV%%ZS#2CMTnTe5!Ng!^nJ&(aW)u=q>5NZ9Hm)#Ax*f_M>JkHs&Ff$qG7>XDO zu`!3TF!OK+geioi7MCalI68twxwP3BSs0rZ)i5#guoxO!7#hfl^BNf$8X6cI7yz+F z6p(8S=7NMQqDV9?(m;y9 zc|$5LAJ$Uxbnp!gvis)Ul-=WJI_-=6wa7D-J3G!bUjI?WUb*Mzqbl9COBW{_BpUDo zy(KHm$oQXy)qojD8OVYJ_*lePM6^oh$5yE-t~=R3&FFZY$wcn|BGv|cAZdP(dSJjX zwi(ES_{uC224W4^H6Vo}vpa)<3zLFw^9i*|!>%dUK0V^t5ISA__|3b?(**8(NtoQ> sZD^G@Ll0VfT(*f_M>JkHs&Ff$n_87dgau`!3TF!P89 zB<5x37o{rrCYF?>7Ab_J7MCalI64|Ai1Qj58JHUy7@8Ovn;1t)@LK|bp^-5VnOd4! zMiFI7q=7ISJJ?<(MyLar8QGbg7+5SaZhqxaX%eaR`FJ_ZetOBX>TkXE3U*ovceq8l z9E+YC1mzmtlq}eCHOtC>^TFk_dgmsGYy2<%$!@SqSD`XEY;l@Fih&T&6SBgLjQ?3U z4A_7a6CbmHI8@QzpUfH|T^x`b@>uW-fytp975F({> o0I1~3?t00GKNY9`5CvW27LoAHV&;ek8`#x%uEJGhEfI+Y|No7%shg@ zj$w{|Aqu{UB_*jv3IUFeh9U++Y+TxGj4X^zi)xq{c~}gMjV%r2#CeU33=NG93{8!U zO^l<&c});pqbRb>j5H8tV+Xs6i4p2NW=3{qCkB?;r&)ITEIcD9@;a_|)dlVB*7Y{c zd*im;b$YgBN$-MNoWI(|^{1J<>Btpe%}ai<vwKo-R3V-aH!>A&&2_E1$dW6cHm*j)nN z$KG7eQ#FtWNh`BR7>G4sSAZ0(%pME|u1tyylLKWoTFUYX{1zxneOynTe5!i9^8P*PF7Cg=-DC*f_M>JkHs&Ff$pL8p;|-voVLVF!P86 zd%C*2`guAkgrpXidP-ikTvNJm|u*8es%DcNyMUGAD z^7a@*zxV%auXoE&cz)8(jmdM8Na*%#*QFQtWyBshDLQpsf=T@)#V*$OySANvcx3Xg z1ryGSO<$a5kOK4zbEvE^BjbM-4g)qI#l*;Hzy}iJ2Z;d#gptia7R2Xc5n~a_n^E~>?vH;rsK4&G z6T7GKkkFg*sSeqi7v|qQl5?6rU^h_7o(G!zdk!)APGiuWwD@*#E)SD(x73N1CEQ;c Kiq2g7rV9X=H;?H6 literal 0 HcmV?d00001 diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.pem new file mode 100644 index 00000000000000..736e6e591e57a5 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIByTCCAW6gAwIBAgIIBzWL4hqQMr0wCgYIKoZIzj0EAwIwNTEdMBsGA1UEAwwU +VGFwbyBNYXR0ZXIgVGVzdCBQQUExFDASBgorBgEEAYKifAIBDAQxMzkyMCAXDTIy +MTEwMzE0MjM0M1oYDzk5OTkxMjMxMjM1OTU5WjA1MR0wGwYDVQQDDBRUYXBvIE1h +dHRlciBUZXN0IFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEzOTIwWTATBgcqhkjOPQIB +BggqhkjOPQMBBwNCAARfF9pu3b4kHgYq07dcMU7v/j3Xix+Q58k+RgJJkhRVt2tF +pdG+aF3AyRWVrmA0f9IhigXvurbL4cST+qCQzRaXo2YwZDASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUbpFwxVcelv0hRKGyfJmr +EsNT6T8wHwYDVR0jBBgwFoAUbpFwxVcelv0hRKGyfJmrEsNT6T8wCgYIKoZIzj0E +AwIDSQAwRgIhAPmt76S78f2wJ+uI3F28ecIS7HeVQGsp0J/ZxGzLD1C7AiEAvOAp +D7zCAk2WAC2So9tTbQwCI4sayKl0C/SAcszW9i0= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.der new file mode 100644 index 0000000000000000000000000000000000000000..c11e4f5b9ff36abad0e3481db6305bd0108889da GIT binary patch literal 483 zcmXqLV!UtA#MrWcnTe5!i9;m$kq@iyadiVOHV&;ek8`#x%uEK3hMETIY|No7%sdJq zsX3W>*$TdiB_*jv3NEQ-sX6%txv6<23IUFe3I>LTA_hWiT-t1mER0QyYM2;#SPTtK z3=QPOd5w$=fxrN$#K^3Dss(Onc|{a0tvr(pTBKJmdX`I7#JiV3|iGs>NO z=(Uyc+gSI-X$C1kUonTu3NtePXW=kl15!+kj0SulF@BI3FqjzG3}iukJ{B<+k-QIo zmnVNniQcjP-s;YvUNvRDxJCnckhC(3gn?KCb_Ga*&g{ux;KroLuqV8yD_hga=9M~+ zh}fI{o@0Xct3y`Esl4AeUvC-P^lv~VvsXUZdu3m()^UlXTCHAn_2|&z*SpgrrW9xY K`}yC{`56Ek`IQ#{ literal 0 HcmV?d00001 diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.pem new file mode 100644 index 00000000000000..6b42872c13c3c3 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB3zCCAYSgAwIBAgIIFGPiTAVNxycwCgYIKoZIzj0EAwIwQTEpMCcGA1UEAwwg +VGVsaW5rIE1hdHRlciBEZXZlbG9wbWVudCBQQUEgMDExFDASBgorBgEEAYKifAIB +DAQxMTQxMB4XDTIyMTExMTAwMTEyMloXDTQyMTExMTAwMTEyMVowQTEpMCcGA1UE +AwwgVGVsaW5rIE1hdHRlciBEZXZlbG9wbWVudCBQQUEgMDExFDASBgorBgEEAYKi +fAIBDAQxMTQxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOO5hm5qgrjD2i0pF +bhHATvoezhm28q2H3eQNDZ5T2ItyUjv9LKLyUx/NTF9T6Q5i/1UWEug2Mm2Twus6 +M+1dR6NmMGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFG7w/adj8GRbuK/eq4lSjSYjDl6BMB8GA1UdIwQYMBaAFG7w/adj8GRb +uK/eq4lSjSYjDl6BMAoGCCqGSM49BAMCA0kAMEYCIQC8V4yKaylCPOonDBQW7I+M +xhE/q1SoHiTvvp8upgaX9gIhAJup5L3Uvn0qxxhifSqNJydbVXPru2dYlHNr/vn/ +MUPm +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der new file mode 100644 index 0000000000000000000000000000000000000000..22faa441566ad7a71ee19783cc7ed201013d34f6 GIT binary patch literal 448 zcmXqLV%%fU#F(^znTe5!iH)%(oNr#70T&yGR-4B;TNY*}0|P?|12Hz{P!?t${*cnj zLJrrY;5w;=D#ihK2?fhK434CT39* z{FXpqXk-jTrk19bQDm4IX&}tT4t5h0Bh+!sjO@%#3@j``1`EE$o)XB7nX=$akou=X zn@zMYuGsH(d{@tUo%5y-gTo>r*dU2ykm*|+G!PbMu+ zGe`k?gE>@In33^63x@$4kYZwFG>`|0DYF25-ymWd9<+G5LWFU-+^>C0jna8GY?kFT zkOe8=V-aJ)F3ks$<_DPx3`Rya7SiD7G3`Hxk_$- zT4>M*tsk6uPtR&FDKdO6=fuW&@fe;&)HX9=gW7DDLlXl7 z137VCBO^lt12aPtBV!ZeC~;mB1lK5vDt1H~2(z(+UCqP@bv`pAJF^o5%V%k2%MFgV zTsB(yKa!s(u;}uug0w3&>VYrMF5D3>;&|&0%hmY9&hMCbk4%)G=dgKMe?$Ot)60D2 zc8jfTx|wl;i_;8JfZk#bl@(@W{LjK+zy_q47#R)tKw|tLF1_M_nMTRFyQ_Boa9<)tj zRDa5|bBgRv`RNKv-pDfrO-pi+7iRZiQt)}ayD;{B;h)shC)R!zyi<;s2rtO#XB3^Z LuVl5Cx_&kQ!84F+ literal 0 HcmV?d00001 diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.pem new file mode 100644 index 00000000000000..ae836bb4621609 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB4DCCAYagAwIBAgIIO4ZtViQ5ep8wCgYIKoZIzj0EAwIwQjEqMCgGA1UEAwwh +VWFzY2VudCBNYXR0ZXIgRGV2ZWxvcG1lbnQgUEFBIDAxMRQwEgYKKwYBBAGConwC +AQwEMTQwMDAeFw0yMjEwMDYxNDIzNDNaFw00MjEwMDYxNDIzNDJaMEIxKjAoBgNV +BAMMIVVhc2NlbnQgTWF0dGVyIERldmVsb3BtZW50IFBBQSAwMTEUMBIGCisGAQQB +gqJ8AgEMBDE0MDAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATzGyM5sEHaRLE6 +T+IfnhCi0+pwZtR8J1HpzaG4XxRB2twE1V/DQ+4CDcSRH55As6aPWFADgulvI4c4 +tYYtaV4Ro2YwZDASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQUzLmToS7mhedy2PMxMxJS9mxDM7EwHwYDVR0jBBgwFoAUzLmToS7m +hedy2PMxMxJS9mxDM7EwCgYIKoZIzj0EAwIDSAAwRQIhAORilXYwycE9YgEn5Qy5 +lB25H5cgpOwfAlKWYkAfEwdMAiBM47txXe9x/GVl5DtOOA2Ux3QToGyPARWSvnSr +Sicvaw== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.der b/credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.der new file mode 100644 index 0000000000000000000000000000000000000000..a5d8af96d4fb1928ce39f43332a3a7ee6dd1b14f GIT binary patch literal 440 zcmXqLV%%cT#2B@JnTe5!NswXX(*2)PB99%JVXs<0_ksE$11>fWtu~Kywk*s{1{#I} z27GMHp)AZi?2gXf3IUFeh9U++Y+TxGj4X^zi)xq{c~}gM%^eLC#CeU341vhd+{nVn zB1(cE!ZR{A1ag4_B$yRxAk4-Nb^{Y5)G^GA?95IKEVEl}48!O8&j_7j@{Z^2*J*|9 zkvp#4eBE8QN*txqO11wqs&pe#QP^fy@G--xL xW1xwXw8Tr#cqWB}j6Lt}F%0|jwjBO^l~GBh_f zH?@e8;D_*x%ndET0;CxiX&}tT4t5C>Bh*REjO@%#3@po+u4wQUmgN1lfV)bfI$nB$ z>`vPxk6%XCMxUn5liKzpCN@K+Cph?**WXnO1Qv8TS3VF{RJolvmxcS|#9-2yk>XlroS2NptZCBBX;Wi%U{-iw#8#gxI*W z*%(SDm>8knV`gM$c4A=ZUdA2T%8`DqIQjF;ZO3;O9r_h?BlfF&N8hy4{w0n2+R|rt zyuIVq7Q(*a+7yw=Rv%^?iZ5$@FwwEwQ);f4oPW{cG=mhNKbb>ig&7(Dvv3%&0VyU% zMgw_}m@9>C(%}tw%#AymwXKvw2tH0|Qx*0zMWo7VOe|AZdP(nZSr( zY(tI~W)B7fS0+VXrLg@Yh+|-Xkct;Vq|P$ z93{bT2?T~l#z16hX=)iohMAED!ffndH!(3n9mmYb&g{g%63%=qkmK*sH97CR)-xXE zy!CVSr#F0l??3wgs$Sr;qkI9oqQczOm*4QRt~hu9-VR5x%~n(X+^NuBxMmN7*MXZw zT#M5TQh?rI4wV&VWc<&3xi_&{R(ATeMtFtQoQg7|zaVk{!2>E|OWzeO!d zX!!E+WYpTc&cM0)2J#?jWfovyHDFhO6sXLe3g_%dh$JN!vF(}yIPuJHmB*ZmHH^9-+P{crpjZ2%2k%h5oQ4JF#4~wCpnT3IZ zIIoeBp`n2V5So}8L`m=)nL-6D!2;wO9BClT#twEJ6C>1_%#7^JP7ExEZOiAW3v)09 zJWp!R`V{afd&QZo8ZN16b2T*T?B1mQwE0lD{no^i!kfnr`2K!SI)00;(FST9L z6aL1S=J;@NvO%H&KhUeP!i$Ua-+&bmuW)+hZjPEA~p9hhR? HAu9p^g1?Xp literal 0 HcmV?d00001 diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.pem new file mode 100644 index 00000000000000..e7dfdb13a33b12 --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBzTCCAXOgAwIBAgIQJVXK8CXBFQX15w1K3uF2UDAKBggqhkjOPQQDAjA1MR0w +GwYDVQQDDBRMRUVEQVJTT04tTUFUVEVSLVBBQTEUMBIGCisGAQQBgqJ8AgEMBDEx +NjgwIBcNMjIxMTA4MDgwNDUwWhgPMjUyMjExMDgwOTA0NTBaMDUxHTAbBgNVBAMM +FExFRURBUlNPTi1NQVRURVItUEFBMRQwEgYKKwYBBAGConwCAQwEMTE2ODBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABMM9d54nEwgCUOdih2ryUPJrqMxqfAoalp0o +KH4+7GX5PPBxt9qRdHHZx8BN++vNXnrQguTq6dKG0i4T9gFmQeGjYzBhMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFHKmOjFumjyuFSmc/46Mx/qzh9GFMA4GA1Ud +DwEB/wQEAwIBhjAfBgNVHSMEGDAWgBRypjoxbpo8rhUpnP+OjMf6s4fRhTAKBggq +hkjOPQQDAgNIADBFAiEAvuDxdzYT3mtHhACHOebgtZXkmhBTnWsuXhWg8UZslJ8C +IAoeQhjElDIVP8gUvj0ziX7SpK9i/DNlYaBrUWQ3iB0U +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.der new file mode 100644 index 0000000000000000000000000000000000000000..e8b9ed7e981c09a6d4ae31459541cb0d07050e95 GIT binary patch literal 480 zcmXqLV!UI}#MrcenTe5!NhDnLO@M#if!D@&lZ?5!l1~f1+$m+i#m1r4=5fxJg_+5~ z(ooSro{c$_g_%dfCpEn&F)u~Iy(qu5K*2Y$q$IUSA;8hmP{crpjZ2%2k%h5oQ4JF# z4~wCJk)eTtIIj_qGBh-_FfleVj*{RvGBCF^Ff%YUGB&j|wTz;~@JIt;Hg>QpnHZtY zWoBe&c4A<;6aS&>s;^5=O2gI}?_Zie)K{07*!?muEt%=$W#hbtSmoB4CsAEHUn7@pN~b1MWk=)#sk{~0w>>g+?M^`*-yt}QB}Hu zJV;uZMZ!R=0lNaEz-0DdFmPp3Fv?pJIVrVr)AyRG#t#EECG?`_$!DDH6>OE`pQLwb r%`7HGh7+C>{5_RciJnh--^}6HG9^0uYHr>Jiv+zh>y{p>ez+9?6oP?r literal 0 HcmV?d00001 diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.pem new file mode 100644 index 00000000000000..a3803141bd598a --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVygAwIBAgIIBP4h4RYCMRAwCgYIKoZIzj0EAwIwLDEUMBIGA1UEAwwL +TGV2aXRvbiBQQUExFDASBgorBgEEAYKifAIBDAQxMDlCMCAXDTIwMTIwMTEyMDAw +MFoYDzIwNzIwMzIwMTE1OTU5WjAsMRQwEgYDVQQDDAtMZXZpdG9uIFBBQTEUMBIG +CisGAQQBgqJ8AgEMBDEwOUIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ9Qd9T +8JmqN8a5wH/sdf8JY34NsPOTuroJPTKE+1MyxioXHgnCQXxReVbwPoFqjjC/BoAM +KSQETnG99up9mZ9vo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQUjpWxwLYQUZPbQbZr70NOLDiiemcwHwYDVR0jBBgwFoAU +jpWxwLYQUZPbQbZr70NOLDiiemcwCgYIKoZIzj0EAwIDSAAwRQIgMm6kWZJlebL3 +fJUz4VEpGC5bnh9ozY0RhR4Pki7SrJoCIQDISZBPSSKqFc9i74MIToSUW2vVbW6w +OGAuzK6lwnvhtQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.der new file mode 100644 index 0000000000000000000000000000000000000000..70bd97aef43fff8de31d2e897d42e326e56fa044 GIT binary patch literal 523 zcmXqLVq!OFVqCX?nTe5!Nx-j^N94hSXV#hgoqMagL+=`Jv2kd%d7QIlVP-N2G*mQ@ zXJZa!;o^}fP0B2;ELJE ztTKy)fmj1}1xV4t?9O1|!ldA=`p4tTGLy#^xBFKIyn8%dQf=b0ptVZ_=Y4K{aXvM4 pJ(B{Ha@M_@?}C|Mm2nCOsiA~aCB5KG!!uqV&l?gV`O1$T2#Zt$irf2VBln+ zAkJ%KWN2hyZfIg)Y-kuI!EXr!hDOFfWNK+@8AYzakp{wS>|ob1F+!cm%*f8{#K4kn zm-L(Q%-a~LA3-8AyO)^>)Eu(ioTheX^ZtlrS*{4P|0#D)PVEw2z-l$;;ZcoKYV6CE zxL59}S6;8Aau916IH8izV zR34aB-}k1gqwc!_A4r-Xq#hVpjBUt4$Lzsi;L4<6zATUR`V-mHDLXc(KXN-}{CM96 zSM>@`(}I`}nq1x&XEG@=Y?{=`&R#@X!n`&%Em7vGGy?VYuSckjNO^ur!o3fBrW=Cb!$+~(!d zUYur-0`v%TsH`v}<9`+o12!PV#K>sC2NL54i2;LxkE;bIWHji_*EX+&>_J-;Ps%*@mEX+J| zzL_bhi3;vT`K1L4zKJCzsYMC_j*bfMh6({i`6-4X210CH+H8z0j7^Jbm>7jw3=J)u z4HU$Ajf@Npj13LV41gd?g5MGd42_I|$kfu*GKz95A`OJu*ugGlVuU)KnUS5@iGgK_ zsN8+;!uzG~4A;F~F6?^Nq2eKH(dBdAlIaf5_{3*?;rOKBS#X}|$oi$i1&2bvZ2GKm zqrG;sl$t@nGxut*$6AZi3{rr;Vh)uRW@P-&!ePJ$q?i~P4fsG}{2(!4AThET$b$HM zEMhDoE90IYDXLFNUaINg5X$pneNw!kpn*I{TA4+{K&%0~0;C{k_GB<{V^U;T%@Fge zbMlT~;qR`LH&sttw@__U^r>l`9y%r5Z63@1T?8s=2z*@fMunwgzM6&N4d={;4YNa- RK5*Ri6c_n?-1Xbr`v5yQk)i+q literal 0 HcmV?d00001 diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.pem new file mode 100644 index 00000000000000..319501a70be056 --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB3jCCAYOgAwIBAgIJHNpcgyVSU4SYMAoGCCqGSM49BAMCMD8xJzAlBgNVBAMM +Hk1pZGVhIEdyb3VwIE1hdHRlciBQQUEgRzEgUHJvZDEUMBIGCisGAQQBgqJ8AgET +BDExOEMwIBcNMjIxMDMxMTYwMDAwWhgPOTk5OTEyMzEyMzU5NTlaMD8xJzAlBgNV +BAMMHk1pZGVhIEdyb3VwIE1hdHRlciBQQUEgRzEgUHJvZDEUMBIGCisGAQQBgqJ8 +AgETBDExOEMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASkFR7fS3Hfde4xru2n +E0XNQHjhBXLTzksZZ0DmDheY9AjyIElwzwLEr6UTcMJV9LLzKNiHfbMaJjBQ5kd7 +SuMqo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUqV7nxHJ/ZGOlKUhAVQzor2JfMREwHwYDVR0jBBgwFoAUqV7nxHJ/ZGOl +KUhAVQzor2JfMREwCgYIKoZIzj0EAwIDSQAwRgIhAKsAXPqJk7j6V+7Ud4J7lq6h +JrJbypaJSCx0C4ZIpv7RAiEAgFHjdOwkBIifJjgh2ENpgLCbVALwCN1JFxTzx0X2 +7d8= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.der new file mode 100644 index 0000000000000000000000000000000000000000..e170a9d793a6c7849a3aea8992a2dfc7552969da GIT binary patch literal 444 zcmXqLV%%ZS#2B}LnTe5!Ns!@J&Gv$8mlnmhFPL%pi^JP>23%|$T5TTZY+0C@473b| z3+a3cGTF@LaYj9QJ|p|1e`<@9 z4H6Cbfu52TW@P-&!fL<_qzq(10(>lDEF#Z$PTW0b-i5^Fr)PicNbwR)KIEruzz34% z2dM`J3uBvsJczH%B4HrbfL#MpC^CC67`QSiGW@NapZ!oXw32sM+J)j7zUog6lr-0L zi%nIDGMlsYYTG0xg+gyvvzaolj!ZdeWF4{PwdjK{%k3D{x_=Zci&Opdy~!H@7g~(~ literal 0 HcmV?d00001 diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.pem new file mode 100644 index 00000000000000..23e245be88394f --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBuDCCAV6gAwIBAgIRAPp8t3DW0qJfh6CY0/RA7a4wCgYIKoZIzj0EAwIwKjES +MBAGA1UEAwwJUHJpbWUgUEFBMRQwEgYKKwYBBAGConwCAQwEMTM4MTAgFw0yMjEy +MjExNzExNDdaGA8yMTIyMTEyNzE4MTE0N1owKjESMBAGA1UEAwwJUHJpbWUgUEFB +MRQwEgYKKwYBBAGConwCAQwEMTM4MTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDJJ3y8N0AoGu1DvdNqz/zjyV/jhrkwb8jRhJw7ZwhutsZFCsHzZWz1lQZpVcF7/ +rt6aKjSzBkjMJ1ufAQfi/iajYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FOe5kbucntBhp8ub8YhkShVjwk4rMA4GA1UdDwEB/wQEAwIBhjAfBgNVHSMEGDAW +gBTnuZG7nJ7QYafLm/GIZEoVY8JOKzAKBggqhkjOPQQDAgNIADBFAiEA/Xmfa+Ep +VXkNumbQc5hNJ+UwIimsixaVJFo2nLXVhpICIHFLRTaZHOrElMkyO1i06xXg9Kc+ +ACaL+HKmXiXy94JL +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.der new file mode 100644 index 0000000000000000000000000000000000000000..63ce01d106293b13ba055e1d9f4c84e1c176f01b GIT binary patch literal 428 zcmXqLVq9U+#OSwxnTe5!Ngy-wW%%~mT?rLsxl)#rua+2av2kd%d7QIlVP-NgHk3Ay zWMd9xVdfDEPR&ctNlj7kO)M!%Em8<@bTkw(5MtxfW@BVwY+6*q#K^;9XlQ0&pdij` zWMpV$WMN=#Vqjt(CBbiGU$2FeBrC7FGjhAY~v665wMIV-exMdHkBbOtAmdul#{Q z{JR-Sw@#X1zz34%2dM`J6k{85urYfu7`QSi_}vkzTPD0osWWlI+euMmg-F8i1 zB)c#FotKFN&w3_BhC3gA?wR2c(A|2acFKvz#-B<)Tb|uR(FdIAAO-zhX$1yXqGdnS`{F{8TUL@I3+;*&mV+zW&UY#%G;jG6WczSxyjD@3{n>#3q5nTWVVFEgZN;jopFZtN zTAXH(0`vxRsH`v}<9`+o12!PV#K>sC2NL54i2;Lwk5Uq8zL E0Eg<44FCWD literal 0 HcmV?d00001 diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.pem new file mode 100644 index 00000000000000..cddbb0f87b3d6f --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBvzCCAWSgAwIBAgIIMDmv+XzHSXUwCgYIKoZIzj0EAwIwMDEYMBYGA1UEAwwP +VGFwbyBNYXR0ZXIgUEFBMRQwEgYKKwYBBAGConwCAQwEMTM5MjAgFw0yMjExMDMx +NDIzNDNaGA85OTk5MTIzMTIzNTk1OVowMDEYMBYGA1UEAwwPVGFwbyBNYXR0ZXIg +UEFBMRQwEgYKKwYBBAGConwCAQwEMTM5MjBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABP6TyX8UY0Ek1bLaOgy+QeaanXMpZdQq0+1thMGohs+JIWCDtPxSPeGVXypy +bj/NUP9V//PkAJOSJqiqlfLyvmKjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSfY7NblSSAQFIieWdx9lrYTbGASTAfBgNV +HSMEGDAWgBSfY7NblSSAQFIieWdx9lrYTbGASTAKBggqhkjOPQQDAgNJADBGAiEA +ks2c4NJXUs9L1pPrcDsYTaox01za4LD5CXmWjocq9+0CIQDRu+X2D3ETsRrygOaA ++oDhvKphxoCLsYMYENDG16+aMA== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der new file mode 100644 index 0000000000000000000000000000000000000000..22faa441566ad7a71ee19783cc7ed201013d34f6 GIT binary patch literal 448 zcmXqLV%%fU#F(^znTe5!iH)%(oNr#70T&yGR-4B;TNY*}0|P?|12Hz{P!?t${*cnj zLJrrY;5w;=D#ihK2?fhK434CT39* z{FXpqXk-jTrk19bQDm4IX&}tT4t5h0Bh+!sjO@%#3@j``1`EE$o)XB7nX=$akou=X zn@zMYuGsH(d{@tUo%5y-gTo>r*dU2ykm*|+G!PbMu+ zGe`k?gE>@In33^63x@$4kYZwFG>`|0DYF25-ymWd9<+G5LWFU-+^>C0jna8GY?kFT zkOe8=V-aJ)F3ks$<_DPx3`Rya7SiD7G3`Hxk_$- zT4>M*tsk6uPtR&FDKdO6W+w&~HR%g&JI`L0{c!q$_uXwp$3oW~*ZVD| z(Q@^L!~M-{t28p^PENUT=qX3Y8j%-!T%yF6Z!kYK!KdU&?{}&H(xwaa7pEDd7zhDF zK~|WN@jnZP0UMBFVq`Sn1Bvm2#DD?K$Yvl5;`6bHv4~8czC^#5Jzx27M}x0#lhaMx z>xF*}sdQgMllPf`-BhmWv0yW_`XS?e}=et;eEubzfvI2kpG^ xbIysaaaxa=6d9JS{*`{ Date: Fri, 6 Jan 2023 12:07:34 -0500 Subject: [PATCH 04/20] Align naming in Diagnostic Logs cluster XML with the spec. (#24266) * Align naming in Diagnostic Logs cluster XML with the spec. * Regenerate generated files. --- .../log-source-common/log-source-app.matter | 4 +- .../diagnostic-logs-server.cpp | 6 +-- .../chip/diagnostic-logs-cluster.xml | 14 +++---- .../data_model/controller-clusters.matter | 4 +- .../zap-generated/CHIPInvokeCallbacks.cpp | 40 +++++++++---------- .../chip/devicecontroller/ChipClusters.java | 2 +- .../devicecontroller/ClusterInfoMapping.java | 22 +++++----- .../python/chip/clusters/Objects.py | 8 ++-- .../CHIP/templates/availability.yaml | 12 ++++++ .../CHIP/zap-generated/MTRCallbackBridge.mm | 4 +- .../zap-generated/MTRCommandPayloadsObjc.h | 13 +++++- .../zap-generated/MTRCommandPayloadsObjc.mm | 37 +++++++++++++---- .../app-common/zap-generated/callback.h | 4 +- .../zap-generated/cluster-objects.cpp | 12 +++--- .../zap-generated/cluster-objects.h | 12 +++--- .../cluster/logging/DataModelLogger.cpp | 4 +- 16 files changed, 122 insertions(+), 76 deletions(-) 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 e00f69ca61edc0..543964d22f8683 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 @@ -300,8 +300,8 @@ server cluster DiagnosticLogs = 50 { response struct RetrieveLogsResponse = 1 { LogsStatus status = 0; - OCTET_STRING content = 1; - epoch_s timeStamp = 2; + OCTET_STRING logContent = 1; + epoch_s UTCTimeStamp = 2; INT32U timeSinceBoot = 3; } diff --git a/src/app/clusters/diagnostic-logs-server/diagnostic-logs-server.cpp b/src/app/clusters/diagnostic-logs-server/diagnostic-logs-server.cpp index 40b8e84443ce4e..1d0db1b975c880 100644 --- a/src/app/clusters/diagnostic-logs-server/diagnostic-logs-server.cpp +++ b/src/app/clusters/diagnostic-logs-server/diagnostic-logs-server.cpp @@ -74,9 +74,9 @@ void DiagnosticLogsCommandHandler::InvokeCommand(HandlerContext & handlerContext VerifyOrDie(err == CHIP_NO_ERROR); timeMs = *reinterpret_cast(buf.get()); - response.status = chip::app::Clusters::DiagnosticLogs::LogsStatus::kSuccess; - response.content = chip::ByteSpan(buf.get() + sizeof(timeMs), logSize - sizeof(timeMs)); - response.timeStamp = timeMs; + response.status = chip::app::Clusters::DiagnosticLogs::LogsStatus::kSuccess; + response.logContent = chip::ByteSpan(buf.get() + sizeof(timeMs), logSize - sizeof(timeMs)); + response.UTCTimeStamp = timeMs; handlerContext.mCommandHandler.AddResponse(handlerContext.mRequestPath, response); } break; diff --git a/src/app/zap-templates/zcl/data-model/chip/diagnostic-logs-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/diagnostic-logs-cluster.xml index 74448bf1b37054..2f5f9874c29c1e 100644 --- a/src/app/zap-templates/zcl/data-model/chip/diagnostic-logs-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/diagnostic-logs-cluster.xml @@ -45,16 +45,16 @@ limitations under the License. true Retrieving diagnostic logs from a Node - - - + + + Response to the RetrieveLogsRequest - - - - + + + + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index f7573977ba4a49..76131a2a09708b 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -1280,8 +1280,8 @@ client cluster DiagnosticLogs = 50 { response struct RetrieveLogsResponse = 1 { LogsStatus status = 0; - OCTET_STRING content = 1; - epoch_s timeStamp = 2; + OCTET_STRING logContent = 1; + epoch_s UTCTimeStamp = 2; INT32U timeSinceBoot = 3; } diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp index a77e04584a2a7b..641136d75b97f8 100644 --- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp @@ -1786,28 +1786,28 @@ void CHIPDiagnosticLogsClusterRetrieveLogsResponseCallback::CallbackFn( "(Ljava/lang/Integer;[BLjava/lang/Long;Ljava/lang/Long;)V", &javaMethod); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error invoking Java callback: %s", ErrorStr(err))); - jobject status; - std::string statusClassName = "java/lang/Integer"; - std::string statusCtorSignature = "(I)V"; - chip::JniReferences::GetInstance().CreateBoxedObject(statusClassName.c_str(), statusCtorSignature.c_str(), - static_cast(dataResponse.status), status); - jobject content; - jbyteArray contentByteArray = env->NewByteArray(static_cast(dataResponse.content.size())); - env->SetByteArrayRegion(contentByteArray, 0, static_cast(dataResponse.content.size()), - reinterpret_cast(dataResponse.content.data())); - content = contentByteArray; - jobject timeStamp; - std::string timeStampClassName = "java/lang/Long"; - std::string timeStampCtorSignature = "(J)V"; - chip::JniReferences::GetInstance().CreateBoxedObject(timeStampClassName.c_str(), timeStampCtorSignature.c_str(), - dataResponse.timeStamp, timeStamp); - jobject timeSinceBoot; - std::string timeSinceBootClassName = "java/lang/Long"; - std::string timeSinceBootCtorSignature = "(J)V"; + jobject Status; + std::string StatusClassName = "java/lang/Integer"; + std::string StatusCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(StatusClassName.c_str(), StatusCtorSignature.c_str(), + static_cast(dataResponse.status), Status); + jobject LogContent; + jbyteArray LogContentByteArray = env->NewByteArray(static_cast(dataResponse.logContent.size())); + env->SetByteArrayRegion(LogContentByteArray, 0, static_cast(dataResponse.logContent.size()), + reinterpret_cast(dataResponse.logContent.data())); + LogContent = LogContentByteArray; + jobject UTCTimeStamp; + std::string UTCTimeStampClassName = "java/lang/Long"; + std::string UTCTimeStampCtorSignature = "(J)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(UTCTimeStampClassName.c_str(), UTCTimeStampCtorSignature.c_str(), + dataResponse.UTCTimeStamp, UTCTimeStamp); + jobject TimeSinceBoot; + std::string TimeSinceBootClassName = "java/lang/Long"; + std::string TimeSinceBootCtorSignature = "(J)V"; chip::JniReferences::GetInstance().CreateBoxedObject( - timeSinceBootClassName.c_str(), timeSinceBootCtorSignature.c_str(), dataResponse.timeSinceBoot, timeSinceBoot); + TimeSinceBootClassName.c_str(), TimeSinceBootCtorSignature.c_str(), dataResponse.timeSinceBoot, TimeSinceBoot); - env->CallVoidMethod(javaCallbackRef, javaMethod, status, content, timeStamp, timeSinceBoot); + env->CallVoidMethod(javaCallbackRef, javaMethod, Status, LogContent, UTCTimeStamp, TimeSinceBoot); } CHIPOperationalCredentialsClusterAttestationResponseCallback::CHIPOperationalCredentialsClusterAttestationResponseCallback( jobject javaCallback) : diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index caf489666d2783..0815690824f936 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -6508,7 +6508,7 @@ private native void retrieveLogsRequest( @Nullable Integer timedInvokeTimeoutMs); public interface RetrieveLogsResponseCallback { - void onSuccess(Integer status, byte[] content, Long timeStamp, Long timeSinceBoot); + void onSuccess(Integer status, byte[] logContent, Long UTCTimeStamp, Long timeSinceBoot); void onError(Exception error); } diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java index 19c2f02ba4c287..ac7c3c7838823e 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java @@ -2504,17 +2504,19 @@ public void setCallbackDelegate(ClusterCommandCallback callback) { } @Override - public void onSuccess(Integer status, byte[] content, Long timeStamp, Long timeSinceBoot) { + public void onSuccess( + Integer Status, byte[] LogContent, Long UTCTimeStamp, Long TimeSinceBoot) { Map responseValues = new LinkedHashMap<>(); - CommandResponseInfo statusResponseValue = new CommandResponseInfo("status", "Integer"); - responseValues.put(statusResponseValue, status); - CommandResponseInfo contentResponseValue = new CommandResponseInfo("content", "byte[]"); - responseValues.put(contentResponseValue, content); - CommandResponseInfo timeStampResponseValue = new CommandResponseInfo("timeStamp", "Long"); - responseValues.put(timeStampResponseValue, timeStamp); - CommandResponseInfo timeSinceBootResponseValue = - new CommandResponseInfo("timeSinceBoot", "Long"); - responseValues.put(timeSinceBootResponseValue, timeSinceBoot); + CommandResponseInfo StatusResponseValue = new CommandResponseInfo("Status", "Integer"); + responseValues.put(StatusResponseValue, Status); + CommandResponseInfo LogContentResponseValue = new CommandResponseInfo("LogContent", "byte[]"); + responseValues.put(LogContentResponseValue, LogContent); + CommandResponseInfo UTCTimeStampResponseValue = + new CommandResponseInfo("UTCTimeStamp", "Long"); + responseValues.put(UTCTimeStampResponseValue, UTCTimeStamp); + CommandResponseInfo TimeSinceBootResponseValue = + new CommandResponseInfo("TimeSinceBoot", "Long"); + responseValues.put(TimeSinceBootResponseValue, TimeSinceBoot); callback.onSuccess(responseValues); } diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 6dea0ef9539d5d..c5a982651881be 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -7151,14 +7151,14 @@ def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields = [ ClusterObjectFieldDescriptor(Label="status", Tag=0, Type=DiagnosticLogs.Enums.LogsStatus), - ClusterObjectFieldDescriptor(Label="content", Tag=1, Type=bytes), - ClusterObjectFieldDescriptor(Label="timeStamp", Tag=2, Type=uint), + ClusterObjectFieldDescriptor(Label="logContent", Tag=1, Type=bytes), + ClusterObjectFieldDescriptor(Label="UTCTimeStamp", Tag=2, Type=uint), ClusterObjectFieldDescriptor(Label="timeSinceBoot", Tag=3, Type=uint), ]) status: 'DiagnosticLogs.Enums.LogsStatus' = 0 - content: 'bytes' = b"" - timeStamp: 'uint' = 0 + logContent: 'bytes' = b"" + UTCTimeStamp: 'uint' = 0 timeSinceBoot: 'uint' = 0 diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml index 79510e723f9877..f38744f7c76104 100644 --- a/src/darwin/Framework/CHIP/templates/availability.yaml +++ b/src/darwin/Framework/CHIP/templates/availability.yaml @@ -4935,6 +4935,10 @@ OnOff: OffWithEffect: - effectIdentifier + DiagnosticLogs: + RetrieveLogsResponse: + - logContent + - utcTimeStamp structs: OTASoftwareUpdateRequestor: - ProviderLocation @@ -5246,6 +5250,10 @@ OnOff: OffWithEffect: - effectId + DiagnosticLogs: + RetrieveLogsResponse: + - content + - timeStamp structs: Descriptor: - DeviceType @@ -5337,6 +5345,10 @@ OnOff: OffWithEffect: effectIdentifier: effectId + DiagnosticLogs: + RetrieveLogsResponse: + logContent: content + utcTimeStamp: timeStamp structs: AccessControl: AccessControlEntryStruct: AccessControlEntry diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm index a77aee371cc2aa..4eaac1ab88fbea 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm @@ -11912,10 +11912,10 @@ response.status = [NSNumber numberWithUnsignedChar:chip::to_underlying(data.status)]; } { - response.content = [NSData dataWithBytes:data.content.data() length:data.content.size()]; + response.logContent = [NSData dataWithBytes:data.logContent.data() length:data.logContent.size()]; } { - response.timeStamp = [NSNumber numberWithUnsignedInt:data.timeStamp]; + response.utcTimeStamp = [NSNumber numberWithUnsignedInt:data.UTCTimeStamp]; } { response.timeSinceBoot = [NSNumber numberWithUnsignedInt:data.timeSinceBoot]; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h index 333de93093941f..ce896e4df4794b 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h @@ -2101,9 +2101,9 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) @property (nonatomic, copy) NSNumber * _Nonnull status API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -@property (nonatomic, copy) NSData * _Nonnull content API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +@property (nonatomic, copy) NSData * _Nonnull logContent MTR_NEWLY_AVAILABLE; -@property (nonatomic, copy) NSNumber * _Nonnull timeStamp API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +@property (nonatomic, copy) NSNumber * _Nonnull utcTimeStamp MTR_NEWLY_AVAILABLE; @property (nonatomic, copy) NSNumber * _Nonnull timeSinceBoot API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); /** @@ -2124,6 +2124,15 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) tvos(16.1)) MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands"); @end +@interface MTRDiagnosticLogsClusterRetrieveLogsResponseParams (Deprecated) + +@property (nonatomic, copy) NSData * _Nonnull content API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use logContent"); + +@property (nonatomic, copy) NSNumber * _Nonnull timeStamp API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use utcTimeStamp"); +@end + API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) @interface MTRGeneralDiagnosticsClusterTestEventTriggerParams : NSObject diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm index 66db340cb5044f..efc4fee32f2c5d 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm @@ -2938,9 +2938,9 @@ - (instancetype)init _status = @(0); - _content = [NSData data]; + _logContent = [NSData data]; - _timeStamp = @(0); + _utcTimeStamp = @(0); _timeSinceBoot = @(0); _timedInvokeTimeoutMs = nil; @@ -2953,8 +2953,8 @@ - (id)copyWithZone:(NSZone * _Nullable)zone; auto other = [[MTRDiagnosticLogsClusterRetrieveLogsResponseParams alloc] init]; other.status = self.status; - other.content = self.content; - other.timeStamp = self.timeStamp; + other.logContent = self.logContent; + other.utcTimeStamp = self.utcTimeStamp; other.timeSinceBoot = self.timeSinceBoot; other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs; @@ -2963,12 +2963,35 @@ - (id)copyWithZone:(NSZone * _Nullable)zone; - (NSString *)description { - NSString * descriptionString = [NSString stringWithFormat:@"<%@: status:%@; content:%@; timeStamp:%@; timeSinceBoot:%@; >", - NSStringFromClass([self class]), _status, [_content base64EncodedStringWithOptions:0], - _timeStamp, _timeSinceBoot]; + NSString * descriptionString = [NSString + stringWithFormat:@"<%@: status:%@; logContent:%@; utcTimeStamp:%@; timeSinceBoot:%@; >", NSStringFromClass([self class]), + _status, [_logContent base64EncodedStringWithOptions:0], _utcTimeStamp, _timeSinceBoot]; return descriptionString; } +@end + +@implementation MTRDiagnosticLogsClusterRetrieveLogsResponseParams (Deprecated) + +- (void)setContent:(NSData * _Nonnull)content +{ + self.logContent = content; +} + +- (NSData * _Nonnull)content +{ + return self.logContent; +} + +- (void)setTimeStamp:(NSNumber * _Nonnull)timeStamp +{ + self.utcTimeStamp = timeStamp; +} + +- (NSNumber * _Nonnull)timeStamp +{ + return self.utcTimeStamp; +} @end @implementation MTRGeneralDiagnosticsClusterTestEventTriggerParams - (instancetype)init diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h index aebe2184331823..6818db81106eb4 100644 --- a/zzz_generated/app-common/app-common/zap-generated/callback.h +++ b/zzz_generated/app-common/app-common/zap-generated/callback.h @@ -8041,8 +8041,8 @@ bool emberAfDiagnosticLogsClusterRetrieveLogsRequestCallback( * @brief Diagnostic Logs Cluster RetrieveLogsResponse Command callback (from server) */ bool emberAfDiagnosticLogsClusterRetrieveLogsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, - uint8_t status, chip::ByteSpan content, uint32_t timeStamp, - uint32_t timeSinceBoot); + uint8_t Status, chip::ByteSpan LogContent, uint32_t UTCTimeStamp, + uint32_t TimeSinceBoot); /** * @brief General Diagnostics Cluster TestEventTrigger Command callback (from client) */ 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 2d1476bdf79ff7..f80dd0b9024c24 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 @@ -6395,8 +6395,8 @@ CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const TLV::TLVType outer; ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer)); ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kStatus)), status)); - ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kContent)), content)); - ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kTimeStamp)), timeStamp)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kLogContent)), logContent)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kUTCTimeStamp)), UTCTimeStamp)); ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kTimeSinceBoot)), timeSinceBoot)); ReturnErrorOnFailure(writer.EndContainer(outer)); return CHIP_NO_ERROR; @@ -6419,11 +6419,11 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) case to_underlying(Fields::kStatus): ReturnErrorOnFailure(DataModel::Decode(reader, status)); break; - case to_underlying(Fields::kContent): - ReturnErrorOnFailure(DataModel::Decode(reader, content)); + case to_underlying(Fields::kLogContent): + ReturnErrorOnFailure(DataModel::Decode(reader, logContent)); break; - case to_underlying(Fields::kTimeStamp): - ReturnErrorOnFailure(DataModel::Decode(reader, timeStamp)); + case to_underlying(Fields::kUTCTimeStamp): + ReturnErrorOnFailure(DataModel::Decode(reader, UTCTimeStamp)); break; case to_underlying(Fields::kTimeSinceBoot): ReturnErrorOnFailure(DataModel::Decode(reader, timeSinceBoot)); diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index d9a23bfe1012e6..c85b9ce3b3a4a4 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -7571,8 +7571,8 @@ namespace RetrieveLogsResponse { enum class Fields { kStatus = 0, - kContent = 1, - kTimeStamp = 2, + kLogContent = 1, + kUTCTimeStamp = 2, kTimeSinceBoot = 3, }; @@ -7584,8 +7584,8 @@ struct Type static constexpr ClusterId GetClusterId() { return Clusters::DiagnosticLogs::Id; } LogsStatus status = static_cast(0); - chip::ByteSpan content; - uint32_t timeStamp = static_cast(0); + chip::ByteSpan logContent; + uint32_t UTCTimeStamp = static_cast(0); uint32_t timeSinceBoot = static_cast(0); CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const; @@ -7602,8 +7602,8 @@ struct DecodableType static constexpr ClusterId GetClusterId() { return Clusters::DiagnosticLogs::Id; } LogsStatus status = static_cast(0); - chip::ByteSpan content; - uint32_t timeStamp = static_cast(0); + chip::ByteSpan logContent; + uint32_t UTCTimeStamp = static_cast(0); uint32_t timeSinceBoot = static_cast(0); CHIP_ERROR Decode(TLV::TLVReader & reader); }; diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 5e4ec741353506..813f47039f85fa 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -3891,8 +3891,8 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, { DataModelLogger::LogString(label, indent, "{"); ReturnErrorOnFailure(DataModelLogger::LogValue("status", indent + 1, value.status)); - ReturnErrorOnFailure(DataModelLogger::LogValue("content", indent + 1, value.content)); - ReturnErrorOnFailure(DataModelLogger::LogValue("timeStamp", indent + 1, value.timeStamp)); + ReturnErrorOnFailure(DataModelLogger::LogValue("logContent", indent + 1, value.logContent)); + ReturnErrorOnFailure(DataModelLogger::LogValue("UTCTimeStamp", indent + 1, value.UTCTimeStamp)); ReturnErrorOnFailure(DataModelLogger::LogValue("timeSinceBoot", indent + 1, value.timeSinceBoot)); DataModelLogger::LogString(indent, "}"); return CHIP_NO_ERROR; From af7b393ac51cf7bd38f89afa6b82eae181825501 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 6 Jan 2023 12:07:58 -0500 Subject: [PATCH 05/20] Align naming in Software Diagnostics cluster XML with the spec. (#24287) * Align naming in Software Diagnostics cluster XML with the spec. * Regenerate generated code. --- .../all-clusters-app.matter | 4 ++-- .../bridge-common/bridge-app.matter | 4 ++-- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 4 ++-- ...de_colortemperaturelight_hbUnzYVeyn.matter | 4 ++-- .../rootnode_contactsensor_lFAGG1bfRO.matter | 4 ++-- .../rootnode_dimmablelight_bCwGYSDpoe.matter | 4 ++-- .../rootnode_doorlock_aNKYAreMXE.matter | 4 ++-- ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 4 ++-- .../devices/rootnode_fan_7N2TobIlOX.matter | 4 ++-- .../rootnode_flowsensor_1zVxHedlaV.matter | 4 ++-- ...tnode_heatingcoolingunit_ncdGai1E5a.matter | 4 ++-- .../rootnode_humiditysensor_Xyj4gda6Hb.matter | 4 ++-- .../rootnode_lightsensor_lZQycTFcJK.matter | 4 ++-- ...rootnode_occupancysensor_iHyVgifZuo.matter | 4 ++-- .../rootnode_onofflight_bbs1b7IaOV.matter | 4 ++-- ...ootnode_onofflightswitch_FsPlMr090Q.matter | 4 ++-- ...rootnode_onoffpluginunit_Wtf8ss5EBY.matter | 4 ++-- .../rootnode_pressuresensor_s0qC9wLH4k.matter | 4 ++-- .../rootnode_speaker_RpzeXdimqA.matter | 4 ++-- ...otnode_temperaturesensor_Qy1zkNW7c3.matter | 4 ++-- .../rootnode_thermostat_bm3fb8dhYi.matter | 4 ++-- .../rootnode_windowcovering_RLCxaGi9Yx.matter | 4 ++-- .../contact-sensor-app.matter | 4 ++-- .../bridge-common/bridge-app.matter | 4 ++-- .../light-switch-app.matter | 4 ++-- .../lighting-common/lighting-app.matter | 4 ++-- .../nxp/zap/lighting-on-off.matter | 4 ++-- examples/lock-app/lock-common/lock-app.matter | 4 ++-- .../placeholder/linux/apps/app1/config.matter | 4 ++-- .../placeholder/linux/apps/app2/config.matter | 4 ++-- .../thermostat-common/thermostat.matter | 4 ++-- examples/tv-app/tv-common/tv-app.matter | 4 ++-- .../tv-casting-common/tv-casting-app.matter | 4 ++-- examples/window-app/common/window-app.matter | 4 ++-- .../chip/software-diagnostics-cluster.xml | 6 ++--- .../data_model/controller-clusters.matter | 4 ++-- .../CHIPAttributeTLVValueDecoder.cpp | 21 ++++++++-------- .../java/zap-generated/CHIPReadCallbacks.cpp | 24 ++++++++++--------- .../java/zap-generated/CHIPReadCallbacks.h | 7 +++--- .../chip/devicecontroller/ChipClusters.java | 2 +- .../chip/devicecontroller/ChipStructs.java | 6 ++--- .../devicecontroller/ClusterInfoMapping.java | 5 ++-- .../python/chip/clusters/Objects.py | 10 ++++---- .../CHIP/templates/availability.yaml | 13 ++++++++++ .../MTRAttributeTLVValueDecoder.mm | 4 ++-- .../CHIP/zap-generated/MTRCallbackBridge.h | 11 ++++----- .../CHIP/zap-generated/MTRCallbackBridge.mm | 8 +++---- .../CHIP/zap-generated/MTRStructsObjc.h | 17 ++++++++----- .../CHIP/zap-generated/MTRStructsObjc.mm | 7 ++++-- src/include/platform/DiagnosticDataProvider.h | 2 +- .../app-common/zap-generated/af-structs.h | 6 ++--- .../zap-generated/cluster-objects.cpp | 4 ++-- .../zap-generated/cluster-objects.h | 10 ++++---- .../cluster/ComplexArgumentParser.cpp | 6 ++--- .../cluster/ComplexArgumentParser.h | 4 ++-- .../cluster/logging/DataModelLogger.cpp | 8 ++++--- .../cluster/logging/DataModelLogger.h | 2 +- .../zap-generated/CHIPClientCallbacks.h | 4 ++-- 58 files changed, 176 insertions(+), 151 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 d3c4b3c21e166e..223180ae8134cd 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 @@ -1220,7 +1220,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -1234,7 +1234,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 9e196b071bb2df..9de6bf1da0767d 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -898,7 +898,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -912,7 +912,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 20770992d3c6de..50f9dd75620128 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -750,7 +750,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -764,7 +764,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index 64f4e158311dc2..9c5a387c3a47f0 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -862,7 +862,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -876,7 +876,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter index 92c6d0e9a303bd..fc111c096b4830 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter @@ -735,7 +735,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -749,7 +749,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index 5d9520811f7de6..b79a4a9ed301ad 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -884,7 +884,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -898,7 +898,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter index d60f528e15b86f..f9065c571e73f0 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter @@ -735,7 +735,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -749,7 +749,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 9657afc4259cea..07dd8cc4dbb24a 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -884,7 +884,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -898,7 +898,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter index 0da03778068ce3..38d0ae6a8d3eae 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter @@ -737,7 +737,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -751,7 +751,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter index f1551f204ef330..0df49dec4fddad 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter @@ -748,7 +748,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -762,7 +762,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index ee51f83d2e671b..d1c5e67fc79862 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -877,7 +877,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -891,7 +891,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter index b8d3088688c159..46478dc8eb4e20 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter @@ -748,7 +748,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -762,7 +762,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter index 3c337b37201a94..52bc8a6a235616 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter @@ -748,7 +748,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -762,7 +762,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter index dbe0949d0bef74..973f496f56c8fc 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter @@ -748,7 +748,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -762,7 +762,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 736958cc69273b..c04de798ba0f0d 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -884,7 +884,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -898,7 +898,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index 2d3dab4480ef7b..f9eee7ddeafaef 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -827,7 +827,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -841,7 +841,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter index 9c6d87a08b45a2..b26bc9a9ae6dba 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter @@ -785,7 +785,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -799,7 +799,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter index a05ec34df74a70..05724a4da55c9c 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter @@ -753,7 +753,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -767,7 +767,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index b22236fb5eaad6..d3c88eb27cb9a7 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -875,7 +875,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -889,7 +889,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter index 956938cf4a91a1..6192a201ddf6d3 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter @@ -748,7 +748,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -762,7 +762,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index c15a487a642a67..be4033d3193a83 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -735,7 +735,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -749,7 +749,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter index 729ceff4fe6636..aa61ccb2b9d257 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter @@ -735,7 +735,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -749,7 +749,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index 0696014926b2f5..c59e6c830e57fc 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -738,7 +738,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -752,7 +752,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index 9e196b071bb2df..9de6bf1da0767d 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter @@ -898,7 +898,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -912,7 +912,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; 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 af2fc54a7ec4ee..4c97c8e80f6bf1 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 @@ -940,7 +940,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -954,7 +954,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 34d79e80f4df80..ab0b8eaa8e8860 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -896,7 +896,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -910,7 +910,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index ce768f1eda4bbe..353a2e65b2ddb3 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.matter +++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter @@ -805,7 +805,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -819,7 +819,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 2e7ff08d46cbaa..5bfa177b82cf5c 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -812,7 +812,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -826,7 +826,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index f8ffde9dff6c9b..09eeccfcc13968 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -1025,7 +1025,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -1039,7 +1039,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index f8ffde9dff6c9b..09eeccfcc13968 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -1025,7 +1025,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -1039,7 +1039,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 15d06410def29c..f0b8a5d7fb1713 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -900,7 +900,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -914,7 +914,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index e3c07dd6d3bd8b..4bc33028b36fe2 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -945,7 +945,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -959,7 +959,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; 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 b073a35a99aea5..0fcfd6f338a89f 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 @@ -1117,7 +1117,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -1131,7 +1131,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index c29a4d437cd2d4..6b0ca3d13b24e4 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -952,7 +952,7 @@ server cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -966,7 +966,7 @@ server cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/src/app/zap-templates/zcl/data-model/chip/software-diagnostics-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/software-diagnostics-cluster.xml index 3d5977972423e8..84ff1c9ad321da 100644 --- a/src/app/zap-templates/zcl/data-model/chip/software-diagnostics-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/software-diagnostics-cluster.xml @@ -16,7 +16,7 @@ limitations under the License. --> - + @@ -30,7 +30,7 @@ limitations under the License. 0x0034 SOFTWARE_DIAGNOSTICS_CLUSTER The Software Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. - ThreadMetrics + ThreadMetrics CurrentHeapFree CurrentHeapUsed CurrentHeapHighWatermark @@ -39,7 +39,7 @@ limitations under the License. Indicate the last software fault that has taken place on the Node. - + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 76131a2a09708b..df1896341e69f7 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -1396,7 +1396,7 @@ client cluster SoftwareDiagnostics = 52 { kWaterMarks = 0x1; } - struct ThreadMetrics { + struct ThreadMetricsStruct { int64u id = 0; optional char_string<8> name = 1; optional int32u stackFreeCurrent = 2; @@ -1410,7 +1410,7 @@ client cluster SoftwareDiagnostics = 52 { optional OCTET_STRING faultRecording = 2; } - readonly attribute ThreadMetrics threadMetrics[] = 0; + readonly attribute ThreadMetricsStruct threadMetrics[] = 0; readonly attribute int64u currentHeapFree = 1; readonly attribute int64u currentHeapUsed = 2; readonly attribute int64u currentHeapHighWatermark = 3; diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index 80499454d11ed1..f20ca29d835ca5 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -5265,26 +5265,27 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR chip::JniReferences::GetInstance().CreateOptional(newElement_0_stackSizeInsideOptional, newElement_0_stackSize); } - jclass threadMetricsStructClass_1; + jclass threadMetricsStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( - env, "chip/devicecontroller/ChipStructs$SoftwareDiagnosticsClusterThreadMetrics", threadMetricsStructClass_1); + env, "chip/devicecontroller/ChipStructs$SoftwareDiagnosticsClusterThreadMetricsStruct", + threadMetricsStructStructClass_1); if (err != CHIP_NO_ERROR) { - ChipLogError(Zcl, "Could not find class ChipStructs$SoftwareDiagnosticsClusterThreadMetrics"); + ChipLogError(Zcl, "Could not find class ChipStructs$SoftwareDiagnosticsClusterThreadMetricsStruct"); return nullptr; } - jmethodID threadMetricsStructCtor_1 = env->GetMethodID( - threadMetricsStructClass_1, "", + jmethodID threadMetricsStructStructCtor_1 = env->GetMethodID( + threadMetricsStructStructClass_1, "", "(Ljava/lang/Long;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V"); - if (threadMetricsStructCtor_1 == nullptr) + if (threadMetricsStructStructCtor_1 == nullptr) { - ChipLogError(Zcl, "Could not find ChipStructs$SoftwareDiagnosticsClusterThreadMetrics constructor"); + ChipLogError(Zcl, "Could not find ChipStructs$SoftwareDiagnosticsClusterThreadMetricsStruct constructor"); return nullptr; } - newElement_0 = - env->NewObject(threadMetricsStructClass_1, threadMetricsStructCtor_1, newElement_0_id, newElement_0_name, - newElement_0_stackFreeCurrent, newElement_0_stackFreeMinimum, newElement_0_stackSize); + newElement_0 = env->NewObject(threadMetricsStructStructClass_1, threadMetricsStructStructCtor_1, newElement_0_id, + newElement_0_name, newElement_0_stackFreeCurrent, newElement_0_stackFreeMinimum, + newElement_0_stackSize); chip::JniReferences::GetInstance().AddToList(value, newElement_0); } return value; diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index ff4b34a235d11a..55c8d99dee83d5 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp @@ -8334,8 +8334,8 @@ CHIPSoftwareDiagnosticsThreadMetricsAttributeCallback::~CHIPSoftwareDiagnosticsT void CHIPSoftwareDiagnosticsThreadMetricsAttributeCallback::CallbackFn( void * context, - const chip::app::DataModel::DecodableList & - list) + const chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> & list) { chip::DeviceLayer::StackUnlock unlock; CHIP_ERROR err = CHIP_NO_ERROR; @@ -8431,25 +8431,27 @@ void CHIPSoftwareDiagnosticsThreadMetricsAttributeCallback::CallbackFn( chip::JniReferences::GetInstance().CreateOptional(newElement_0_stackSizeInsideOptional, newElement_0_stackSize); } - jclass threadMetricsStructClass_1; + jclass threadMetricsStructStructClass_1; err = chip::JniReferences::GetInstance().GetClassRef( - env, "chip/devicecontroller/ChipStructs$SoftwareDiagnosticsClusterThreadMetrics", threadMetricsStructClass_1); + env, "chip/devicecontroller/ChipStructs$SoftwareDiagnosticsClusterThreadMetricsStruct", + threadMetricsStructStructClass_1); if (err != CHIP_NO_ERROR) { - ChipLogError(Zcl, "Could not find class ChipStructs$SoftwareDiagnosticsClusterThreadMetrics"); + ChipLogError(Zcl, "Could not find class ChipStructs$SoftwareDiagnosticsClusterThreadMetricsStruct"); return; } - jmethodID threadMetricsStructCtor_1 = - env->GetMethodID(threadMetricsStructClass_1, "", + jmethodID threadMetricsStructStructCtor_1 = + env->GetMethodID(threadMetricsStructStructClass_1, "", "(Ljava/lang/Long;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;)V"); - if (threadMetricsStructCtor_1 == nullptr) + if (threadMetricsStructStructCtor_1 == nullptr) { - ChipLogError(Zcl, "Could not find ChipStructs$SoftwareDiagnosticsClusterThreadMetrics constructor"); + ChipLogError(Zcl, "Could not find ChipStructs$SoftwareDiagnosticsClusterThreadMetricsStruct constructor"); return; } - newElement_0 = env->NewObject(threadMetricsStructClass_1, threadMetricsStructCtor_1, newElement_0_id, newElement_0_name, - newElement_0_stackFreeCurrent, newElement_0_stackFreeMinimum, newElement_0_stackSize); + newElement_0 = + env->NewObject(threadMetricsStructStructClass_1, threadMetricsStructStructCtor_1, newElement_0_id, newElement_0_name, + newElement_0_stackFreeCurrent, newElement_0_stackFreeMinimum, newElement_0_stackSize); chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0); } diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h index 7101e2a5f43d2a..2e9522fc900f81 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.h +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h @@ -3488,10 +3488,9 @@ class CHIPSoftwareDiagnosticsThreadMetricsAttributeCallback } } - static void CallbackFn( - void * context, - const chip::app::DataModel::DecodableList & - list); + static void CallbackFn(void * context, + const chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> & list); static void OnSubscriptionEstablished(void * context) { CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished( diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index 0815690824f936..27db8281c76b07 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -6965,7 +6965,7 @@ private native void resetWatermarks( @Nullable Integer timedInvokeTimeoutMs); public interface ThreadMetricsAttributeCallback { - void onSuccess(List valueList); + void onSuccess(List valueList); void onError(Exception ex); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java index e7ef6914462dfe..baa99f3a1146f6 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java @@ -678,14 +678,14 @@ public String toString() { } } - public static class SoftwareDiagnosticsClusterThreadMetrics { + public static class SoftwareDiagnosticsClusterThreadMetricsStruct { public Long id; public Optional name; public Optional stackFreeCurrent; public Optional stackFreeMinimum; public Optional stackSize; - public SoftwareDiagnosticsClusterThreadMetrics( + public SoftwareDiagnosticsClusterThreadMetricsStruct( Long id, Optional name, Optional stackFreeCurrent, @@ -701,7 +701,7 @@ public SoftwareDiagnosticsClusterThreadMetrics( @Override public String toString() { StringBuilder output = new StringBuilder(); - output.append("SoftwareDiagnosticsClusterThreadMetrics {\n"); + output.append("SoftwareDiagnosticsClusterThreadMetricsStruct {\n"); output.append("\tid: "); output.append(id); output.append("\n"); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java index ac7c3c7838823e..18703c4ba2c230 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java @@ -2783,11 +2783,12 @@ public void setCallbackDelegate(ClusterCommandCallback callback) { } @Override - public void onSuccess(List valueList) { + public void onSuccess( + List valueList) { Map responseValues = new LinkedHashMap<>(); CommandResponseInfo commandResponseInfo = new CommandResponseInfo( - "valueList", "List"); + "valueList", "List"); responseValues.put(commandResponseInfo, valueList); callback.onSuccess(responseValues); } diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index c5a982651881be..0020b94c7339b1 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -7696,7 +7696,7 @@ class SoftwareDiagnostics(Cluster): def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields = [ - ClusterObjectFieldDescriptor(Label="threadMetrics", Tag=0x00000000, Type=typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetrics]]), + ClusterObjectFieldDescriptor(Label="threadMetrics", Tag=0x00000000, Type=typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]), ClusterObjectFieldDescriptor(Label="currentHeapFree", Tag=0x00000001, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="currentHeapUsed", Tag=0x00000002, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="currentHeapHighWatermark", Tag=0x00000003, Type=typing.Optional[uint]), @@ -7707,7 +7707,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - threadMetrics: 'typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetrics]]' = None + threadMetrics: 'typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]' = None currentHeapFree: 'typing.Optional[uint]' = None currentHeapUsed: 'typing.Optional[uint]' = None currentHeapHighWatermark: 'typing.Optional[uint]' = None @@ -7720,7 +7720,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Structs: @dataclass - class ThreadMetrics(ClusterObject): + class ThreadMetricsStruct(ClusterObject): @ChipUtility.classproperty def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( @@ -7769,9 +7769,9 @@ def attribute_id(cls) -> int: @ChipUtility.classproperty def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetrics]]) + return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]) - value: 'typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetrics]]' = None + value: 'typing.Optional[typing.List[SoftwareDiagnostics.Structs.ThreadMetricsStruct]]' = None @dataclass class CurrentHeapFree(ClusterAttributeDescriptor): diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml index f38744f7c76104..45e38a38952c97 100644 --- a/src/darwin/Framework/CHIP/templates/availability.yaml +++ b/src/darwin/Framework/CHIP/templates/availability.yaml @@ -4957,6 +4957,8 @@ AccessControl: - AccessControlEntryStruct - AccessControlExtensionStruct + SoftwareDiagnostics: + - ThreadMetricsStruct struct fields: UnitTesting: SimpleStruct: @@ -5034,6 +5036,13 @@ AccessControlExtensionStruct: - data - fabricIndex + SoftwareDiagnostics: + ThreadMetricsStruct: + - id + - name + - stackFreeCurrent + - stackFreeMinimum + - stackSize events: OTASoftwareUpdateRequestor: - StateTransition @@ -5264,6 +5273,8 @@ - WiredFaultChangeType - BatFaultChangeType - BatChargeFaultChangeType + SoftwareDiagnostics: + - ThreadMetrics struct fields: Descriptor: DeviceTypeStruct: @@ -5353,6 +5364,8 @@ AccessControl: AccessControlEntryStruct: AccessControlEntry AccessControlExtensionStruct: ExtensionEntry + SoftwareDiagnostics: + ThreadMetricsStruct: ThreadMetrics struct fields: Descriptor: DeviceTypeStruct: diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm index eeaace2ac88f61..4aa9e051b6118c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm @@ -4620,8 +4620,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader & auto iter_0 = cppValue.begin(); while (iter_0.Next()) { auto & entry_0 = iter_0.GetValue(); - MTRSoftwareDiagnosticsClusterThreadMetrics * newElement_0; - newElement_0 = [MTRSoftwareDiagnosticsClusterThreadMetrics new]; + MTRSoftwareDiagnosticsClusterThreadMetricsStruct * newElement_0; + newElement_0 = [MTRSoftwareDiagnosticsClusterThreadMetricsStruct new]; newElement_0.id = [NSNumber numberWithUnsignedLongLong:entry_0.id]; if (entry_0.name.HasValue()) { newElement_0.name = [[NSString alloc] initWithBytes:entry_0.name.Value().data() diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h index d4be5addf9050e..71847e7d45e82e 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h @@ -737,8 +737,8 @@ typedef void (*GeneralDiagnosticsAttributeListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*SoftwareDiagnosticsThreadMetricsListAttributeCallback)( void * context, - const chip::app::DataModel::DecodableList & - data); + const chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> & data); typedef void (*SoftwareDiagnosticsGeneratedCommandListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*SoftwareDiagnosticsAcceptedCommandListListAttributeCallback)( @@ -5015,10 +5015,9 @@ class MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge MTRActionBlock action) : MTRCallbackBridge(queue, handler, action, OnSuccessFn){}; - static void OnSuccessFn( - void * context, - const chip::app::DataModel::DecodableList & - value); + static void OnSuccessFn(void * context, + const chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> & value); }; class MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm index 4eaac1ab88fbea..b1656757774c3c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm @@ -4370,8 +4370,8 @@ } void MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge::OnSuccessFn(void * context, - const chip::app::DataModel::DecodableList & - value) + const chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> & value) { NSArray * _Nonnull objCValue; { // Scope for our temporary variables @@ -4379,8 +4379,8 @@ auto iter_0 = value.begin(); while (iter_0.Next()) { auto & entry_0 = iter_0.GetValue(); - MTRSoftwareDiagnosticsClusterThreadMetrics * newElement_0; - newElement_0 = [MTRSoftwareDiagnosticsClusterThreadMetrics new]; + MTRSoftwareDiagnosticsClusterThreadMetricsStruct * newElement_0; + newElement_0 = [MTRSoftwareDiagnosticsClusterThreadMetricsStruct new]; newElement_0.id = [NSNumber numberWithUnsignedLongLong:entry_0.id]; if (entry_0.name.HasValue()) { newElement_0.name = [[NSString alloc] initWithBytes:entry_0.name.Value().data() diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h index 9c5aa2ee441931..9ae9a825e66c46 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h @@ -356,13 +356,18 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) @property (nonatomic, copy) NSNumber * _Nonnull bootReason API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); @end +MTR_NEWLY_AVAILABLE +@interface MTRSoftwareDiagnosticsClusterThreadMetricsStruct : NSObject +@property (nonatomic, copy) NSNumber * _Nonnull id MTR_NEWLY_AVAILABLE; +@property (nonatomic, copy) NSString * _Nullable name MTR_NEWLY_AVAILABLE; +@property (nonatomic, copy) NSNumber * _Nullable stackFreeCurrent MTR_NEWLY_AVAILABLE; +@property (nonatomic, copy) NSNumber * _Nullable stackFreeMinimum MTR_NEWLY_AVAILABLE; +@property (nonatomic, copy) NSNumber * _Nullable stackSize MTR_NEWLY_AVAILABLE; +@end + API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) -@interface MTRSoftwareDiagnosticsClusterThreadMetrics : NSObject -@property (nonatomic, copy) NSNumber * _Nonnull id API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -@property (nonatomic, copy) NSString * _Nullable name API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -@property (nonatomic, copy) NSNumber * _Nullable stackFreeCurrent API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -@property (nonatomic, copy) NSNumber * _Nullable stackFreeMinimum API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -@property (nonatomic, copy) NSNumber * _Nullable stackSize API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +MTR_NEWLY_DEPRECATED("Please use MTRSoftwareDiagnosticsClusterThreadMetricsStruct") +@interface MTRSoftwareDiagnosticsClusterThreadMetrics : MTRSoftwareDiagnosticsClusterThreadMetricsStruct @end API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm index bdb39bf37da445..7494b574a38b3b 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm @@ -1337,7 +1337,7 @@ - (NSString *)description @end -@implementation MTRSoftwareDiagnosticsClusterThreadMetrics +@implementation MTRSoftwareDiagnosticsClusterThreadMetricsStruct - (instancetype)init { if (self = [super init]) { @@ -1357,7 +1357,7 @@ - (instancetype)init - (id)copyWithZone:(NSZone * _Nullable)zone { - auto other = [[MTRSoftwareDiagnosticsClusterThreadMetrics alloc] init]; + auto other = [[MTRSoftwareDiagnosticsClusterThreadMetricsStruct alloc] init]; other.id = self.id; other.name = self.name; @@ -1378,6 +1378,9 @@ - (NSString *)description @end +@implementation MTRSoftwareDiagnosticsClusterThreadMetrics : MTRSoftwareDiagnosticsClusterThreadMetricsStruct +@end + @implementation MTRSoftwareDiagnosticsClusterSoftwareFaultEvent - (instancetype)init { diff --git a/src/include/platform/DiagnosticDataProvider.h b/src/include/platform/DiagnosticDataProvider.h index 2f09b10f6bb77f..a1f78a4c84d2e6 100644 --- a/src/include/platform/DiagnosticDataProvider.h +++ b/src/include/platform/DiagnosticDataProvider.h @@ -45,7 +45,7 @@ constexpr size_t kMaxIPv6AddrCount = 8; using BootReasonType = app::Clusters::GeneralDiagnostics::BootReasonType; -struct ThreadMetrics : public app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::Type +struct ThreadMetrics : public app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::Type { char NameBuf[kMaxThreadNameLength + 1]; ThreadMetrics * Next; /* Pointer to the next structure. */ diff --git a/zzz_generated/app-common/app-common/zap-generated/af-structs.h b/zzz_generated/app-common/app-common/zap-generated/af-structs.h index 09a9bc00c0d718..d64c50ff29177d 100644 --- a/zzz_generated/app-common/app-common/zap-generated/af-structs.h +++ b/zzz_generated/app-common/app-common/zap-generated/af-structs.h @@ -554,15 +554,15 @@ typedef struct _ThreadInterfaceScanResult uint8_t LQI; } ThreadInterfaceScanResult; -// Struct for ThreadMetrics -typedef struct _ThreadMetrics +// Struct for ThreadMetricsStruct +typedef struct _ThreadMetricsStruct { uint64_t Id; chip::CharSpan Name; uint32_t StackFreeCurrent; uint32_t StackFreeMinimum; uint32_t StackSize; -} ThreadMetrics; +} ThreadMetricsStruct; // Struct for TimeZoneType typedef struct _TimeZoneType 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 f80dd0b9024c24..25d7f209893f6f 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 @@ -6811,7 +6811,7 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) } // namespace GeneralDiagnostics namespace SoftwareDiagnostics { namespace Structs { -namespace ThreadMetrics { +namespace ThreadMetricsStruct { CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const { TLV::TLVType outer; @@ -6866,7 +6866,7 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) return CHIP_NO_ERROR; } -} // namespace ThreadMetrics +} // namespace ThreadMetricsStruct } // namespace Structs namespace Commands { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index c85b9ce3b3a4a4..f3a677ec872cb4 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -8074,7 +8074,7 @@ struct DecodableType } // namespace GeneralDiagnostics namespace SoftwareDiagnostics { namespace Structs { -namespace ThreadMetrics { +namespace ThreadMetricsStruct { enum class Fields { kId = 0, @@ -8102,7 +8102,7 @@ struct Type using DecodableType = Type; -} // namespace ThreadMetrics +} // namespace ThreadMetricsStruct } // namespace Structs namespace Commands { @@ -8151,11 +8151,11 @@ namespace Attributes { namespace ThreadMetrics { struct TypeInfo { - using Type = chip::app::DataModel::List; + using Type = chip::app::DataModel::List; using DecodableType = - chip::app::DataModel::DecodableList; + chip::app::DataModel::DecodableList; using DecodableArgType = const chip::app::DataModel::DecodableList< - chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::DecodableType> &; + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> &; static constexpr ClusterId GetClusterId() { return Clusters::SoftwareDiagnostics::Id; } static constexpr AttributeId GetAttributeId() { return Attributes::ThreadMetrics::Id; } diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp index 31abe5f573b673..3924e62ba12553 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp @@ -2130,12 +2130,12 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::NetworkCommissioning:: ComplexArgumentParser::Finalize(request.lqi); } CHIP_ERROR ComplexArgumentParser::Setup(const char * label, - chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::Type & request, + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::Type & request, Json::Value & value) { VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT); - ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist("ThreadMetrics.id", "id", value.isMember("id"))); + ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist("ThreadMetricsStruct.id", "id", value.isMember("id"))); char labelWithMember[kMaxLabelLength]; snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "id"); @@ -2168,7 +2168,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label, return CHIP_NO_ERROR; } -void ComplexArgumentParser::Finalize(chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::Type & request) +void ComplexArgumentParser::Finalize(chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::Type & request) { ComplexArgumentParser::Finalize(request.id); ComplexArgumentParser::Finalize(request.name); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h index 84df4a86847d1c..89ce99d793ff73 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h @@ -246,10 +246,10 @@ static CHIP_ERROR Setup(const char * label, Json::Value & value); static void Finalize(chip::app::Clusters::NetworkCommissioning::Structs::ThreadInterfaceScanResult::Type & request); -static CHIP_ERROR Setup(const char * label, chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::Type & request, +static CHIP_ERROR Setup(const char * label, chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::Type & request, Json::Value & value); -static void Finalize(chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::Type & request); +static void Finalize(chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::Type & request); static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TimeSynchronization::Structs::TimeZoneType::Type & request, Json::Value & value); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 813f47039f85fa..f8623e6c8b5e3d 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -2283,8 +2283,9 @@ CHIP_ERROR DataModelLogger::LogValue( return CHIP_NO_ERROR; } -CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, - const chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::DecodableType & value) +CHIP_ERROR +DataModelLogger::LogValue(const char * label, size_t indent, + const chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType & value) { DataModelLogger::LogString(label, indent, "{"); { @@ -5678,7 +5679,8 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP switch (path.mAttributeId) { case SoftwareDiagnostics::Attributes::ThreadMetrics::Id: { - chip::app::DataModel::DecodableList + chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("ThreadMetrics", 1, value); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h index a3a71f6bc63a46..9b3a89d3083bc5 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h @@ -134,7 +134,7 @@ static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::NetworkCommissioning::Structs::ThreadInterfaceScanResult::DecodableType & value); static CHIP_ERROR LogValue(const char * label, size_t indent, - const chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetrics::DecodableType & value); + const chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType & value); static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::TimeSynchronization::Structs::TimeZoneType::DecodableType & value); static CHIP_ERROR diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h index af6596c690186a..4b357fa3306ee8 100644 --- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h +++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h @@ -208,8 +208,8 @@ typedef void (*GeneralDiagnosticsAttributeListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*SoftwareDiagnosticsThreadMetricsListAttributeCallback)( void * context, - const chip::app::DataModel::DecodableList & - data); + const chip::app::DataModel::DecodableList< + chip::app::Clusters::SoftwareDiagnostics::Structs::ThreadMetricsStruct::DecodableType> & data); typedef void (*SoftwareDiagnosticsGeneratedCommandListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*SoftwareDiagnosticsAcceptedCommandListListAttributeCallback)( From 6395db6ad7af53a56dbdc22a35b9ac1ece64d48c Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 6 Jan 2023 12:08:22 -0500 Subject: [PATCH 06/20] Align naming in Thread Network Diagnostics cluster XML with the spec. (#24290) * Align naming in Thread Network Diagnostics cluster XML with the spec. * Auto-update ZAP files. * Regenerate generated code. --- .../all-clusters-app.matter | 22 +- .../all-clusters-common/all-clusters-app.zap | 20 +- .../all-clusters-minimal-app.matter | 22 +- .../all-clusters-minimal-app.zap | 8 +- .../bridge-common/bridge-app.matter | 22 +- .../bridge-app/bridge-common/bridge-app.zap | 8 +- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 22 +- ...noip_rootnode_dimmablelight_bCwGYSDpoe.zap | 8 +- ...tnode_colortemperaturelight_hbUnzYVeyn.zap | 8 +- .../rootnode_contactsensor_lFAGG1bfRO.zap | 8 +- .../rootnode_dimmablelight_bCwGYSDpoe.zap | 8 +- .../devices/rootnode_doorlock_aNKYAreMXE.zap | 8 +- ...rootnode_extendedcolorlight_8lcaaYJVAa.zap | 8 +- .../chef/devices/rootnode_fan_7N2TobIlOX.zap | 8 +- .../rootnode_flowsensor_1zVxHedlaV.zap | 8 +- ...rootnode_heatingcoolingunit_ncdGai1E5a.zap | 8 +- .../rootnode_humiditysensor_Xyj4gda6Hb.zap | 8 +- .../rootnode_lightsensor_lZQycTFcJK.zap | 8 +- .../rootnode_occupancysensor_iHyVgifZuo.zap | 8 +- .../rootnode_onofflight_bbs1b7IaOV.zap | 8 +- .../rootnode_onofflightswitch_FsPlMr090Q.zap | 8 +- .../rootnode_onoffpluginunit_Wtf8ss5EBY.zap | 8 +- .../rootnode_pressuresensor_s0qC9wLH4k.zap | 8 +- .../devices/rootnode_speaker_RpzeXdimqA.zap | 8 +- .../rootnode_temperaturesensor_Qy1zkNW7c3.zap | 8 +- .../rootnode_thermostat_bm3fb8dhYi.zap | 8 +- .../rootnode_windowcovering_RLCxaGi9Yx.zap | 8 +- .../contact-sensor-app.matter | 22 +- .../contact-sensor-app.zap | 8 +- .../bridge-common/bridge-app.matter | 22 +- .../bridge-common/bridge-app.zap | 8 +- .../light-switch-app.matter | 22 +- .../light-switch-common/light-switch-app.zap | 8 +- .../lighting-common/lighting-app.matter | 22 +- .../lighting-common/lighting-app.zap | 8 +- .../nxp/zap/lighting-on-off.matter | 22 +- .../lighting-app/nxp/zap/lighting-on-off.zap | 8 +- examples/lock-app/lock-common/lock-app.matter | 22 +- examples/lock-app/lock-common/lock-app.zap | 8 +- .../ota-provider-common/ota-provider-app.zap | 3 +- examples/pump-app/pump-common/pump-app.matter | 22 +- examples/pump-app/pump-common/pump-app.zap | 8 +- .../pump-controller-app.matter | 22 +- .../pump-controller-app.zap | 8 +- .../thermostat-common/thermostat.matter | 22 +- .../thermostat-common/thermostat.zap | 8 +- examples/tv-app/tv-common/tv-app.matter | 22 +- examples/tv-app/tv-common/tv-app.zap | 8 +- .../tv-casting-common/tv-casting-app.matter | 22 +- .../tv-casting-common/tv-casting-app.zap | 8 +- examples/window-app/common/window-app.matter | 22 +- examples/window-app/common/window-app.zap | 8 +- .../thread-network-diagnostics-server.cpp | 4 +- .../thread-network-diagnostics-cluster.xml | 17 +- .../zcl/zcl-with-test-extensions.json | 4 +- src/app/zap-templates/zcl/zcl.json | 4 +- .../data_model/controller-clusters.matter | 18 +- .../data_model/controller-clusters.zap | 8 +- .../CHIPAttributeTLVValueDecoder.cpp | 8 +- .../java/zap-generated/CHIPCallbackTypes.h | 8 +- .../java/zap-generated/CHIPReadCallbacks.cpp | 24 +- .../java/zap-generated/CHIPReadCallbacks.h | 28 +-- .../chip/devicecontroller/ChipClusters.java | 40 ++-- .../chip/devicecontroller/ChipIdLookup.java | 4 +- .../devicecontroller/ClusterInfoMapping.java | 8 +- .../devicecontroller/ClusterReadMapping.java | 32 ++- .../python/chip/clusters/CHIPClusters.py | 4 +- .../python/chip/clusters/Objects.py | 24 +- .../CHIP/templates/availability.yaml | 19 ++ .../MTRAttributeTLVValueDecoder.mm | 8 +- .../CHIP/zap-generated/MTRBaseClusters.h | 68 +++--- .../CHIP/zap-generated/MTRBaseClusters.mm | 118 +++++----- .../CHIP/zap-generated/MTRCallbackBridge.h | 211 +++++++++--------- .../CHIP/zap-generated/MTRCallbackBridge.mm | 45 ++-- .../CHIP/zap-generated/MTRClusterConstants.h | 8 +- .../CHIP/zap-generated/MTRClusters.h | 12 +- .../CHIP/zap-generated/MTRClusters.mm | 16 +- src/platform/Linux/ThreadStackManagerImpl.cpp | 4 +- ...nericThreadStackManagerImpl_OpenThread.cpp | 4 +- src/platform/webos/ThreadStackManagerImpl.cpp | 4 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/cluster-enums-check.h | 24 +- .../app-common/zap-generated/cluster-enums.h | 16 +- .../zap-generated/cluster-objects.cpp | 8 +- .../zap-generated/cluster-objects.h | 20 +- .../app-common/zap-generated/ids/Attributes.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/cluster/Commands.h | 12 +- .../cluster/logging/DataModelLogger.cpp | 12 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/CHIPClientCallbacks.h | 4 +- .../zap-generated/cluster/Commands.h | 68 +++--- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../nxp/zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../lock-app/zap-generated/endpoint_config.h | 8 +- .../pump-app/zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../tv-app/zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- .../zap-generated/endpoint_config.h | 8 +- 105 files changed, 864 insertions(+), 835 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 223180ae8134cd..c6574c7d0c281f 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 @@ -1245,6 +1245,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -1262,11 +1267,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1306,7 +1306,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1325,7 +1325,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1340,8 +1340,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -4073,8 +4073,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 550c16da95fef7..3c22d1330745f3 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -16,12 +16,6 @@ } ], "package": [ - { - "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", - "version": "chip-v1" - }, { "pathRelativity": "relativeToZap", "path": "../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json", @@ -29,6 +23,12 @@ "category": "matter", "version": 1, "description": "Matter SDK ZCL data with some extensions" + }, + { + "pathRelativity": "relativeToZap", + "path": "../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", + "version": "chip-v1" } ], "endpointTypes": [ @@ -3745,7 +3745,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3857,7 +3857,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3873,7 +3873,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3905,7 +3905,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", 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 78a720bf22610c..685d3c8baaebde 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 @@ -1154,6 +1154,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -1171,11 +1176,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1215,7 +1215,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1234,7 +1234,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1248,8 +1248,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -3437,8 +3437,8 @@ endpoint 0 { callback attribute panId; callback attribute extendedPanId; callback attribute meshLocalPrefix; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap index 87189ce6654867..036c40d6e758d9 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap @@ -3745,7 +3745,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3857,7 +3857,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3873,7 +3873,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3905,7 +3905,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 9de6bf1da0767d..7f0a86b7458fba 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -921,6 +921,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -938,11 +943,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -982,7 +982,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1001,7 +1001,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1016,8 +1016,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1607,8 +1607,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap index 11a61720309318..05a8c7b0eb8563 100644 --- a/examples/bridge-app/bridge-common/bridge-app.zap +++ b/examples/bridge-app/bridge-common/bridge-app.zap @@ -2489,7 +2489,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -2601,7 +2601,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -2617,7 +2617,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -2649,7 +2649,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 50f9dd75620128..556c7f28d191da 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -775,6 +775,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -792,11 +797,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -836,7 +836,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -855,7 +855,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -870,8 +870,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1416,8 +1416,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap index d08112b8a74d62..8feb90af5d2898 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap @@ -2889,7 +2889,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap index b8f4d837892f1a..ca44007f107231 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap @@ -2985,7 +2985,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3097,7 +3097,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3113,7 +3113,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3145,7 +3145,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap index 8e49bac0c5fbb9..ab874e6d39e63f 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap index 622d97c5033235..1354944aa779e5 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap index cfcba042044c38..ccba2a9cec2e19 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap index 4a6c20dc3678d3..4ec448754259f1 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap index 15bea4e9f4e799..768d28a20c92ed 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap @@ -3033,7 +3033,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3145,7 +3145,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3161,7 +3161,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3193,7 +3193,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap index 05284278d50fde..81e5f23ce9e1de 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap index 44ce0f1b32df80..3050dc85bd79fc 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap index 5114019f8d73f5..f48ed0bf5f8f9b 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap index 223b4e055cda69..62cd6ac3688996 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap index 36b8f09ea009af..2eff567e5511c0 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap index f366046581c6ea..9a7af7eddea7ff 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap index 9a251571ccd7e0..0fbf1d64ed8717 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap index 905f811e581e9d..b361a49a5cd4e0 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap index 87acceec68559e..abcb11d7466e06 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap index ee674ca36239af..10c745ac7f77b7 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap index deb4316ea5b8da..a9e03c174a9bc5 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap index a275cc7a7c50d4..2cef03257232c6 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap @@ -2937,7 +2937,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3065,7 +3065,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3097,7 +3097,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap index 613186058c068a..1bd4e5fd0d199c 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap @@ -2889,7 +2889,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3001,7 +3001,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3017,7 +3017,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3049,7 +3049,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index c59e6c830e57fc..f1af2e0a468928 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -763,6 +763,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -780,11 +785,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -824,7 +824,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -843,7 +843,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -858,8 +858,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1392,8 +1392,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap index 2004ac1190ae6b..509d1b2e9cd8ef 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap @@ -2985,7 +2985,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3097,7 +3097,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3113,7 +3113,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3145,7 +3145,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index 9de6bf1da0767d..7f0a86b7458fba 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter @@ -921,6 +921,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -938,11 +943,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -982,7 +982,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1001,7 +1001,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1016,8 +1016,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1607,8 +1607,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.zap b/examples/dynamic-bridge-app/bridge-common/bridge-app.zap index 11a61720309318..05a8c7b0eb8563 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.zap +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.zap @@ -2489,7 +2489,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -2601,7 +2601,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -2617,7 +2617,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -2649,7 +2649,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", 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 4c97c8e80f6bf1..132799c0dc63b1 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 @@ -965,6 +965,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -982,11 +987,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1026,7 +1026,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1045,7 +1045,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1060,8 +1060,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1856,8 +1856,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap index 1c7a8c37ff26b6..190476c2c1e33c 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.zap +++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap @@ -2967,7 +2967,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3079,7 +3079,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3095,7 +3095,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3127,7 +3127,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index ab0b8eaa8e8860..03db5195fc4780 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -921,6 +921,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -938,11 +943,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -982,7 +982,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1001,7 +1001,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1016,8 +1016,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1843,8 +1843,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index ff918d36e23dd4..b45a4f2e407991 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -2985,7 +2985,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3097,7 +3097,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3113,7 +3113,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3145,7 +3145,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index 353a2e65b2ddb3..c76cc902b026b1 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.matter +++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter @@ -830,6 +830,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -847,11 +852,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -891,7 +891,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -910,7 +910,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -925,8 +925,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1285,8 +1285,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.zap b/examples/lighting-app/nxp/zap/lighting-on-off.zap index 4046ea39646d67..df94ff890cc37d 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.zap +++ b/examples/lighting-app/nxp/zap/lighting-on-off.zap @@ -3180,7 +3180,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3292,7 +3292,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3308,7 +3308,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3340,7 +3340,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 5bfa177b82cf5c..e7db43b163801d 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -837,6 +837,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -854,11 +859,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -898,7 +898,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -917,7 +917,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -932,8 +932,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -2029,8 +2029,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap index 0c2ca2e2f67797..015506dd44a9b8 100644 --- a/examples/lock-app/lock-common/lock-app.zap +++ b/examples/lock-app/lock-common/lock-app.zap @@ -2913,7 +2913,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3025,7 +3025,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3041,7 +3041,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3073,7 +3073,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap index 523233cbda32dd..4ffb2bf292a170 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap @@ -4943,6 +4943,5 @@ "endpointVersion": 1, "deviceIdentifier": 22 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index 729a6ad9012a7d..5ceb261f6af7cc 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -756,6 +756,11 @@ server cluster GeneralDiagnostics = 51 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -773,11 +778,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -817,7 +817,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -836,7 +836,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -850,8 +850,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1359,8 +1359,8 @@ endpoint 0 { callback attribute panId; callback attribute extendedPanId; callback attribute meshLocalPrefix; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/pump-app/pump-common/pump-app.zap b/examples/pump-app/pump-common/pump-app.zap index afde1ae3664bf4..cc1bfa9cff07e1 100644 --- a/examples/pump-app/pump-common/pump-app.zap +++ b/examples/pump-app/pump-common/pump-app.zap @@ -3497,7 +3497,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3609,7 +3609,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3625,7 +3625,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3657,7 +3657,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", 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 da44ef42b0a06b..a0d543be5c3e48 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 @@ -655,6 +655,11 @@ server cluster GeneralDiagnostics = 51 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -672,11 +677,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -716,7 +716,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -735,7 +735,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -749,8 +749,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int16u panId = 3; readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1215,8 +1215,8 @@ endpoint 0 { callback attribute panId; callback attribute extendedPanId; callback attribute meshLocalPrefix; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap index ba5eddb46d3f84..1f1484134279a6 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap @@ -3445,7 +3445,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3557,7 +3557,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3573,7 +3573,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3605,7 +3605,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index f0b8a5d7fb1713..97b18471d5130f 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -923,6 +923,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -940,11 +945,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -984,7 +984,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1003,7 +1003,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1018,8 +1018,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1638,8 +1638,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap index 6047acaa680278..dfb6c4b4d55453 100644 --- a/examples/thermostat/thermostat-common/thermostat.zap +++ b/examples/thermostat/thermostat-common/thermostat.zap @@ -2963,7 +2963,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3075,7 +3075,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3091,7 +3091,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3123,7 +3123,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 4bc33028b36fe2..6db9577d730726 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -968,6 +968,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -985,11 +990,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1029,7 +1029,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1048,7 +1048,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1063,8 +1063,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -2273,8 +2273,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap index 6e360a6df41106..82fc99cbb5bea1 100644 --- a/examples/tv-app/tv-common/tv-app.zap +++ b/examples/tv-app/tv-common/tv-app.zap @@ -2773,7 +2773,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -2885,7 +2885,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -2901,7 +2901,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -2933,7 +2933,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", 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 0fcfd6f338a89f..6fb99bc66580db 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 @@ -1140,6 +1140,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -1157,11 +1162,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1201,7 +1201,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1220,7 +1220,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1235,8 +1235,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -2287,8 +2287,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap index c4f4a0254a4324..a0fbca7594496e 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap @@ -2723,7 +2723,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -2835,7 +2835,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -2851,7 +2851,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -2883,7 +2883,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 6b0ca3d13b24e4..15227e5a90c033 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -977,6 +977,11 @@ server cluster SoftwareDiagnostics = 52 { } server cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -994,11 +999,6 @@ server cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1038,7 +1038,7 @@ server cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1057,7 +1057,7 @@ server cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1072,8 +1072,8 @@ server cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; @@ -1766,8 +1766,8 @@ endpoint 0 { callback attribute extendedPanId; callback attribute meshLocalPrefix; callback attribute overrunCount; - callback attribute neighborTableList; - callback attribute routeTableList; + callback attribute neighborTable; + callback attribute routeTable; callback attribute partitionId; callback attribute weighting; callback attribute dataVersion; diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap index 0e0e1180486cf1..2b7820f9a78062 100644 --- a/examples/window-app/common/window-app.zap +++ b/examples/window-app/common/window-app.zap @@ -3637,7 +3637,7 @@ "enabled": 1, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -3749,7 +3749,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -3765,7 +3765,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -3797,7 +3797,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp b/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp index d92228bac566f3..78cb2db208d5f7 100644 --- a/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp +++ b/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp @@ -61,8 +61,8 @@ CHIP_ERROR ThreadDiagosticsAttrAccess::Read(const ConcreteReadAttributePath & aP switch (aPath.mAttributeId) { - case ThreadNetworkDiagnostics::Attributes::NeighborTableList::Id: - case ThreadNetworkDiagnostics::Attributes::RouteTableList::Id: + case ThreadNetworkDiagnostics::Attributes::NeighborTable::Id: + case ThreadNetworkDiagnostics::Attributes::RouteTable::Id: case ThreadNetworkDiagnostics::Attributes::SecurityPolicy::Id: case ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::Id: case ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id: diff --git a/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml index c25db2add6ed29..40c9d1c3f53d97 100644 --- a/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml @@ -30,7 +30,7 @@ limitations under the License. - + @@ -68,7 +68,7 @@ limitations under the License. - + @@ -91,22 +91,20 @@ limitations under the License. 0x0035 THREAD_NETWORK_DIAGNOSTICS_CLUSTER The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems - channel + Channel RoutingRole NetworkName PanId ExtendedPanId MeshLocalPrefix - OverrunCount - NeighborTableList - RouteTableList + NeighborTable + RouteTable PartitionId - weighting + Weighting DataVersion StableDataVersion LeaderRouterId - DetachedRoleCount ChildRoleCount RouterRoleCount @@ -115,7 +113,6 @@ limitations under the License. PartitionIdChangeCount BetterPartitionAttachAttemptCount ParentChangeCount - TxTotalCount TxUnicastCount TxBroadcastCount @@ -162,7 +159,7 @@ limitations under the License. Indicate that a Node’s connection status to a Thread network has changed - + Indicate a change in the set of network faults currently detected by the Node diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json index 3fc66139e925a4..8f8541847460a1 100644 --- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json +++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json @@ -185,7 +185,7 @@ "cluster_error_boolean" ], "Thread Network Diagnostics": [ - "channel", + "Channel", "RoutingRole", "NetworkName", "PanId", @@ -193,7 +193,7 @@ "MeshLocalPrefix", "OverrunCount", "PartitionId", - "weighting", + "Weighting", "DataVersion", "StableDataVersion", "LeaderRouterId", diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json index 8634aaebb488d2..5e8b6424f9f70c 100644 --- a/src/app/zap-templates/zcl/zcl.json +++ b/src/app/zap-templates/zcl/zcl.json @@ -179,7 +179,7 @@ "cluster_error_boolean" ], "Thread Network Diagnostics": [ - "channel", + "Channel", "RoutingRole", "NetworkName", "PanId", @@ -187,7 +187,7 @@ "MeshLocalPrefix", "OverrunCount", "PartitionId", - "weighting", + "Weighting", "DataVersion", "StableDataVersion", "LeaderRouterId", diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index df1896341e69f7..98c187aafe4cdc 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -1424,6 +1424,11 @@ client cluster SoftwareDiagnostics = 52 { } client cluster ThreadNetworkDiagnostics = 53 { + enum ConnectionStatusEnum : ENUM8 { + kConnected = 0; + kNotConnected = 1; + } + enum NetworkFault : ENUM8 { kUnspecified = 0; kLinkDown = 1; @@ -1441,11 +1446,6 @@ client cluster ThreadNetworkDiagnostics = 53 { kLeader = 6; } - enum ThreadConnectionStatus : ENUM8 { - kConnected = 0; - kNotConnected = 1; - } - bitmap ThreadNetworkDiagnosticsFeature : BITMAP32 { kPacketCounts = 0x1; kErrorCounts = 0x2; @@ -1485,7 +1485,7 @@ client cluster ThreadNetworkDiagnostics = 53 { struct SecurityPolicy { int16u rotationTime = 0; - bitmap16 flags = 1; + int16u flags = 1; } struct OperationalDatasetComponents { @@ -1504,7 +1504,7 @@ client cluster ThreadNetworkDiagnostics = 53 { } info event ConnectionStatus = 0 { - ThreadConnectionStatus connectionStatus = 0; + ConnectionStatusEnum connectionStatus = 0; } info event NetworkFaultChange = 1 { @@ -1519,8 +1519,8 @@ client cluster ThreadNetworkDiagnostics = 53 { readonly attribute nullable int64u extendedPanId = 4; readonly attribute nullable octet_string<17> meshLocalPrefix = 5; readonly attribute int64u overrunCount = 6; - readonly attribute NeighborTable neighborTableList[] = 7; - readonly attribute RouteTable routeTableList[] = 8; + readonly attribute NeighborTable neighborTable[] = 7; + readonly attribute RouteTable routeTable[] = 8; readonly attribute nullable int32u partitionId = 9; readonly attribute nullable int8u weighting = 10; readonly attribute nullable int8u dataVersion = 11; diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index 2f2bfda6bfb730..c409b17ac66ccb 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -5713,7 +5713,7 @@ "enabled": 0, "attributes": [ { - "name": "channel", + "name": "Channel", "code": 0, "mfgCode": null, "side": "server", @@ -5825,7 +5825,7 @@ "reportableChange": 0 }, { - "name": "NeighborTableList", + "name": "NeighborTable", "code": 7, "mfgCode": null, "side": "server", @@ -5841,7 +5841,7 @@ "reportableChange": 0 }, { - "name": "RouteTableList", + "name": "RouteTable", "code": 8, "mfgCode": null, "side": "server", @@ -5873,7 +5873,7 @@ "reportableChange": 0 }, { - "name": "weighting", + "name": "Weighting", "code": 10, "mfgCode": null, "side": "server", diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index f20ca29d835ca5..ec79f9a7041a34 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -5591,8 +5591,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR cppValue, value); return value; } - case Attributes::NeighborTableList::Id: { - using TypeInfo = Attributes::NeighborTableList::TypeInfo; + case Attributes::NeighborTable::Id: { + using TypeInfo = Attributes::NeighborTable::TypeInfo; TypeInfo::DecodableType cppValue; *aError = app::DataModel::Decode(aReader, cppValue); if (*aError != CHIP_NO_ERROR) @@ -5733,8 +5733,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } return value; } - case Attributes::RouteTableList::Id: { - using TypeInfo = Attributes::RouteTableList::TypeInfo; + case Attributes::RouteTable::Id: { + using TypeInfo = Attributes::RouteTable::TypeInfo; TypeInfo::DecodableType cppValue; *aError = app::DataModel::Decode(aReader, cppValue); if (*aError != CHIP_NO_ERROR) diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h index 665312f6af6a13..a5748b0b95939f 100644 --- a/src/controller/java/zap-generated/CHIPCallbackTypes.h +++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h @@ -587,10 +587,10 @@ typedef void (*CHIPThreadNetworkDiagnosticsClusterMeshLocalPrefixAttributeCallba void *, chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo::DecodableArgType); typedef void (*CHIPThreadNetworkDiagnosticsClusterOverrunCountAttributeCallbackType)( void *, chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo::DecodableArgType); -typedef void (*CHIPThreadNetworkDiagnosticsClusterNeighborTableListAttributeCallbackType)( - void *, const chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo::DecodableType &); -typedef void (*CHIPThreadNetworkDiagnosticsClusterRouteTableListAttributeCallbackType)( - void *, const chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo::DecodableType &); +typedef void (*CHIPThreadNetworkDiagnosticsClusterNeighborTableAttributeCallbackType)( + void *, const chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::NeighborTable::TypeInfo::DecodableType &); +typedef void (*CHIPThreadNetworkDiagnosticsClusterRouteTableAttributeCallbackType)( + void *, const chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::RouteTable::TypeInfo::DecodableType &); typedef void (*CHIPThreadNetworkDiagnosticsClusterPartitionIdAttributeCallbackType)( void *, chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo::DecodableArgType); typedef void (*CHIPThreadNetworkDiagnosticsClusterWeightingAttributeCallbackType)( diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index 55c8d99dee83d5..c603c5e3ecfbde 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp @@ -9071,9 +9071,9 @@ void CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback::CallbackFn( env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); } -CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback( +CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback::CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback( jobject javaCallback, bool keepAlive) : - chip::Callback::Callback(CallbackFn, this), + chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive) { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); @@ -9090,7 +9090,7 @@ CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CHIPThreadNetwor } } -CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::~CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback() +CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback::~CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback() { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); if (env == nullptr) @@ -9101,7 +9101,7 @@ CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::~CHIPThreadNetwo env->DeleteGlobalRef(javaCallbackRef); } -void CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CallbackFn( +void CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback::CallbackFn( void * context, const chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> & list) @@ -9113,8 +9113,8 @@ void CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CallbackFn( VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); - std::unique_ptr cppCallback( - reinterpret_cast(context), maybeDestroy); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. javaCallbackRef = cppCallback.get()->javaCallbackRef; @@ -9260,9 +9260,9 @@ void CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CallbackFn( env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj); } -CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback( +CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback::CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback( jobject javaCallback, bool keepAlive) : - chip::Callback::Callback(CallbackFn, this), + chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive) { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); @@ -9279,7 +9279,7 @@ CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::CHIPThreadNetworkDi } } -CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::~CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback() +CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback::~CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback() { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); if (env == nullptr) @@ -9290,7 +9290,7 @@ CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::~CHIPThreadNetworkD env->DeleteGlobalRef(javaCallbackRef); } -void CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::CallbackFn( +void CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback::CallbackFn( void * context, const chip::app::DataModel::DecodableList & list) @@ -9302,8 +9302,8 @@ void CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::CallbackFn( VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); - std::unique_ptr cppCallback( - reinterpret_cast(context), maybeDestroy); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. javaCallbackRef = cppCallback.get()->javaCallbackRef; diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h index 2e9522fc900f81..9d32dfdfc966e3 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.h +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h @@ -3775,20 +3775,20 @@ class CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback bool keepAlive; }; -class CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback - : public chip::Callback::Callback +class CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback + : public chip::Callback::Callback { public: - CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback(jobject javaCallback, bool keepAlive = false); + CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback(jobject javaCallback, bool keepAlive = false); - ~CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback(); + ~CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback(); - static void maybeDestroy(CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback * callback) + static void maybeDestroy(CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback * callback) { if (!callback->keepAlive) { callback->Cancel(); - chip::Platform::Delete(callback); + chip::Platform::Delete(callback); } } @@ -3798,7 +3798,7 @@ class CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback static void OnSubscriptionEstablished(void * context) { CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished( - reinterpret_cast(context)->javaCallbackRef); + reinterpret_cast(context)->javaCallbackRef); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err))); }; @@ -3807,20 +3807,20 @@ class CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback bool keepAlive; }; -class CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback - : public chip::Callback::Callback +class CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback + : public chip::Callback::Callback { public: - CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback(jobject javaCallback, bool keepAlive = false); + CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback(jobject javaCallback, bool keepAlive = false); - ~CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback(); + ~CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback(); - static void maybeDestroy(CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback * callback) + static void maybeDestroy(CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback * callback) { if (!callback->keepAlive) { callback->Cancel(); - chip::Platform::Delete(callback); + chip::Platform::Delete(callback); } } @@ -3830,7 +3830,7 @@ class CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback static void OnSubscriptionEstablished(void * context) { CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished( - reinterpret_cast(context)->javaCallbackRef); + reinterpret_cast(context)->javaCallbackRef); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err))); }; diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index 27db8281c76b07..9f3d52253c5244 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -7217,7 +7217,7 @@ public interface MeshLocalPrefixAttributeCallback { default void onSubscriptionEstablished() {} } - public interface NeighborTableListAttributeCallback { + public interface NeighborTableAttributeCallback { void onSuccess(List valueList); void onError(Exception ex); @@ -7225,7 +7225,7 @@ public interface NeighborTableListAttributeCallback { default void onSubscriptionEstablished() {} } - public interface RouteTableListAttributeCallback { + public interface RouteTableAttributeCallback { void onSuccess(List valueList); void onError(Exception ex); @@ -7400,22 +7400,22 @@ public void subscribeOverrunCountAttribute( subscribeOverrunCountAttribute(chipClusterPtr, callback, minInterval, maxInterval); } - public void readNeighborTableListAttribute(NeighborTableListAttributeCallback callback) { - readNeighborTableListAttribute(chipClusterPtr, callback); + public void readNeighborTableAttribute(NeighborTableAttributeCallback callback) { + readNeighborTableAttribute(chipClusterPtr, callback); } - public void subscribeNeighborTableListAttribute( - NeighborTableListAttributeCallback callback, int minInterval, int maxInterval) { - subscribeNeighborTableListAttribute(chipClusterPtr, callback, minInterval, maxInterval); + public void subscribeNeighborTableAttribute( + NeighborTableAttributeCallback callback, int minInterval, int maxInterval) { + subscribeNeighborTableAttribute(chipClusterPtr, callback, minInterval, maxInterval); } - public void readRouteTableListAttribute(RouteTableListAttributeCallback callback) { - readRouteTableListAttribute(chipClusterPtr, callback); + public void readRouteTableAttribute(RouteTableAttributeCallback callback) { + readRouteTableAttribute(chipClusterPtr, callback); } - public void subscribeRouteTableListAttribute( - RouteTableListAttributeCallback callback, int minInterval, int maxInterval) { - subscribeRouteTableListAttribute(chipClusterPtr, callback, minInterval, maxInterval); + public void subscribeRouteTableAttribute( + RouteTableAttributeCallback callback, int minInterval, int maxInterval) { + subscribeRouteTableAttribute(chipClusterPtr, callback, minInterval, maxInterval); } public void readPartitionIdAttribute(PartitionIdAttributeCallback callback) { @@ -7990,21 +7990,21 @@ private native void readOverrunCountAttribute( private native void subscribeOverrunCountAttribute( long chipClusterPtr, LongAttributeCallback callback, int minInterval, int maxInterval); - private native void readNeighborTableListAttribute( - long chipClusterPtr, NeighborTableListAttributeCallback callback); + private native void readNeighborTableAttribute( + long chipClusterPtr, NeighborTableAttributeCallback callback); - private native void subscribeNeighborTableListAttribute( + private native void subscribeNeighborTableAttribute( long chipClusterPtr, - NeighborTableListAttributeCallback callback, + NeighborTableAttributeCallback callback, int minInterval, int maxInterval); - private native void readRouteTableListAttribute( - long chipClusterPtr, RouteTableListAttributeCallback callback); + private native void readRouteTableAttribute( + long chipClusterPtr, RouteTableAttributeCallback callback); - private native void subscribeRouteTableListAttribute( + private native void subscribeRouteTableAttribute( long chipClusterPtr, - RouteTableListAttributeCallback callback, + RouteTableAttributeCallback callback, int minInterval, int maxInterval); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java index 195215f6e8f56d..283f7f1d947f78 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java @@ -1055,10 +1055,10 @@ public static String attributeIdToName(long clusterId, long attributeId) { return "OverrunCount"; } if (attributeId == 7L) { - return "NeighborTableList"; + return "NeighborTable"; } if (attributeId == 8L) { - return "RouteTableList"; + return "RouteTable"; } if (attributeId == 9L) { return "PartitionId"; diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java index 18703c4ba2c230..b66c3be90ad143 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java @@ -2871,8 +2871,8 @@ public void onError(Exception ex) { } } - public static class DelegatedThreadNetworkDiagnosticsClusterNeighborTableListAttributeCallback - implements ChipClusters.ThreadNetworkDiagnosticsCluster.NeighborTableListAttributeCallback, + public static class DelegatedThreadNetworkDiagnosticsClusterNeighborTableAttributeCallback + implements ChipClusters.ThreadNetworkDiagnosticsCluster.NeighborTableAttributeCallback, DelegatedClusterCallback { private ClusterCommandCallback callback; @@ -2898,8 +2898,8 @@ public void onError(Exception ex) { } } - public static class DelegatedThreadNetworkDiagnosticsClusterRouteTableListAttributeCallback - implements ChipClusters.ThreadNetworkDiagnosticsCluster.RouteTableListAttributeCallback, + public static class DelegatedThreadNetworkDiagnosticsClusterRouteTableAttributeCallback + implements ChipClusters.ThreadNetworkDiagnosticsCluster.RouteTableAttributeCallback, DelegatedClusterCallback { private ClusterCommandCallback callback; diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java index 0a8c4151b11748..b580eba99b8c01 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java @@ -3555,41 +3555,39 @@ public Map> getReadAttributeMap() { readThreadNetworkDiagnosticsInteractionInfo.put( "readOverrunCountAttribute", readThreadNetworkDiagnosticsOverrunCountAttributeInteractionInfo); - Map readThreadNetworkDiagnosticsNeighborTableListCommandParams = + Map readThreadNetworkDiagnosticsNeighborTableCommandParams = new LinkedHashMap(); - InteractionInfo readThreadNetworkDiagnosticsNeighborTableListAttributeInteractionInfo = + InteractionInfo readThreadNetworkDiagnosticsNeighborTableAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster) - .readNeighborTableListAttribute( - (ChipClusters.ThreadNetworkDiagnosticsCluster - .NeighborTableListAttributeCallback) + .readNeighborTableAttribute( + (ChipClusters.ThreadNetworkDiagnosticsCluster.NeighborTableAttributeCallback) callback); }, () -> new ClusterInfoMapping - .DelegatedThreadNetworkDiagnosticsClusterNeighborTableListAttributeCallback(), - readThreadNetworkDiagnosticsNeighborTableListCommandParams); + .DelegatedThreadNetworkDiagnosticsClusterNeighborTableAttributeCallback(), + readThreadNetworkDiagnosticsNeighborTableCommandParams); readThreadNetworkDiagnosticsInteractionInfo.put( - "readNeighborTableListAttribute", - readThreadNetworkDiagnosticsNeighborTableListAttributeInteractionInfo); - Map readThreadNetworkDiagnosticsRouteTableListCommandParams = + "readNeighborTableAttribute", + readThreadNetworkDiagnosticsNeighborTableAttributeInteractionInfo); + Map readThreadNetworkDiagnosticsRouteTableCommandParams = new LinkedHashMap(); - InteractionInfo readThreadNetworkDiagnosticsRouteTableListAttributeInteractionInfo = + InteractionInfo readThreadNetworkDiagnosticsRouteTableAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster) - .readRouteTableListAttribute( - (ChipClusters.ThreadNetworkDiagnosticsCluster.RouteTableListAttributeCallback) + .readRouteTableAttribute( + (ChipClusters.ThreadNetworkDiagnosticsCluster.RouteTableAttributeCallback) callback); }, () -> new ClusterInfoMapping - .DelegatedThreadNetworkDiagnosticsClusterRouteTableListAttributeCallback(), - readThreadNetworkDiagnosticsRouteTableListCommandParams); + .DelegatedThreadNetworkDiagnosticsClusterRouteTableAttributeCallback(), + readThreadNetworkDiagnosticsRouteTableCommandParams); readThreadNetworkDiagnosticsInteractionInfo.put( - "readRouteTableListAttribute", - readThreadNetworkDiagnosticsRouteTableListAttributeInteractionInfo); + "readRouteTableAttribute", readThreadNetworkDiagnosticsRouteTableAttributeInteractionInfo); Map readThreadNetworkDiagnosticsPartitionIdCommandParams = new LinkedHashMap(); InteractionInfo readThreadNetworkDiagnosticsPartitionIdAttributeInteractionInfo = diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py index 4698b39f7bd6f5..c5b4f9a33ce088 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.py +++ b/src/controller/python/chip/clusters/CHIPClusters.py @@ -2239,13 +2239,13 @@ class ChipClusters: "reportable": True, }, 0x00000007: { - "attributeName": "NeighborTableList", + "attributeName": "NeighborTable", "attributeId": 0x00000007, "type": "", "reportable": True, }, 0x00000008: { - "attributeName": "RouteTableList", + "attributeName": "RouteTable", "attributeId": 0x00000008, "type": "", "reportable": True, diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 0020b94c7339b1..fdc31f2dd4c5b1 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -7942,8 +7942,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="extendedPanId", Tag=0x00000004, Type=typing.Union[Nullable, uint]), ClusterObjectFieldDescriptor(Label="meshLocalPrefix", Tag=0x00000005, Type=typing.Union[Nullable, bytes]), ClusterObjectFieldDescriptor(Label="overrunCount", Tag=0x00000006, Type=typing.Optional[uint]), - ClusterObjectFieldDescriptor(Label="neighborTableList", Tag=0x00000007, Type=typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]), - ClusterObjectFieldDescriptor(Label="routeTableList", Tag=0x00000008, Type=typing.List[ThreadNetworkDiagnostics.Structs.RouteTable]), + ClusterObjectFieldDescriptor(Label="neighborTable", Tag=0x00000007, Type=typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]), + ClusterObjectFieldDescriptor(Label="routeTable", Tag=0x00000008, Type=typing.List[ThreadNetworkDiagnostics.Structs.RouteTable]), ClusterObjectFieldDescriptor(Label="partitionId", Tag=0x00000009, Type=typing.Union[Nullable, uint]), ClusterObjectFieldDescriptor(Label="weighting", Tag=0x0000000A, Type=typing.Union[Nullable, uint]), ClusterObjectFieldDescriptor(Label="dataVersion", Tag=0x0000000B, Type=typing.Union[Nullable, uint]), @@ -8012,8 +8012,8 @@ def descriptor(cls) -> ClusterObjectDescriptor: extendedPanId: 'typing.Union[Nullable, uint]' = None meshLocalPrefix: 'typing.Union[Nullable, bytes]' = None overrunCount: 'typing.Optional[uint]' = None - neighborTableList: 'typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]' = None - routeTableList: 'typing.List[ThreadNetworkDiagnostics.Structs.RouteTable]' = None + neighborTable: 'typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]' = None + routeTable: 'typing.List[ThreadNetworkDiagnostics.Structs.RouteTable]' = None partitionId: 'typing.Union[Nullable, uint]' = None weighting: 'typing.Union[Nullable, uint]' = None dataVersion: 'typing.Union[Nullable, uint]' = None @@ -8075,6 +8075,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: clusterRevision: 'uint' = None class Enums: + class ConnectionStatusEnum(IntEnum): + kConnected = 0x00 + kNotConnected = 0x01 + class NetworkFault(IntEnum): kUnspecified = 0x00 kLinkDown = 0x01 @@ -8090,10 +8094,6 @@ class RoutingRole(IntEnum): kRouter = 0x05 kLeader = 0x06 - class ThreadConnectionStatus(IntEnum): - kConnected = 0x00 - kNotConnected = 0x01 - class Structs: @dataclass @@ -8340,7 +8340,7 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.Optional[uint]' = None @dataclass - class NeighborTableList(ClusterAttributeDescriptor): + class NeighborTable(ClusterAttributeDescriptor): @ChipUtility.classproperty def cluster_id(cls) -> int: return 0x0035 @@ -8356,7 +8356,7 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]' = field(default_factory=lambda: []) @dataclass - class RouteTableList(ClusterAttributeDescriptor): + class RouteTable(ClusterAttributeDescriptor): @ChipUtility.classproperty def cluster_id(cls) -> int: return 0x0035 @@ -9331,10 +9331,10 @@ def event_id(cls) -> int: def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields = [ - ClusterObjectFieldDescriptor(Label="connectionStatus", Tag=0, Type=ThreadNetworkDiagnostics.Enums.ThreadConnectionStatus), + ClusterObjectFieldDescriptor(Label="connectionStatus", Tag=0, Type=ThreadNetworkDiagnostics.Enums.ConnectionStatusEnum), ]) - connectionStatus: 'ThreadNetworkDiagnostics.Enums.ThreadConnectionStatus' = 0 + connectionStatus: 'ThreadNetworkDiagnostics.Enums.ConnectionStatusEnum' = 0 @dataclass class NetworkFaultChange(ClusterEvent): diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml index 45e38a38952c97..d0c3349e016621 100644 --- a/src/darwin/Framework/CHIP/templates/availability.yaml +++ b/src/darwin/Framework/CHIP/templates/availability.yaml @@ -4715,6 +4715,9 @@ - AttributeList - FeatureMap - ClusterRevision + ThreadNetworkDiagnostics: + - NeighborTable + - RouteTable commands: OTASoftwareUpdateProvider: - QueryImage @@ -5119,6 +5122,8 @@ AccessControl: - AccessControlEntryPrivilegeEnum - AccessControlEntryAuthModeEnum + ThreadNetworkDiagnostics: + - ConnectionStatusEnum enum values: OTASoftwareUpdateProvider: OTAApplyUpdateAction: @@ -5179,6 +5184,10 @@ PowerSource: BatChargeLevel: - OK + ThreadNetworkDiagnostics: + ConnectionStatusEnum: + - Connected + - NotConnected bitmaps: UnitTesting: - Bitmap8MaskMap @@ -5240,6 +5249,9 @@ - PirOccupiedToUnoccupiedDelay - PirUnoccupiedToOccupiedDelay - PirUnoccupiedToOccupiedThreshold + ThreadNetworkDiagnostics: + - NeighborTableList + - RouteTableList command fields: Groups: AddGroup: @@ -5287,6 +5299,8 @@ AccessControl: - Privilege - AuthMode + ThreadNetworkDiagnostics: + - ThreadConnectionStatus enum values: GeneralCommissioning: CommissioningError: @@ -5326,6 +5340,9 @@ PIRUnoccupiedToOccupiedThreshold: PirUnoccupiedToOccupiedThreshold OTASoftwareUpdateRequestor: DefaultOTAProviders: DefaultOtaProviders + ThreadNetworkDiagnostics: + NeighborTable: NeighborTableList + RouteTable: RouteTableList commands: OTASoftwareUpdateRequestor: AnnounceOTAProvider: AnnounceOtaProvider @@ -5378,6 +5395,8 @@ AccessControl: AccessControlEntryPrivilegeEnum: Privilege AccessControlEntryAuthModeEnum: AuthMode + ThreadNetworkDiagnostics: + ConnectionStatusEnum: ThreadConnectionStatus enum values: GeneralCommissioning: CommissioningError: diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm index 4aa9e051b6118c..56457b9a04d0cd 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm @@ -4901,8 +4901,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader & value = [NSNumber numberWithUnsignedLongLong:cppValue]; return value; } - case Attributes::NeighborTableList::Id: { - using TypeInfo = Attributes::NeighborTableList::TypeInfo; + case Attributes::NeighborTable::Id: { + using TypeInfo = Attributes::NeighborTable::TypeInfo; TypeInfo::DecodableType cppValue; *aError = DataModel::Decode(aReader, cppValue); if (*aError != CHIP_NO_ERROR) { @@ -4949,8 +4949,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader & } return value; } - case Attributes::RouteTableList::Id: { - using TypeInfo = Attributes::RouteTableList::TypeInfo; + case Attributes::RouteTable::Id: { + using TypeInfo = Attributes::RouteTable::TypeInfo; TypeInfo::DecodableType cppValue; *aError = DataModel::Decode(aReader, cppValue); if (*aError != CHIP_NO_ERROR) { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 0934f592496b57..4c636b3e78a6e6 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -4322,28 +4322,28 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)readAttributeNeighborTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeNeighborTableWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams *)params - subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished - reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler +- (void)subscribeAttributeNeighborTableWithParams:(MTRSubscribeParams *)params + subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished + reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler + MTR_NEWLY_AVAILABLE; ++ (void)readAttributeNeighborTableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -+ (void)readAttributeNeighborTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer - endpoint:(NSNumber *)endpoint - queue:(dispatch_queue_t)queue - completion:(void (^)(NSArray * _Nullable value, - NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)readAttributeRouteTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeRouteTableWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams *)params - subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished - reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler +- (void)subscribeAttributeRouteTableWithParams:(MTRSubscribeParams *)params + subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished + reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE; -+ (void)readAttributeRouteTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer - endpoint:(NSNumber *)endpoint - queue:(dispatch_queue_t)queue - completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion ++ (void)readAttributeRouteTableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; - (void)readAttributePartitionIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion @@ -17615,6 +17615,21 @@ typedef NS_OPTIONS(uint32_t, MTRSoftwareDiagnosticsFeature) { MTRSoftwareDiagnosticsFeatureWaterMarks API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x1, } API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +typedef NS_ENUM(uint8_t, MTRThreadNetworkDiagnosticsConnectionStatus) { + MTRThreadNetworkDiagnosticsConnectionStatusConnected MTR_NEWLY_AVAILABLE = 0x00, + MTRThreadNetworkDiagnosticsConnectionStatusNotConnected MTR_NEWLY_AVAILABLE = 0x01, +} MTR_NEWLY_AVAILABLE; + +typedef NS_ENUM(uint8_t, MTRThreadNetworkDiagnosticsThreadConnectionStatus) { + MTRThreadNetworkDiagnosticsThreadConnectionStatusConnected API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRThreadNetworkDiagnosticsConnectionStatusConnected") + = 0x00, + MTRThreadNetworkDiagnosticsThreadConnectionStatusNotConnected API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRThreadNetworkDiagnosticsConnectionStatusNotConnected") + = 0x01, +} API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRThreadNetworkDiagnosticsConnectionStatus"); + typedef NS_ENUM(uint8_t, MTRThreadNetworkDiagnosticsNetworkFault) { MTRThreadNetworkDiagnosticsNetworkFaultUnspecified API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00, MTRThreadNetworkDiagnosticsNetworkFaultLinkDown API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01, @@ -17632,13 +17647,6 @@ typedef NS_ENUM(uint8_t, MTRThreadNetworkDiagnosticsRoutingRole) { MTRThreadNetworkDiagnosticsRoutingRoleLeader API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x06, } API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -typedef NS_ENUM(uint8_t, MTRThreadNetworkDiagnosticsThreadConnectionStatus) { - MTRThreadNetworkDiagnosticsThreadConnectionStatusConnected API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - = 0x00, - MTRThreadNetworkDiagnosticsThreadConnectionStatusNotConnected API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - = 0x01, -} API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); - typedef NS_OPTIONS(uint32_t, MTRThreadNetworkDiagnosticsFeature) { MTRThreadNetworkDiagnosticsFeaturePacketCounts API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x1, MTRThreadNetworkDiagnosticsFeatureErrorCounts API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x2, @@ -24844,7 +24852,7 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) { - (void)readAttributeNeighborTableListWithCompletionHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeNeighborTableListWithCompletion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeNeighborTableWithCompletion:"); - (void) subscribeAttributeNeighborTableListWithMinInterval:(NSNumber * _Nonnull)minInterval maxInterval:(NSNumber * _Nonnull)maxInterval @@ -24852,19 +24860,19 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) { subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use subscribeAttributeNeighborTableListWithParams:subscriptionEstablished:"); + MTR_NEWLY_DEPRECATED("Please use subscribeAttributeNeighborTableWithParams:subscriptionEstablished:"); + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeNeighborTableListWithAttributeCache:endpoint:queue:completion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeNeighborTableWithAttributeCache:endpoint:queue:completion:"); - (void)readAttributeRouteTableListWithCompletionHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeRouteTableListWithCompletion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeRouteTableWithCompletion:"); - (void)subscribeAttributeRouteTableListWithMinInterval:(NSNumber * _Nonnull)minInterval maxInterval:(NSNumber * _Nonnull)maxInterval params:(MTRSubscribeParams * _Nullable)params @@ -24872,14 +24880,14 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) { reportHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use subscribeAttributeRouteTableListWithParams:subscriptionEstablished:"); + MTR_NEWLY_DEPRECATED("Please use subscribeAttributeRouteTableWithParams:subscriptionEstablished:"); + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeRouteTableListWithAttributeCache:endpoint:queue:completion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeRouteTableWithAttributeCache:endpoint:queue:completion:"); - (void)readAttributePartitionIdWithCompletionHandler: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index 93619cc8647e50..af04a2fb771449 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -28172,37 +28172,35 @@ + (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheCont }); } -- (void)readAttributeNeighborTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeNeighborTableWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { MTRReadParams * params = [[MTRReadParams alloc] init]; - using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; - return MTRReadAttribute( + using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTable::TypeInfo; + return MTRReadAttribute( params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId()); } -- (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams * _Nonnull)params - subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished - reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler +- (void)subscribeAttributeNeighborTableWithParams:(MTRSubscribeParams * _Nonnull)params + subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished + reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler { - using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; - MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId()); } -+ (void)readAttributeNeighborTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer - endpoint:(NSNumber *)endpoint - queue:(dispatch_queue_t)queue - completion: - (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion ++ (void)readAttributeNeighborTableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, completion); + auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge(queue, completion); std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice, - ^(ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb) { + ^(ThreadNetworkDiagnosticsNeighborTableListAttributeCallback successCb, MTRErrorCallback failureCb) { if (clusterStateCacheContainer.cppClusterStateCache) { chip::app::ConcreteAttributePath path; - using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo; + using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTable::TypeInfo; path.mEndpointId = static_cast([endpoint unsignedShortValue]); path.mClusterId = TypeInfo::GetClusterId(); path.mAttributeId = TypeInfo::GetAttributeId(); @@ -28217,35 +28215,35 @@ + (void)readAttributeNeighborTableListWithClusterStateCache:(MTRClusterStateCach }); } -- (void)readAttributeRouteTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeRouteTableWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { MTRReadParams * params = [[MTRReadParams alloc] init]; - using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; - return MTRReadAttribute( + using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTable::TypeInfo; + return MTRReadAttribute( params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId()); } -- (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams * _Nonnull)params - subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished - reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler +- (void)subscribeAttributeRouteTableWithParams:(MTRSubscribeParams * _Nonnull)params + subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished + reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler { - using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; - MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId()); } -+ (void)readAttributeRouteTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer - endpoint:(NSNumber *)endpoint - queue:(dispatch_queue_t)queue - completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion ++ (void)readAttributeRouteTableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { - auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, completion); + auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge(queue, completion); std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice, - ^(ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb) { + ^(ThreadNetworkDiagnosticsRouteTableListAttributeCallback successCb, MTRErrorCallback failureCb) { if (clusterStateCacheContainer.cppClusterStateCache) { chip::app::ConcreteAttributePath path; - using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo; + using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTable::TypeInfo; path.mEndpointId = static_cast([endpoint unsignedShortValue]); path.mClusterId = TypeInfo::GetClusterId(); path.mAttributeId = TypeInfo::GetAttributeId(); @@ -31194,7 +31192,7 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer - (void)readAttributeNeighborTableListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeNeighborTableListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { + [self readAttributeNeighborTableWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { // Cast is safe because subclass does not add any selectors. completionHandler(static_cast(value), error); }]; @@ -31213,12 +31211,12 @@ - (void)readAttributeNeighborTableListWithCompletionHandler:(void (^)(NSArray * subscribeParams.minInterval = minInterval; subscribeParams.maxInterval = maxInterval; } - [self subscribeAttributeNeighborTableListWithParams:subscribeParams - subscriptionEstablished:subscriptionEstablishedHandler - reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) { - // Cast is safe because subclass does not add any selectors. - reportHandler(static_cast(value), error); - }]; + [self subscribeAttributeNeighborTableWithParams:subscribeParams + subscriptionEstablished:subscriptionEstablishedHandler + reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) { + // Cast is safe because subclass does not add any selectors. + reportHandler(static_cast(value), error); + }]; } + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint @@ -31226,19 +31224,19 @@ + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheConta completionHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeNeighborTableListWithClusterStateCache:attributeCacheContainer.realContainer - endpoint:endpoint - queue:queue - completion:^(NSArray * _Nullable value, NSError * _Nullable error) { - // Cast is safe because subclass does not add any selectors. - completionHandler(static_cast(value), error); - }]; + [self readAttributeNeighborTableWithClusterStateCache:attributeCacheContainer.realContainer + endpoint:endpoint + queue:queue + completion:^(NSArray * _Nullable value, NSError * _Nullable error) { + // Cast is safe because subclass does not add any selectors. + completionHandler(static_cast(value), error); + }]; } - (void)readAttributeRouteTableListWithCompletionHandler:(void (^)( NSArray * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeRouteTableListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { + [self readAttributeRouteTableWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { // Cast is safe because subclass does not add any selectors. completionHandler(static_cast(value), error); }]; @@ -31257,12 +31255,12 @@ - (void)subscribeAttributeRouteTableListWithMinInterval:(NSNumber * _Nonnull)min subscribeParams.minInterval = minInterval; subscribeParams.maxInterval = maxInterval; } - [self subscribeAttributeRouteTableListWithParams:subscribeParams - subscriptionEstablished:subscriptionEstablishedHandler - reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) { - // Cast is safe because subclass does not add any selectors. - reportHandler(static_cast(value), error); - }]; + [self subscribeAttributeRouteTableWithParams:subscribeParams + subscriptionEstablished:subscriptionEstablishedHandler + reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) { + // Cast is safe because subclass does not add any selectors. + reportHandler(static_cast(value), error); + }]; } + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint @@ -31270,13 +31268,13 @@ + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContaine completionHandler: (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeRouteTableListWithClusterStateCache:attributeCacheContainer.realContainer - endpoint:endpoint - queue:queue - completion:^(NSArray * _Nullable value, NSError * _Nullable error) { - // Cast is safe because subclass does not add any selectors. - completionHandler(static_cast(value), error); - }]; + [self readAttributeRouteTableWithClusterStateCache:attributeCacheContainer.realContainer + endpoint:endpoint + queue:queue + completion:^(NSArray * _Nullable value, NSError * _Nullable error) { + // Cast is safe because subclass does not add any selectors. + completionHandler(static_cast(value), error); + }]; } - (void)readAttributePartitionIdWithCompletionHandler:(void (^)( diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h index 71847e7d45e82e..d7225704cd7da2 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h @@ -295,6 +295,10 @@ typedef void (*GeneralDiagnosticsClusterRadioFaultTypeAttributeCallback)(void *, chip::app::Clusters::GeneralDiagnostics::RadioFaultType); typedef void (*NullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallback)( void *, const chip::app::DataModel::Nullable &); +typedef void (*ThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallback)( + void *, chip::app::Clusters::ThreadNetworkDiagnostics::ConnectionStatusEnum); +typedef void (*NullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallback)( + void *, const chip::app::DataModel::Nullable &); typedef void (*ThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallback)( void *, chip::app::Clusters::ThreadNetworkDiagnostics::NetworkFault); typedef void (*NullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallback)( @@ -303,10 +307,6 @@ typedef void (*ThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback)( void *, chip::app::Clusters::ThreadNetworkDiagnostics::RoutingRole); typedef void (*NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback)( void *, const chip::app::DataModel::Nullable &); -typedef void (*ThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallback)( - void *, chip::app::Clusters::ThreadNetworkDiagnostics::ThreadConnectionStatus); -typedef void (*NullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallback)( - void *, const chip::app::DataModel::Nullable &); typedef void (*WiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallback)( void *, chip::app::Clusters::WiFiNetworkDiagnostics::AssociationFailureCause); typedef void (*NullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallback)( @@ -745,11 +745,11 @@ typedef void (*SoftwareDiagnosticsAcceptedCommandListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*SoftwareDiagnosticsAttributeListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); -typedef void (*ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback)( +typedef void (*ThreadNetworkDiagnosticsNeighborTableListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> & data); -typedef void (*ThreadNetworkDiagnosticsRouteTableListListAttributeCallback)( +typedef void (*ThreadNetworkDiagnosticsRouteTableListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); @@ -5138,71 +5138,71 @@ class MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge MTRSubscriptionEstablishedHandler mEstablishedHandler; }; -class MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge - : public MTRCallbackBridge +class MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge + : public MTRCallbackBridge { public: - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) : - MTRCallbackBridge(queue, handler, OnSuccessFn){}; + MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) : + MTRCallbackBridge(queue, handler, OnSuccessFn){}; - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRActionBlock action) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn){}; + MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> & value); }; -class MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge - : public MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge +class MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackSubscriptionBridge + : public MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge { public: - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge( + MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackSubscriptionBridge( dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, handler, action), + MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge(queue, handler, action), mEstablishedHandler(establishedHandler) {} void OnSubscriptionEstablished(); - using MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge::KeepAliveOnCallback; - using MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge::OnDone; + using MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge::KeepAliveOnCallback; + using MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge::OnDone; private: MTRSubscriptionEstablishedHandler mEstablishedHandler; }; -class MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge - : public MTRCallbackBridge +class MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge + : public MTRCallbackBridge { public: - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) : - MTRCallbackBridge(queue, handler, OnSuccessFn){}; + MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) : + MTRCallbackBridge(queue, handler, OnSuccessFn){}; - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRActionBlock action) : - MTRCallbackBridge(queue, handler, action, OnSuccessFn){}; + MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action) : + MTRCallbackBridge(queue, handler, action, OnSuccessFn){}; static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::RouteTable::DecodableType> & value); }; -class MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge - : public MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge +class MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackSubscriptionBridge + : public MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge { public: - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge( + MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackSubscriptionBridge( dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, handler, action), + MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge(queue, handler, action), mEstablishedHandler(establishedHandler) {} void OnSubscriptionEstablished(); - using MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge::KeepAliveOnCallback; - using MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge::OnDone; + using MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge::KeepAliveOnCallback; + using MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge::OnDone; private: MTRSubscriptionEstablishedHandler mEstablishedHandler; @@ -14714,6 +14714,79 @@ class MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscri MTRSubscriptionEstablishedHandler mEstablishedHandler; }; +class MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge + : public MTRCallbackBridge +{ +public: + MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) : + MTRCallbackBridge(queue, handler, OnSuccessFn){}; + + MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, + MTRActionBlock action) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn){}; + + static void OnSuccessFn(void * context, chip::app::Clusters::ThreadNetworkDiagnostics::ConnectionStatusEnum value); +}; + +class MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackSubscriptionBridge + : public MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge +{ +public: + MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackSubscriptionBridge( + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + MTRSubscriptionEstablishedHandler establishedHandler) : + MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge(queue, handler, action), + mEstablishedHandler(establishedHandler) + {} + + void OnSubscriptionEstablished(); + using MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge::KeepAliveOnCallback; + using MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge::OnDone; + +private: + MTRSubscriptionEstablishedHandler mEstablishedHandler; +}; + +class MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge + : public MTRCallbackBridge +{ +public: + MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler) : + MTRCallbackBridge(queue, handler, + OnSuccessFn){}; + + MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge(dispatch_queue_t queue, + ResponseHandler handler, + MTRActionBlock action) : + MTRCallbackBridge(queue, handler, action, + OnSuccessFn){}; + + static void + OnSuccessFn(void * context, + const chip::app::DataModel::Nullable & value); +}; + +class MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackSubscriptionBridge + : public MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge +{ +public: + MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackSubscriptionBridge( + dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, + MTRSubscriptionEstablishedHandler establishedHandler) : + MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge(queue, handler, action), + mEstablishedHandler(establishedHandler) + {} + + void OnSubscriptionEstablished(); + using MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge::KeepAliveOnCallback; + using MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge::OnDone; + +private: + MTRSubscriptionEstablishedHandler mEstablishedHandler; +}; + class MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge : public MTRCallbackBridge { @@ -14852,80 +14925,6 @@ class MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubs MTRSubscriptionEstablishedHandler mEstablishedHandler; }; -class MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge - : public MTRCallbackBridge -{ -public: - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, - ResponseHandler handler) : - MTRCallbackBridge(queue, handler, OnSuccessFn){}; - - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - MTRActionBlock action) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn){}; - - static void OnSuccessFn(void * context, chip::app::Clusters::ThreadNetworkDiagnostics::ThreadConnectionStatus value); -}; - -class MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge - : public MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge -{ -public: - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, handler, action), - mEstablishedHandler(establishedHandler) - {} - - void OnSubscriptionEstablished(); - using MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::KeepAliveOnCallback; - using MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::OnDone; - -private: - MTRSubscriptionEstablishedHandler mEstablishedHandler; -}; - -class MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge - : public MTRCallbackBridge -{ -public: - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, - ResponseHandler handler) : - MTRCallbackBridge(queue, handler, - OnSuccessFn){}; - - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(dispatch_queue_t queue, - ResponseHandler handler, - MTRActionBlock action) : - MTRCallbackBridge(queue, handler, action, - OnSuccessFn){}; - - static void OnSuccessFn( - void * context, - const chip::app::DataModel::Nullable & value); -}; - -class MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge - : public MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge -{ -public: - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge( - dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action, - MTRSubscriptionEstablishedHandler establishedHandler) : - MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge(queue, handler, action), - mEstablishedHandler(establishedHandler) - {} - - void OnSubscriptionEstablished(); - using MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::KeepAliveOnCallback; - using MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::OnDone; - -private: - MTRSubscriptionEstablishedHandler mEstablishedHandler; -}; - class MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge : public MTRCallbackBridge { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm index b1656757774c3c..0b5d84469441f1 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm @@ -4545,7 +4545,7 @@ } } -void MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge::OnSuccessFn(void * context, +void MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackBridge::OnSuccessFn(void * context, const chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> & value) { @@ -4591,7 +4591,7 @@ DispatchSuccess(context, objCValue); }; -void MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRThreadNetworkDiagnosticsNeighborTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -4606,7 +4606,7 @@ } } -void MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge::OnSuccessFn(void * context, +void MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackBridge::OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value) { @@ -4640,7 +4640,7 @@ DispatchSuccess(context, objCValue); }; -void MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRThreadNetworkDiagnosticsRouteTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -15309,15 +15309,15 @@ } } -void MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::OnSuccessFn( - void * context, chip::app::Clusters::ThreadNetworkDiagnostics::NetworkFault value) +void MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge::OnSuccessFn( + void * context, chip::app::Clusters::ThreadNetworkDiagnostics::ConnectionStatusEnum value) { NSNumber * _Nonnull objCValue; objCValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(value)]; DispatchSuccess(context, objCValue); }; -void MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -15332,8 +15332,8 @@ } } -void MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::OnSuccessFn( - void * context, const chip::app::DataModel::Nullable & value) +void MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackBridge::OnSuccessFn(void * context, + const chip::app::DataModel::Nullable & value) { NSNumber * _Nullable objCValue; if (value.IsNull()) { @@ -15344,7 +15344,7 @@ DispatchSuccess(context, objCValue); }; -void MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRNullableThreadNetworkDiagnosticsClusterConnectionStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -15359,15 +15359,15 @@ } } -void MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::OnSuccessFn( - void * context, chip::app::Clusters::ThreadNetworkDiagnostics::RoutingRole value) +void MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::OnSuccessFn( + void * context, chip::app::Clusters::ThreadNetworkDiagnostics::NetworkFault value) { NSNumber * _Nonnull objCValue; objCValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(value)]; DispatchSuccess(context, objCValue); }; -void MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -15382,8 +15382,8 @@ } } -void MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::OnSuccessFn( - void * context, const chip::app::DataModel::Nullable & value) +void MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::OnSuccessFn( + void * context, const chip::app::DataModel::Nullable & value) { NSNumber * _Nullable objCValue; if (value.IsNull()) { @@ -15394,7 +15394,7 @@ DispatchSuccess(context, objCValue); }; -void MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -15409,15 +15409,15 @@ } } -void MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::OnSuccessFn( - void * context, chip::app::Clusters::ThreadNetworkDiagnostics::ThreadConnectionStatus value) +void MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::OnSuccessFn( + void * context, chip::app::Clusters::ThreadNetworkDiagnostics::RoutingRole value) { NSNumber * _Nonnull objCValue; objCValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(value)]; DispatchSuccess(context, objCValue); }; -void MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() +void MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; @@ -15432,8 +15432,8 @@ } } -void MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::OnSuccessFn(void * context, - const chip::app::DataModel::Nullable & value) +void MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::OnSuccessFn( + void * context, const chip::app::DataModel::Nullable & value) { NSNumber * _Nullable objCValue; if (value.IsNull()) { @@ -15444,8 +15444,7 @@ DispatchSuccess(context, objCValue); }; -void MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge:: - OnSubscriptionEstablished() +void MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished() { if (!mQueue) { return; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h index bdc6ae0152ada0..68c66fcb631327 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h @@ -1643,10 +1643,10 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOverrunCountID") = 0x00000006, MTRClusterThreadNetworkDiagnosticsAttributeNeighborTableListID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableListID") + MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableID") = 0x00000007, MTRClusterThreadNetworkDiagnosticsAttributeRouteTableListID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableListID") + MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableID") = 0x00000008, MTRClusterThreadNetworkDiagnosticsAttributePartitionIdID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdID") @@ -1850,8 +1850,8 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID MTR_NEWLY_AVAILABLE = 0x00000004, MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID MTR_NEWLY_AVAILABLE = 0x00000005, MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_AVAILABLE = 0x00000006, - MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableListID MTR_NEWLY_AVAILABLE = 0x00000007, - MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableListID MTR_NEWLY_AVAILABLE = 0x00000008, + MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableID MTR_NEWLY_AVAILABLE = 0x00000007, + MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableID MTR_NEWLY_AVAILABLE = 0x00000008, MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdID MTR_NEWLY_AVAILABLE = 0x00000009, MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeWeightingID MTR_NEWLY_AVAILABLE = 0x0000000A, MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDataVersionID MTR_NEWLY_AVAILABLE = 0x0000000B, diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h index d2c390fd1d0968..3861315d01fb3a 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h @@ -1722,11 +1722,9 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (NSDictionary *)readAttributeOverrunCountWithParams:(MTRReadParams * _Nullable)params API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -- (NSDictionary *)readAttributeNeighborTableListWithParams:(MTRReadParams * _Nullable)params - API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +- (NSDictionary *)readAttributeNeighborTableWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE; -- (NSDictionary *)readAttributeRouteTableListWithParams:(MTRReadParams * _Nullable)params - API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +- (NSDictionary *)readAttributeRouteTableWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE; - (NSDictionary *)readAttributePartitionIdWithParams:(MTRReadParams * _Nullable)params API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); @@ -7332,6 +7330,12 @@ MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTesting") completionHandler:(MTRStatusCompletion)completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) MTR_NEWLY_DEPRECATED("Please use resetCountsWithExpectedValues:expectedValueIntervalMs:completion:"); +- (NSDictionary *)readAttributeNeighborTableListWithParams:(MTRReadParams * _Nullable)params + API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use readAttributeNeighborTableWithParams on MTRClusterThreadNetworkDiagnostics"); +- (NSDictionary *)readAttributeRouteTableListWithParams:(MTRReadParams * _Nullable)params + API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use readAttributeRouteTableWithParams on MTRClusterThreadNetworkDiagnostics"); @end @interface MTRClusterWiFiNetworkDiagnostics (Deprecated) diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm index 218565e36c7bdc..f167157a8f7209 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm @@ -8426,19 +8426,19 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara params:params]; } -- (NSDictionary *)readAttributeNeighborTableListWithParams:(MTRReadParams * _Nullable)params +- (NSDictionary *)readAttributeNeighborTableWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID) - attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableListID) + attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableID) params:params]; } -- (NSDictionary *)readAttributeRouteTableListWithParams:(MTRReadParams * _Nullable)params +- (NSDictionary *)readAttributeRouteTableWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID) - attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableListID) + attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableID) params:params]; } @@ -8960,6 +8960,14 @@ - (void)resetCountsWithExpectedValues:(NSArray *> * expectedValueInterval:expectedValueIntervalMs completionHandler:completionHandler]; } +- (NSDictionary *)readAttributeNeighborTableListWithParams:(MTRReadParams * _Nullable)params +{ + return [self readAttributeNeighborTableWithParams:params]; +} +- (NSDictionary *)readAttributeRouteTableListWithParams:(MTRReadParams * _Nullable)params +{ + return [self readAttributeRouteTableWithParams:params]; +} @end @implementation MTRClusterWiFiNetworkDiagnostics diff --git a/src/platform/Linux/ThreadStackManagerImpl.cpp b/src/platform/Linux/ThreadStackManagerImpl.cpp index 75a6d28c803ef1..8d777b4dbedecd 100644 --- a/src/platform/Linux/ThreadStackManagerImpl.cpp +++ b/src/platform/Linux/ThreadStackManagerImpl.cpp @@ -681,8 +681,8 @@ CHIP_ERROR ThreadStackManagerImpl::_WriteThreadNetworkDiagnosticAttributeToTlv(A switch (attributeId) { - case ThreadNetworkDiagnostics::Attributes::NeighborTableList::Id: - case ThreadNetworkDiagnostics::Attributes::RouteTableList::Id: + case ThreadNetworkDiagnostics::Attributes::NeighborTable::Id: + case ThreadNetworkDiagnostics::Attributes::RouteTable::Id: case ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id: err = encoder.EncodeEmptyList(); break; diff --git a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp index 6489f967a7fa50..84e9b35fa16914 100644 --- a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp +++ b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp @@ -1138,7 +1138,7 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::_WriteThreadNetw } break; - case ThreadNetworkDiagnostics::Attributes::NeighborTableList::Id: { + case ThreadNetworkDiagnostics::Attributes::NeighborTable::Id: { err = encoder.EncodeList([this](const auto & aEncoder) -> CHIP_ERROR { constexpr uint16_t kFrameErrorRate100Percent = 0xffff; constexpr uint16_t kMessageErrorRate100Percent = 0xffff; @@ -1196,7 +1196,7 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::_WriteThreadNetw } break; - case ThreadNetworkDiagnostics::Attributes::RouteTableList::Id: { + case ThreadNetworkDiagnostics::Attributes::RouteTable::Id: { err = encoder.EncodeList([this](const auto & aEncoder) -> CHIP_ERROR { otRouterInfo routerInfo; diff --git a/src/platform/webos/ThreadStackManagerImpl.cpp b/src/platform/webos/ThreadStackManagerImpl.cpp index d16a465f36aedf..eba2d0d9033924 100644 --- a/src/platform/webos/ThreadStackManagerImpl.cpp +++ b/src/platform/webos/ThreadStackManagerImpl.cpp @@ -678,8 +678,8 @@ CHIP_ERROR ThreadStackManagerImpl::_WriteThreadNetworkDiagnosticAttributeToTlv(A switch (attributeId) { - case ThreadNetworkDiagnostics::Attributes::NeighborTableList::Id: - case ThreadNetworkDiagnostics::Attributes::RouteTableList::Id: + case ThreadNetworkDiagnostics::Attributes::NeighborTable::Id: + case ThreadNetworkDiagnostics::Attributes::RouteTable::Id: case ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id: err = encoder.EncodeEmptyList(); break; diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 9dc691a1055ab2..5a3328ccce0a6f 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -562,7 +562,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -574,12 +574,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h index 154d25138dfe81..493ab3d8f669f2 100644 --- a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h @@ -447,7 +447,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -458,12 +458,12 @@ ZAP_EMPTY_DEFAULT() }, /* ExtendedPanId */ \ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h index 353227918e2f72..bc24c491899a3c 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h @@ -800,6 +800,18 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(GeneralDiagnostics::Rad } } +static auto __attribute__((unused)) EnsureKnownEnumValue(ThreadNetworkDiagnostics::ConnectionStatusEnum val) +{ + using EnumType = ThreadNetworkDiagnostics::ConnectionStatusEnum; + switch (val) + { + case EnumType::kConnected: + case EnumType::kNotConnected: + return val; + default: + return static_cast(2); + } +} static auto __attribute__((unused)) EnsureKnownEnumValue(ThreadNetworkDiagnostics::NetworkFault val) { using EnumType = ThreadNetworkDiagnostics::NetworkFault; @@ -843,18 +855,6 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ThreadNetworkDiagnostic return static_cast(7); } } -static auto __attribute__((unused)) EnsureKnownEnumValue(ThreadNetworkDiagnostics::ThreadConnectionStatus val) -{ - using EnumType = ThreadNetworkDiagnostics::ThreadConnectionStatus; - switch (val) - { - case EnumType::kConnected: - case EnumType::kNotConnected: - return val; - default: - return static_cast(2); - } -} static auto __attribute__((unused)) EnsureKnownEnumValue(WiFiNetworkDiagnostics::AssociationFailureCause val) { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h index bb5cf6a6e78b5d..a54aa4ea87fb42 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h @@ -766,6 +766,14 @@ enum class SoftwareDiagnosticsFeature : uint32_t namespace ThreadNetworkDiagnostics { +// Enum for ConnectionStatusEnum +enum class ConnectionStatusEnum : uint8_t +{ + kConnected = 0x00, + kNotConnected = 0x01, + kUnknownEnumValue = 2, +}; + // Enum for NetworkFault enum class NetworkFault : uint8_t { @@ -796,14 +804,6 @@ using RoutingRole static RoutingRole __attribute__((unused)) kRoutingRolekUnknownEnumValue = static_cast(7); #endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM -// Enum for ThreadConnectionStatus -enum class ThreadConnectionStatus : uint8_t -{ - kConnected = 0x00, - kNotConnected = 0x01, - kUnknownEnumValue = 2, -}; - // Bitmap for ThreadNetworkDiagnosticsFeature enum class ThreadNetworkDiagnosticsFeature : uint32_t { 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 25d7f209893f6f..1ccecd57afd1cf 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 @@ -7363,11 +7363,11 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre case Attributes::OverrunCount::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, overrunCount)); break; - case Attributes::NeighborTableList::TypeInfo::GetAttributeId(): - ReturnErrorOnFailure(DataModel::Decode(reader, neighborTableList)); + case Attributes::NeighborTable::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, neighborTable)); break; - case Attributes::RouteTableList::TypeInfo::GetAttributeId(): - ReturnErrorOnFailure(DataModel::Decode(reader, routeTableList)); + case Attributes::RouteTable::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, routeTable)); break; case Attributes::PartitionId::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, partitionId)); diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index f3a677ec872cb4..6193c02cc999a3 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -8576,7 +8576,7 @@ struct TypeInfo static constexpr bool MustUseTimedWrite() { return false; } }; } // namespace OverrunCount -namespace NeighborTableList { +namespace NeighborTable { struct TypeInfo { using Type = chip::app::DataModel::List; @@ -8586,11 +8586,11 @@ struct TypeInfo chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> &; static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; } - static constexpr AttributeId GetAttributeId() { return Attributes::NeighborTableList::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::NeighborTable::Id; } static constexpr bool MustUseTimedWrite() { return false; } }; -} // namespace NeighborTableList -namespace RouteTableList { +} // namespace NeighborTable +namespace RouteTable { struct TypeInfo { using Type = chip::app::DataModel::List; @@ -8600,10 +8600,10 @@ struct TypeInfo chip::app::Clusters::ThreadNetworkDiagnostics::Structs::RouteTable::DecodableType> &; static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; } - static constexpr AttributeId GetAttributeId() { return Attributes::RouteTableList::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::RouteTable::Id; } static constexpr bool MustUseTimedWrite() { return false; } }; -} // namespace RouteTableList +} // namespace RouteTable namespace PartitionId { struct TypeInfo { @@ -9305,8 +9305,8 @@ struct TypeInfo Attributes::ExtendedPanId::TypeInfo::DecodableType extendedPanId; Attributes::MeshLocalPrefix::TypeInfo::DecodableType meshLocalPrefix; Attributes::OverrunCount::TypeInfo::DecodableType overrunCount = static_cast(0); - Attributes::NeighborTableList::TypeInfo::DecodableType neighborTableList; - Attributes::RouteTableList::TypeInfo::DecodableType routeTableList; + Attributes::NeighborTable::TypeInfo::DecodableType neighborTable; + Attributes::RouteTable::TypeInfo::DecodableType routeTable; Attributes::PartitionId::TypeInfo::DecodableType partitionId; Attributes::Weighting::TypeInfo::DecodableType weighting; Attributes::DataVersion::TypeInfo::DecodableType dataVersion; @@ -9387,7 +9387,7 @@ struct Type static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; } static constexpr bool kIsFabricScoped = false; - ThreadConnectionStatus connectionStatus = static_cast(0); + ConnectionStatusEnum connectionStatus = static_cast(0); CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const; }; @@ -9399,7 +9399,7 @@ struct DecodableType static constexpr EventId GetEventId() { return Events::ConnectionStatus::Id; } static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; } - ThreadConnectionStatus connectionStatus = static_cast(0); + ConnectionStatusEnum connectionStatus = static_cast(0); CHIP_ERROR Decode(TLV::TLVReader & reader); }; diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h index c03ad1bec6d5db..b0561b5d0b4649 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h @@ -1292,13 +1292,13 @@ namespace OverrunCount { static constexpr AttributeId Id = 0x00000006; } // namespace OverrunCount -namespace NeighborTableList { +namespace NeighborTable { static constexpr AttributeId Id = 0x00000007; -} // namespace NeighborTableList +} // namespace NeighborTable -namespace RouteTableList { +namespace RouteTable { static constexpr AttributeId Id = 0x00000008; -} // namespace RouteTableList +} // namespace RouteTable namespace PartitionId { static constexpr AttributeId Id = 0x00000009; diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h index fd09812c0d6212..24aaf968d0163f 100644 --- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h +++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h @@ -255,7 +255,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -267,12 +267,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h index 23daa85192a4cc..8202d981d9cc50 100644 --- a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h +++ b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h @@ -219,7 +219,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -231,12 +231,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 8fbfa60a3baa13..617d112ed44026 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -2696,8 +2696,8 @@ class SoftwareDiagnosticsResetWatermarks : public ClusterCommand | * ExtendedPanId | 0x0004 | | * MeshLocalPrefix | 0x0005 | | * OverrunCount | 0x0006 | -| * NeighborTableList | 0x0007 | -| * RouteTableList | 0x0008 | +| * NeighborTable | 0x0007 | +| * RouteTable | 0x0008 | | * PartitionId | 0x0009 | | * Weighting | 0x000A | | * DataVersion | 0x000B | @@ -9705,8 +9705,8 @@ void registerClusterThreadNetworkDiagnostics(Commands & commands, CredentialIssu make_unique(Id, "extended-pan-id", Attributes::ExtendedPanId::Id, credsIssuerConfig), // make_unique(Id, "mesh-local-prefix", Attributes::MeshLocalPrefix::Id, credsIssuerConfig), // make_unique(Id, "overrun-count", Attributes::OverrunCount::Id, credsIssuerConfig), // - make_unique(Id, "neighbor-table-list", Attributes::NeighborTableList::Id, credsIssuerConfig), // - make_unique(Id, "route-table-list", Attributes::RouteTableList::Id, credsIssuerConfig), // + make_unique(Id, "neighbor-table", Attributes::NeighborTable::Id, credsIssuerConfig), // + make_unique(Id, "route-table", Attributes::RouteTable::Id, credsIssuerConfig), // make_unique(Id, "partition-id", Attributes::PartitionId::Id, credsIssuerConfig), // make_unique(Id, "weighting", Attributes::Weighting::Id, credsIssuerConfig), // make_unique(Id, "data-version", Attributes::DataVersion::Id, credsIssuerConfig), // @@ -9782,8 +9782,8 @@ void registerClusterThreadNetworkDiagnostics(Commands & commands, CredentialIssu make_unique(Id, "extended-pan-id", Attributes::ExtendedPanId::Id, credsIssuerConfig), // make_unique(Id, "mesh-local-prefix", Attributes::MeshLocalPrefix::Id, credsIssuerConfig), // make_unique(Id, "overrun-count", Attributes::OverrunCount::Id, credsIssuerConfig), // - make_unique(Id, "neighbor-table-list", Attributes::NeighborTableList::Id, credsIssuerConfig), // - make_unique(Id, "route-table-list", Attributes::RouteTableList::Id, credsIssuerConfig), // + make_unique(Id, "neighbor-table", Attributes::NeighborTable::Id, credsIssuerConfig), // + make_unique(Id, "route-table", Attributes::RouteTable::Id, credsIssuerConfig), // make_unique(Id, "partition-id", Attributes::PartitionId::Id, credsIssuerConfig), // make_unique(Id, "weighting", Attributes::Weighting::Id, credsIssuerConfig), // make_unique(Id, "data-version", Attributes::DataVersion::Id, credsIssuerConfig), // diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index f8623e6c8b5e3d..1f17c983efb44d 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -5734,7 +5734,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP case ThreadNetworkDiagnostics::Attributes::Channel::Id: { chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("channel", 1, value); + return DataModelLogger::LogValue("Channel", 1, value); } case ThreadNetworkDiagnostics::Attributes::RoutingRole::Id: { chip::app::DataModel::Nullable value; @@ -5766,18 +5766,18 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("OverrunCount", 1, value); } - case ThreadNetworkDiagnostics::Attributes::NeighborTableList::Id: { + case ThreadNetworkDiagnostics::Attributes::NeighborTable::Id: { chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("NeighborTableList", 1, value); + return DataModelLogger::LogValue("NeighborTable", 1, value); } - case ThreadNetworkDiagnostics::Attributes::RouteTableList::Id: { + case ThreadNetworkDiagnostics::Attributes::RouteTable::Id: { chip::app::DataModel::DecodableList value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("RouteTableList", 1, value); + return DataModelLogger::LogValue("RouteTable", 1, value); } case ThreadNetworkDiagnostics::Attributes::PartitionId::Id: { chip::app::DataModel::Nullable value; @@ -5787,7 +5787,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP case ThreadNetworkDiagnostics::Attributes::Weighting::Id: { chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("weighting", 1, value); + return DataModelLogger::LogValue("Weighting", 1, value); } case ThreadNetworkDiagnostics::Attributes::DataVersion::Id: { chip::app::DataModel::Nullable value; diff --git a/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h index ca9bcd81f14275..9ca50455b472ef 100644 --- a/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h +++ b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h @@ -249,7 +249,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -261,12 +261,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h index 4b357fa3306ee8..d3f4385626f182 100644 --- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h +++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h @@ -216,11 +216,11 @@ typedef void (*SoftwareDiagnosticsAcceptedCommandListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*SoftwareDiagnosticsAttributeListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); -typedef void (*ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback)( +typedef void (*ThreadNetworkDiagnosticsNeighborTableListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList< chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType> & data); -typedef void (*ThreadNetworkDiagnosticsRouteTableListListAttributeCallback)( +typedef void (*ThreadNetworkDiagnosticsRouteTableListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index bbe21891c6e607..747502f9781d4e 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -23281,8 +23281,8 @@ class SubscribeAttributeSoftwareDiagnosticsClusterRevision : public SubscribeAtt | * ExtendedPanId | 0x0004 | | * MeshLocalPrefix | 0x0005 | | * OverrunCount | 0x0006 | -| * NeighborTableList | 0x0007 | -| * RouteTableList | 0x0008 | +| * NeighborTable | 0x0007 | +| * RouteTable | 0x0008 | | * PartitionId | 0x0009 | | * Weighting | 0x000A | | * DataVersion | 0x000B | @@ -23882,16 +23882,16 @@ class SubscribeAttributeThreadNetworkDiagnosticsOverrunCount : public SubscribeA }; /* - * Attribute NeighborTableList + * Attribute NeighborTable */ -class ReadThreadNetworkDiagnosticsNeighborTableList : public ReadAttribute { +class ReadThreadNetworkDiagnosticsNeighborTable : public ReadAttribute { public: - ReadThreadNetworkDiagnosticsNeighborTableList() - : ReadAttribute("neighbor-table-list") + ReadThreadNetworkDiagnosticsNeighborTable() + : ReadAttribute("neighbor-table") { } - ~ReadThreadNetworkDiagnosticsNeighborTableList() {} + ~ReadThreadNetworkDiagnosticsNeighborTable() {} CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override { @@ -23901,10 +23901,10 @@ class ReadThreadNetworkDiagnosticsNeighborTableList : public ReadAttribute { __auto_type * cluster = [[MTRBaseClusterThreadNetworkDiagnostics alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - [cluster readAttributeNeighborTableListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { - NSLog(@"ThreadNetworkDiagnostics.NeighborTableList response %@", [value description]); + [cluster readAttributeNeighborTableWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { + NSLog(@"ThreadNetworkDiagnostics.NeighborTable response %@", [value description]); if (error != nil) { - LogNSError("ThreadNetworkDiagnostics NeighborTableList read Error", error); + LogNSError("ThreadNetworkDiagnostics NeighborTable read Error", error); } SetCommandExitStatus(error); }]; @@ -23912,14 +23912,14 @@ class ReadThreadNetworkDiagnosticsNeighborTableList : public ReadAttribute { } }; -class SubscribeAttributeThreadNetworkDiagnosticsNeighborTableList : public SubscribeAttribute { +class SubscribeAttributeThreadNetworkDiagnosticsNeighborTable : public SubscribeAttribute { public: - SubscribeAttributeThreadNetworkDiagnosticsNeighborTableList() - : SubscribeAttribute("neighbor-table-list") + SubscribeAttributeThreadNetworkDiagnosticsNeighborTable() + : SubscribeAttribute("neighbor-table") { } - ~SubscribeAttributeThreadNetworkDiagnosticsNeighborTableList() {} + ~SubscribeAttributeThreadNetworkDiagnosticsNeighborTable() {} CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override { @@ -23938,12 +23938,12 @@ class SubscribeAttributeThreadNetworkDiagnosticsNeighborTableList : public Subsc if (mAutoResubscribe.HasValue()) { params.resubscribeIfLost = mAutoResubscribe.Value(); } - [cluster subscribeAttributeNeighborTableListWithParams:params + [cluster subscribeAttributeNeighborTableWithParams:params subscriptionEstablished:^() { mSubscriptionEstablished = YES; } reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) { - NSLog(@"ThreadNetworkDiagnostics.NeighborTableList response %@", [value description]); + NSLog(@"ThreadNetworkDiagnostics.NeighborTable response %@", [value description]); SetCommandExitStatus(error); }]; @@ -23952,16 +23952,16 @@ class SubscribeAttributeThreadNetworkDiagnosticsNeighborTableList : public Subsc }; /* - * Attribute RouteTableList + * Attribute RouteTable */ -class ReadThreadNetworkDiagnosticsRouteTableList : public ReadAttribute { +class ReadThreadNetworkDiagnosticsRouteTable : public ReadAttribute { public: - ReadThreadNetworkDiagnosticsRouteTableList() - : ReadAttribute("route-table-list") + ReadThreadNetworkDiagnosticsRouteTable() + : ReadAttribute("route-table") { } - ~ReadThreadNetworkDiagnosticsRouteTableList() {} + ~ReadThreadNetworkDiagnosticsRouteTable() {} CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override { @@ -23971,10 +23971,10 @@ class ReadThreadNetworkDiagnosticsRouteTableList : public ReadAttribute { __auto_type * cluster = [[MTRBaseClusterThreadNetworkDiagnostics alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - [cluster readAttributeRouteTableListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { - NSLog(@"ThreadNetworkDiagnostics.RouteTableList response %@", [value description]); + [cluster readAttributeRouteTableWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) { + NSLog(@"ThreadNetworkDiagnostics.RouteTable response %@", [value description]); if (error != nil) { - LogNSError("ThreadNetworkDiagnostics RouteTableList read Error", error); + LogNSError("ThreadNetworkDiagnostics RouteTable read Error", error); } SetCommandExitStatus(error); }]; @@ -23982,14 +23982,14 @@ class ReadThreadNetworkDiagnosticsRouteTableList : public ReadAttribute { } }; -class SubscribeAttributeThreadNetworkDiagnosticsRouteTableList : public SubscribeAttribute { +class SubscribeAttributeThreadNetworkDiagnosticsRouteTable : public SubscribeAttribute { public: - SubscribeAttributeThreadNetworkDiagnosticsRouteTableList() - : SubscribeAttribute("route-table-list") + SubscribeAttributeThreadNetworkDiagnosticsRouteTable() + : SubscribeAttribute("route-table") { } - ~SubscribeAttributeThreadNetworkDiagnosticsRouteTableList() {} + ~SubscribeAttributeThreadNetworkDiagnosticsRouteTable() {} CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override { @@ -24008,12 +24008,12 @@ class SubscribeAttributeThreadNetworkDiagnosticsRouteTableList : public Subscrib if (mAutoResubscribe.HasValue()) { params.resubscribeIfLost = mAutoResubscribe.Value(); } - [cluster subscribeAttributeRouteTableListWithParams:params + [cluster subscribeAttributeRouteTableWithParams:params subscriptionEstablished:^() { mSubscriptionEstablished = YES; } reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) { - NSLog(@"ThreadNetworkDiagnostics.RouteTableList response %@", [value description]); + NSLog(@"ThreadNetworkDiagnostics.RouteTable response %@", [value description]); SetCommandExitStatus(error); }]; @@ -98436,10 +98436,10 @@ void registerClusterThreadNetworkDiagnostics(Commands & commands) make_unique(), // make_unique(), // make_unique(), // - make_unique(), // - make_unique(), // - make_unique(), // - make_unique(), // + make_unique(), // + make_unique(), // + make_unique(), // + make_unique(), // make_unique(), // make_unique(), // make_unique(), // diff --git a/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h index fd09812c0d6212..24aaf968d0163f 100644 --- a/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h +++ b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h @@ -255,7 +255,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -267,12 +267,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h index e5eeeb83a3fe2a..58b0c12300286e 100644 --- a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h +++ b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h @@ -239,7 +239,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -251,12 +251,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h index 860c7b4013f42a..edcb33788a9e71 100644 --- a/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h +++ b/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h @@ -185,7 +185,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -197,12 +197,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h index b81eb543bcdff7..6302684d04c632 100644 --- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h @@ -258,7 +258,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -270,12 +270,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h index 79e3d6509d3956..f3857fb1353951 100644 --- a/zzz_generated/lock-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h @@ -296,7 +296,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -308,12 +308,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/pump-app/zap-generated/endpoint_config.h b/zzz_generated/pump-app/zap-generated/endpoint_config.h index 94c9ef3c40ba79..51f559af491e87 100644 --- a/zzz_generated/pump-app/zap-generated/endpoint_config.h +++ b/zzz_generated/pump-app/zap-generated/endpoint_config.h @@ -192,7 +192,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -203,12 +203,12 @@ ZAP_EMPTY_DEFAULT() }, /* ExtendedPanId */ \ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h index d392f2efe47f54..3354921646430b 100644 --- a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h +++ b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h @@ -183,7 +183,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -194,12 +194,12 @@ ZAP_EMPTY_DEFAULT() }, /* ExtendedPanId */ \ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/thermostat/zap-generated/endpoint_config.h b/zzz_generated/thermostat/zap-generated/endpoint_config.h index 310aefd1aa0c9b..bc8b8f20549a62 100644 --- a/zzz_generated/thermostat/zap-generated/endpoint_config.h +++ b/zzz_generated/thermostat/zap-generated/endpoint_config.h @@ -280,7 +280,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -292,12 +292,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h index 43e87049517ee1..4001e09e14acf2 100644 --- a/zzz_generated/tv-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h @@ -311,7 +311,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -323,12 +323,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h index 18555e81e4aee8..961b204ab4a9d0 100644 --- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h @@ -264,7 +264,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -276,12 +276,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/window-app/zap-generated/endpoint_config.h b/zzz_generated/window-app/zap-generated/endpoint_config.h index bf6f9654516527..c2791529ab7415 100644 --- a/zzz_generated/window-app/zap-generated/endpoint_config.h +++ b/zzz_generated/window-app/zap-generated/endpoint_config.h @@ -260,7 +260,7 @@ \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* channel */ \ + ZAP_EMPTY_DEFAULT() }, /* Channel */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -272,12 +272,12 @@ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \ { 0x00000006, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* OverrunCount */ \ - { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \ - { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \ + { 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTable */ \ + { 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTable */ \ { 0x00000009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \ { 0x0000000A, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* weighting */ \ + ZAP_EMPTY_DEFAULT() }, /* Weighting */ \ { 0x0000000B, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* DataVersion */ \ { 0x0000000C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ From 9d5d9a5f697907449d8cd4ff55e9c2dffd3e79d0 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Fri, 6 Jan 2023 12:21:55 -0500 Subject: [PATCH 07/20] Update zap image version for cert bins docker file (#24307) --- integrations/docker/images/chip-cert-bins/Dockerfile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/integrations/docker/images/chip-cert-bins/Dockerfile b/integrations/docker/images/chip-cert-bins/Dockerfile index 386775acf0a1b1..d7d7cfa113ae79 100644 --- a/integrations/docker/images/chip-cert-bins/Dockerfile +++ b/integrations/docker/images/chip-cert-bins/Dockerfile @@ -2,7 +2,12 @@ FROM ubuntu:22.04 as chip-build-cert ARG TARGETPLATFORM # COMMITHASH defines the target commit to build from. May be passed in using --build-arg. -ARG COMMITHASH=1e06479f412b78eea0dfbeacf7cad51d005b649b +ARG COMMITHASH=451e602649b8b37ba6c9aab8ba5e30747293f778 + +# ZAP Development install, so that it runs on both x64 and arm64 +# Generally this should match with the ZAP version that is used for codegen within the +# specified SHA +ARG ZAP_VERSION=v2023.01.05-nightly # Ensure TARGETPLATFORM is set RUN case ${TARGETPLATFORM} in \ @@ -256,8 +261,6 @@ RUN case ${TARGETPLATFORM} in \ *) ;; \ esac -# ZAP Development install, so that it runs on both x64 and arm64 -ENV ZAP_VERSION=v2022.11.29-nightly RUN set -x \ && mkdir -p /opt/zap-${ZAP_VERSION} \ && git clone https://github.com/project-chip/zap.git /opt/zap-${ZAP_VERSION} \ From 98366cb97847b6619ababad34fffdc2674e27c30 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 6 Jan 2023 12:42:31 -0500 Subject: [PATCH 08/20] Update ZAP to tip. (#24306) Introduce the concept of "legacy structs". --- integrations/docker/images/chip-build/Dockerfile | 2 +- integrations/docker/images/chip-build/version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index 9d8b2ebdd9d8da..83c5365fa296a0 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -178,7 +178,7 @@ RUN set -x \ # Install a known ZAP release # Only keep the cli version, since `zap` is 143MB and not usable (UI) -ENV ZAP_VERSION=v2023.01.05-nightly +ENV ZAP_VERSION=v2023.01.06-nightly RUN set -x \ && mkdir -p /opt/zap-${ZAP_VERSION} \ && cd /opt/zap-${ZAP_VERSION} \ diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 121070f6e3a7f3..1b5f1bfd9098ae 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.6.29 Version bump reason: [Ameba] Update Docker image (fix bugs) +0.6.30 Version bump reason: Updating ZAP to v2023.01.06-nightly From ae9e59a24dd2feeea82fed30141eff78ec91f442 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Fri, 6 Jan 2023 13:33:42 -0500 Subject: [PATCH 09/20] Undo renames in idl test inputs. (#24269) * Undo renames in idl test inputs. Changes in #24235 updated these files as well, but seemingly incomplete (because struct names were changed but not their usage). Expecting this reverts back the idl test inputs and should have no side effects. * Remove wrong indent --- .../matter_idl/tests/inputs/large_all_clusters_app.matter | 4 ++-- .../matter_idl/tests/inputs/large_lighting_app.matter | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/py_matter_idl/matter_idl/tests/inputs/large_all_clusters_app.matter b/scripts/py_matter_idl/matter_idl/tests/inputs/large_all_clusters_app.matter index 32eac2423ee3da..47810281dfd37f 100644 --- a/scripts/py_matter_idl/matter_idl/tests/inputs/large_all_clusters_app.matter +++ b/scripts/py_matter_idl/matter_idl/tests/inputs/large_all_clusters_app.matter @@ -720,7 +720,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; - request struct AnnounceOTAProviderRequest { + request struct AnnounceOtaProviderRequest { node_id providerNodeId = 0; vendor_id vendorId = 1; OTAAnnouncementReason announcementReason = 2; @@ -728,7 +728,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } - command AnnounceOTAProvider(AnnounceOtaProviderRequest): DefaultSuccess = 0; + command AnnounceOtaProvider(AnnounceOtaProviderRequest): DefaultSuccess = 0; } server cluster LocalizationConfiguration = 43 { diff --git a/scripts/py_matter_idl/matter_idl/tests/inputs/large_lighting_app.matter b/scripts/py_matter_idl/matter_idl/tests/inputs/large_lighting_app.matter index 5ebc3616898784..67b2390fe614b7 100644 --- a/scripts/py_matter_idl/matter_idl/tests/inputs/large_lighting_app.matter +++ b/scripts/py_matter_idl/matter_idl/tests/inputs/large_lighting_app.matter @@ -515,7 +515,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; - request struct AnnounceOTAProviderRequest { + request struct AnnounceOtaProviderRequest { node_id providerNodeId = 0; vendor_id vendorId = 1; OTAAnnouncementReason announcementReason = 2; @@ -523,7 +523,7 @@ server cluster OtaSoftwareUpdateRequestor = 42 { endpoint_no endpoint = 4; } - command AnnounceOTAProvider(AnnounceOtaProviderRequest): DefaultSuccess = 0; + command AnnounceOtaProvider(AnnounceOtaProviderRequest): DefaultSuccess = 0; } server cluster LocalizationConfiguration = 43 { From 20db578a304de30bf7af3fd74960d07464b6a728 Mon Sep 17 00:00:00 2001 From: nipatel-silabs <108875604+nipatel-silabs@users.noreply.github.com> Date: Sat, 7 Jan 2023 00:24:19 +0530 Subject: [PATCH 10/20] Folder structure and build system re-factoring for thermostat (#24134) --- examples/thermostat/efr32/build_overrides | 1 - examples/thermostat/efr32/third_party/connectedhomeip | 1 - examples/thermostat/{ => silabs}/efr32/.gn | 0 examples/thermostat/{ => silabs}/efr32/BUILD.gn | 2 +- examples/thermostat/{ => silabs}/efr32/README.md | 0 examples/thermostat/{ => silabs}/efr32/args.gni | 0 examples/thermostat/{ => silabs}/efr32/build_for_wifi_args.gni | 0 examples/thermostat/{ => silabs}/efr32/build_for_wifi_gnfile.gn | 0 examples/thermostat/silabs/efr32/build_overrides | 1 + examples/thermostat/{ => silabs}/efr32/include/AppConfig.h | 0 examples/thermostat/{ => silabs}/efr32/include/AppEvent.h | 0 examples/thermostat/{ => silabs}/efr32/include/AppTask.h | 0 .../thermostat/{ => silabs}/efr32/include/CHIPProjectConfig.h | 0 examples/thermostat/{ => silabs}/efr32/include/SensorManager.h | 0 .../thermostat/{ => silabs}/efr32/include/TemperatureManager.h | 0 .../thermostat/{ => silabs}/efr32/include/ThermostatIcons.h | 0 examples/thermostat/{ => silabs}/efr32/include/ThermostatUI.h | 0 examples/thermostat/{ => silabs}/efr32/src/AppTask.cpp | 0 examples/thermostat/{ => silabs}/efr32/src/SensorManager.cpp | 0 .../thermostat/{ => silabs}/efr32/src/TemperatureManager.cpp | 0 examples/thermostat/{ => silabs}/efr32/src/ThermostatUI.cpp | 0 examples/thermostat/{ => silabs}/efr32/src/ZclCallbacks.cpp | 0 examples/thermostat/{ => silabs}/efr32/src/main.cpp | 0 examples/thermostat/silabs/efr32/third_party/connectedhomeip | 1 + 24 files changed, 3 insertions(+), 3 deletions(-) delete mode 120000 examples/thermostat/efr32/build_overrides delete mode 120000 examples/thermostat/efr32/third_party/connectedhomeip rename examples/thermostat/{ => silabs}/efr32/.gn (100%) rename examples/thermostat/{ => silabs}/efr32/BUILD.gn (99%) rename examples/thermostat/{ => silabs}/efr32/README.md (100%) rename examples/thermostat/{ => silabs}/efr32/args.gni (100%) rename examples/thermostat/{ => silabs}/efr32/build_for_wifi_args.gni (100%) rename examples/thermostat/{ => silabs}/efr32/build_for_wifi_gnfile.gn (100%) create mode 120000 examples/thermostat/silabs/efr32/build_overrides rename examples/thermostat/{ => silabs}/efr32/include/AppConfig.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/AppEvent.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/AppTask.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/CHIPProjectConfig.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/SensorManager.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/TemperatureManager.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/ThermostatIcons.h (100%) rename examples/thermostat/{ => silabs}/efr32/include/ThermostatUI.h (100%) rename examples/thermostat/{ => silabs}/efr32/src/AppTask.cpp (100%) rename examples/thermostat/{ => silabs}/efr32/src/SensorManager.cpp (100%) rename examples/thermostat/{ => silabs}/efr32/src/TemperatureManager.cpp (100%) rename examples/thermostat/{ => silabs}/efr32/src/ThermostatUI.cpp (100%) rename examples/thermostat/{ => silabs}/efr32/src/ZclCallbacks.cpp (100%) rename examples/thermostat/{ => silabs}/efr32/src/main.cpp (100%) create mode 120000 examples/thermostat/silabs/efr32/third_party/connectedhomeip diff --git a/examples/thermostat/efr32/build_overrides b/examples/thermostat/efr32/build_overrides deleted file mode 120000 index e578e73312ebd1..00000000000000 --- a/examples/thermostat/efr32/build_overrides +++ /dev/null @@ -1 +0,0 @@ -../../build_overrides \ No newline at end of file diff --git a/examples/thermostat/efr32/third_party/connectedhomeip b/examples/thermostat/efr32/third_party/connectedhomeip deleted file mode 120000 index c866b86874994d..00000000000000 --- a/examples/thermostat/efr32/third_party/connectedhomeip +++ /dev/null @@ -1 +0,0 @@ -../../../.. \ No newline at end of file diff --git a/examples/thermostat/efr32/.gn b/examples/thermostat/silabs/efr32/.gn similarity index 100% rename from examples/thermostat/efr32/.gn rename to examples/thermostat/silabs/efr32/.gn diff --git a/examples/thermostat/efr32/BUILD.gn b/examples/thermostat/silabs/efr32/BUILD.gn similarity index 99% rename from examples/thermostat/efr32/BUILD.gn rename to examples/thermostat/silabs/efr32/BUILD.gn index 5d058cc2e43cf6..a2ad43efcfa945 100644 --- a/examples/thermostat/efr32/BUILD.gn +++ b/examples/thermostat/silabs/efr32/BUILD.gn @@ -31,7 +31,7 @@ if (chip_enable_pw_rpc) { assert(current_os == "freertos") -efr32_project_dir = "${chip_root}/examples/thermostat/efr32" +efr32_project_dir = "${chip_root}/examples/thermostat/silabs/efr32" examples_plat_dir = "${chip_root}/examples/platform/silabs/efr32" examples_common_plat_dir = "${chip_root}/examples/platform/silabs" diff --git a/examples/thermostat/efr32/README.md b/examples/thermostat/silabs/efr32/README.md similarity index 100% rename from examples/thermostat/efr32/README.md rename to examples/thermostat/silabs/efr32/README.md diff --git a/examples/thermostat/efr32/args.gni b/examples/thermostat/silabs/efr32/args.gni similarity index 100% rename from examples/thermostat/efr32/args.gni rename to examples/thermostat/silabs/efr32/args.gni diff --git a/examples/thermostat/efr32/build_for_wifi_args.gni b/examples/thermostat/silabs/efr32/build_for_wifi_args.gni similarity index 100% rename from examples/thermostat/efr32/build_for_wifi_args.gni rename to examples/thermostat/silabs/efr32/build_for_wifi_args.gni diff --git a/examples/thermostat/efr32/build_for_wifi_gnfile.gn b/examples/thermostat/silabs/efr32/build_for_wifi_gnfile.gn similarity index 100% rename from examples/thermostat/efr32/build_for_wifi_gnfile.gn rename to examples/thermostat/silabs/efr32/build_for_wifi_gnfile.gn diff --git a/examples/thermostat/silabs/efr32/build_overrides b/examples/thermostat/silabs/efr32/build_overrides new file mode 120000 index 00000000000000..995884e6163eb5 --- /dev/null +++ b/examples/thermostat/silabs/efr32/build_overrides @@ -0,0 +1 @@ +../../../build_overrides \ No newline at end of file diff --git a/examples/thermostat/efr32/include/AppConfig.h b/examples/thermostat/silabs/efr32/include/AppConfig.h similarity index 100% rename from examples/thermostat/efr32/include/AppConfig.h rename to examples/thermostat/silabs/efr32/include/AppConfig.h diff --git a/examples/thermostat/efr32/include/AppEvent.h b/examples/thermostat/silabs/efr32/include/AppEvent.h similarity index 100% rename from examples/thermostat/efr32/include/AppEvent.h rename to examples/thermostat/silabs/efr32/include/AppEvent.h diff --git a/examples/thermostat/efr32/include/AppTask.h b/examples/thermostat/silabs/efr32/include/AppTask.h similarity index 100% rename from examples/thermostat/efr32/include/AppTask.h rename to examples/thermostat/silabs/efr32/include/AppTask.h diff --git a/examples/thermostat/efr32/include/CHIPProjectConfig.h b/examples/thermostat/silabs/efr32/include/CHIPProjectConfig.h similarity index 100% rename from examples/thermostat/efr32/include/CHIPProjectConfig.h rename to examples/thermostat/silabs/efr32/include/CHIPProjectConfig.h diff --git a/examples/thermostat/efr32/include/SensorManager.h b/examples/thermostat/silabs/efr32/include/SensorManager.h similarity index 100% rename from examples/thermostat/efr32/include/SensorManager.h rename to examples/thermostat/silabs/efr32/include/SensorManager.h diff --git a/examples/thermostat/efr32/include/TemperatureManager.h b/examples/thermostat/silabs/efr32/include/TemperatureManager.h similarity index 100% rename from examples/thermostat/efr32/include/TemperatureManager.h rename to examples/thermostat/silabs/efr32/include/TemperatureManager.h diff --git a/examples/thermostat/efr32/include/ThermostatIcons.h b/examples/thermostat/silabs/efr32/include/ThermostatIcons.h similarity index 100% rename from examples/thermostat/efr32/include/ThermostatIcons.h rename to examples/thermostat/silabs/efr32/include/ThermostatIcons.h diff --git a/examples/thermostat/efr32/include/ThermostatUI.h b/examples/thermostat/silabs/efr32/include/ThermostatUI.h similarity index 100% rename from examples/thermostat/efr32/include/ThermostatUI.h rename to examples/thermostat/silabs/efr32/include/ThermostatUI.h diff --git a/examples/thermostat/efr32/src/AppTask.cpp b/examples/thermostat/silabs/efr32/src/AppTask.cpp similarity index 100% rename from examples/thermostat/efr32/src/AppTask.cpp rename to examples/thermostat/silabs/efr32/src/AppTask.cpp diff --git a/examples/thermostat/efr32/src/SensorManager.cpp b/examples/thermostat/silabs/efr32/src/SensorManager.cpp similarity index 100% rename from examples/thermostat/efr32/src/SensorManager.cpp rename to examples/thermostat/silabs/efr32/src/SensorManager.cpp diff --git a/examples/thermostat/efr32/src/TemperatureManager.cpp b/examples/thermostat/silabs/efr32/src/TemperatureManager.cpp similarity index 100% rename from examples/thermostat/efr32/src/TemperatureManager.cpp rename to examples/thermostat/silabs/efr32/src/TemperatureManager.cpp diff --git a/examples/thermostat/efr32/src/ThermostatUI.cpp b/examples/thermostat/silabs/efr32/src/ThermostatUI.cpp similarity index 100% rename from examples/thermostat/efr32/src/ThermostatUI.cpp rename to examples/thermostat/silabs/efr32/src/ThermostatUI.cpp diff --git a/examples/thermostat/efr32/src/ZclCallbacks.cpp b/examples/thermostat/silabs/efr32/src/ZclCallbacks.cpp similarity index 100% rename from examples/thermostat/efr32/src/ZclCallbacks.cpp rename to examples/thermostat/silabs/efr32/src/ZclCallbacks.cpp diff --git a/examples/thermostat/efr32/src/main.cpp b/examples/thermostat/silabs/efr32/src/main.cpp similarity index 100% rename from examples/thermostat/efr32/src/main.cpp rename to examples/thermostat/silabs/efr32/src/main.cpp diff --git a/examples/thermostat/silabs/efr32/third_party/connectedhomeip b/examples/thermostat/silabs/efr32/third_party/connectedhomeip new file mode 120000 index 00000000000000..59307833b4fee9 --- /dev/null +++ b/examples/thermostat/silabs/efr32/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../.. \ No newline at end of file From 0f76327ce608b34d906a68998a6800837efef074 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 6 Jan 2023 14:25:04 -0500 Subject: [PATCH 11/20] Align naming in WiFi Network Diagnostics cluster XML with the spec. (#24291) * Align naming in WiFi Network Diagnostics cluster XML with the spec. * Auto-update ZAP files. * Regenerate generated code. --- .../all-clusters-app.matter | 12 ++--- .../all-clusters-common/all-clusters-app.zap | 4 +- .../all-clusters-minimal-app.matter | 12 ++--- .../all-clusters-minimal-app.zap | 4 +- .../bridge-common/bridge-app.matter | 12 ++--- .../bridge-app/bridge-common/bridge-app.zap | 4 +- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 12 ++--- ...noip_rootnode_dimmablelight_bCwGYSDpoe.zap | 4 +- ...tnode_colortemperaturelight_hbUnzYVeyn.zap | 4 +- .../rootnode_contactsensor_lFAGG1bfRO.zap | 4 +- .../rootnode_dimmablelight_bCwGYSDpoe.zap | 4 +- .../devices/rootnode_doorlock_aNKYAreMXE.zap | 4 +- ...rootnode_extendedcolorlight_8lcaaYJVAa.zap | 4 +- .../chef/devices/rootnode_fan_7N2TobIlOX.zap | 4 +- .../rootnode_flowsensor_1zVxHedlaV.zap | 4 +- ...rootnode_heatingcoolingunit_ncdGai1E5a.zap | 4 +- .../rootnode_humiditysensor_Xyj4gda6Hb.zap | 4 +- .../rootnode_lightsensor_lZQycTFcJK.zap | 4 +- .../rootnode_occupancysensor_iHyVgifZuo.zap | 4 +- .../rootnode_onofflight_bbs1b7IaOV.zap | 4 +- .../rootnode_onofflightswitch_FsPlMr090Q.zap | 4 +- .../rootnode_onoffpluginunit_Wtf8ss5EBY.zap | 4 +- .../rootnode_pressuresensor_s0qC9wLH4k.zap | 4 +- .../devices/rootnode_speaker_RpzeXdimqA.zap | 4 +- .../rootnode_temperaturesensor_Qy1zkNW7c3.zap | 4 +- .../rootnode_thermostat_bm3fb8dhYi.zap | 4 +- .../rootnode_windowcovering_RLCxaGi9Yx.zap | 4 +- .../contact-sensor-app.matter | 12 ++--- .../contact-sensor-app.zap | 4 +- .../bridge-common/bridge-app.matter | 12 ++--- .../bridge-common/bridge-app.zap | 4 +- .../light-switch-app.matter | 12 ++--- .../light-switch-common/light-switch-app.zap | 4 +- .../lighting-common/lighting-app.matter | 12 ++--- .../lighting-common/lighting-app.zap | 4 +- .../lighting-app/nxp/zap/lighting-on-off.zap | 4 +- examples/lock-app/lock-common/lock-app.matter | 12 ++--- examples/lock-app/lock-common/lock-app.zap | 4 +- .../placeholder/linux/apps/app1/config.matter | 12 ++--- .../placeholder/linux/apps/app1/config.zap | 4 +- .../placeholder/linux/apps/app2/config.matter | 12 ++--- .../placeholder/linux/apps/app2/config.zap | 4 +- .../esp32/main/temperature-measurement.matter | 12 ++--- .../esp32/main/temperature-measurement.zap | 4 +- .../thermostat-common/thermostat.matter | 12 ++--- .../thermostat-common/thermostat.zap | 4 +- examples/tv-app/tv-common/tv-app.matter | 12 ++--- examples/tv-app/tv-common/tv-app.zap | 4 +- .../tv-casting-common/tv-casting-app.matter | 12 ++--- .../tv-casting-common/tv-casting-app.zap | 4 +- examples/window-app/common/window-app.matter | 12 ++--- examples/window-app/common/window-app.zap | 4 +- .../certification/Test_TC_DGWIFI_2_1.yaml | 4 +- .../chip/wifi-network-diagnostics-cluster.xml | 16 +++--- .../zcl/zcl-with-test-extensions.json | 4 +- src/app/zap-templates/zcl/zcl.json | 4 +- .../data_model/controller-clusters.matter | 12 ++--- .../data_model/controller-clusters.zap | 4 +- .../python/chip/clusters/Objects.py | 12 ++--- .../CHIP/templates/availability.yaml | 33 ++++++++++++ .../CHIP/zap-generated/MTRBaseClusters.h | 54 ++++++++++++------- .../CHIP/zap-generated/MTRBaseClusters.mm | 24 ++++----- .../CHIP/zap-generated/MTRClusterConstants.h | 8 +-- .../CHIP/zap-generated/MTRClusters.h | 12 +++-- .../CHIP/zap-generated/MTRClusters.mm | 16 ++++-- .../Ameba/DiagnosticDataProviderImpl.cpp | 2 +- .../Beken/DiagnosticDataProviderImpl.cpp | 2 +- .../PSOC6/DiagnosticDataProviderImpl.cpp | 6 +-- .../Linux/ConnectivityManagerImpl.cpp | 2 +- src/platform/nrfconnect/wifi/WiFiManager.cpp | 2 +- .../nxp/mw320/ConnectivityManagerImpl.cpp | 2 +- .../silabs/DiagnosticDataProviderImpl.cpp | 2 +- .../webos/ConnectivityManagerImpl.cpp | 2 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/cluster-enums-check.h | 24 ++++----- .../app-common/zap-generated/cluster-enums.h | 12 ++--- .../app-common/zap-generated/enums.h | 12 ++--- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../cluster/logging/DataModelLogger.cpp | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/cluster/Commands.h | 20 +++---- .../zap-generated/test/Commands.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../lock-app/zap-generated/endpoint_config.h | 4 +- .../app1/zap-generated/endpoint_config.h | 4 +- .../app2/zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../tv-app/zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- .../zap-generated/endpoint_config.h | 4 +- 95 files changed, 381 insertions(+), 318 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 c6574c7d0c281f..1b1cf5d21d957d 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 @@ -1425,12 +1425,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 3c22d1330745f3..0b9943b52dcd26 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -4831,7 +4831,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4895,7 +4895,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", 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 685d3c8baaebde..2f9b9fe2974a43 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 @@ -1286,12 +1286,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap index 036c40d6e758d9..73ab88c4af843a 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap @@ -4831,7 +4831,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4895,7 +4895,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 7f0a86b7458fba..fd11bac0562806 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -1099,12 +1099,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap index 05a8c7b0eb8563..a0e07d51d636a0 100644 --- a/examples/bridge-app/bridge-common/bridge-app.zap +++ b/examples/bridge-app/bridge-common/bridge-app.zap @@ -3565,7 +3565,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -3629,7 +3629,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index 556c7f28d191da..f13eaa6810ebe1 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -955,12 +955,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap index 8feb90af5d2898..7d9c91a966953d 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap @@ -3975,7 +3975,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap index ca44007f107231..30876a6f5d7d6a 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap @@ -4071,7 +4071,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4135,7 +4135,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap index ab874e6d39e63f..7300d725d57911 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap index 1354944aa779e5..63645911051bde 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap index ccba2a9cec2e19..43383ea912b116 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap index 4ec448754259f1..c7a16d13f57ed4 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap index 768d28a20c92ed..bc4042f5ff46b6 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap @@ -4119,7 +4119,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4183,7 +4183,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap index 81e5f23ce9e1de..2ec904036f07ca 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap index 3050dc85bd79fc..baaaef0506cce8 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap index f48ed0bf5f8f9b..cd8199ba90edaa 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap index 62cd6ac3688996..5bb8164029b32a 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap index 2eff567e5511c0..1039a3e8768889 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap index 9a7af7eddea7ff..0ee26065d436d5 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap index 0fbf1d64ed8717..6e2fb0d28dd43e 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap index b361a49a5cd4e0..e71dc662cc3417 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap index abcb11d7466e06..268700dc6007b8 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap index 10c745ac7f77b7..34bcecd5fd1e8d 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap index a9e03c174a9bc5..7062ae0e908b2a 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap index 2cef03257232c6..7447417cbf8774 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap @@ -4023,7 +4023,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4087,7 +4087,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap index 1bd4e5fd0d199c..bbbb67fc105dc8 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap @@ -3975,7 +3975,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4039,7 +4039,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index f1af2e0a468928..dce07818e85510 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -943,12 +943,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap index 509d1b2e9cd8ef..6190125af204ac 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap @@ -4071,7 +4071,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4135,7 +4135,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index 7f0a86b7458fba..fd11bac0562806 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter @@ -1099,12 +1099,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.zap b/examples/dynamic-bridge-app/bridge-common/bridge-app.zap index 05a8c7b0eb8563..a0e07d51d636a0 100644 --- a/examples/dynamic-bridge-app/bridge-common/bridge-app.zap +++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.zap @@ -3565,7 +3565,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -3629,7 +3629,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", 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 132799c0dc63b1..533ddc510459ea 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 @@ -1145,12 +1145,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap index 190476c2c1e33c..65df40708c13dc 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.zap +++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap @@ -4053,7 +4053,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4117,7 +4117,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 03db5195fc4780..0744c2442a011b 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -1101,12 +1101,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index b45a4f2e407991..5d94b32c9dd469 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -4071,7 +4071,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4135,7 +4135,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.zap b/examples/lighting-app/nxp/zap/lighting-on-off.zap index df94ff890cc37d..f6fed920720628 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.zap +++ b/examples/lighting-app/nxp/zap/lighting-on-off.zap @@ -4266,7 +4266,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4330,7 +4330,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index e7db43b163801d..ea281eb3f1be27 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -1017,12 +1017,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap index 015506dd44a9b8..b480ac6c8dc2ca 100644 --- a/examples/lock-app/lock-common/lock-app.zap +++ b/examples/lock-app/lock-common/lock-app.zap @@ -3999,7 +3999,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4063,7 +4063,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index 09eeccfcc13968..e2f2144245cdd3 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -1072,12 +1072,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap index 53334068acb830..a116fddd7c1234 100644 --- a/examples/placeholder/linux/apps/app1/config.zap +++ b/examples/placeholder/linux/apps/app1/config.zap @@ -2495,7 +2495,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -2559,7 +2559,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 09eeccfcc13968..e2f2144245cdd3 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -1072,12 +1072,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap index a39673d9ba9459..5e18f830933d37 100644 --- a/examples/placeholder/linux/apps/app2/config.zap +++ b/examples/placeholder/linux/apps/app2/config.zap @@ -2495,7 +2495,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -2559,7 +2559,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter index c49f2ec01f56e4..3f8dc64974728a 100644 --- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter +++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter @@ -540,12 +540,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap index 0d217c9fce00be..c8de96fad01190 100644 --- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap +++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap @@ -2055,7 +2055,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -2119,7 +2119,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 97b18471d5130f..c27fbb86c90054 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -1101,12 +1101,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap index dfb6c4b4d55453..40a770305947e1 100644 --- a/examples/thermostat/thermostat-common/thermostat.zap +++ b/examples/thermostat/thermostat-common/thermostat.zap @@ -4039,7 +4039,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4103,7 +4103,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 6db9577d730726..ea9fc62b1ab12b 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -1146,12 +1146,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap index 82fc99cbb5bea1..b1f7772d0cc071 100644 --- a/examples/tv-app/tv-common/tv-app.zap +++ b/examples/tv-app/tv-common/tv-app.zap @@ -3849,7 +3849,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -3913,7 +3913,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", 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 6fb99bc66580db..fec089a37a2280 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 @@ -1318,12 +1318,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap index a0fbca7594496e..ed4a8d1990cff6 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap @@ -3799,7 +3799,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -3863,7 +3863,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 15227e5a90c033..e163597567a927 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -1157,12 +1157,12 @@ server cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap index 2b7820f9a78062..8e577510944e12 100644 --- a/examples/window-app/common/window-app.zap +++ b/examples/window-app/common/window-app.zap @@ -4761,7 +4761,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -4825,7 +4825,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/src/app/tests/suites/certification/Test_TC_DGWIFI_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DGWIFI_2_1.yaml index cc97a60136e6d5..0267aa4127613f 100644 --- a/src/app/tests/suites/certification/Test_TC_DGWIFI_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DGWIFI_2_1.yaml @@ -35,7 +35,7 @@ tests: - label: "TH reads BSSID attribute from DUT" PICS: DGWIFI.S.A0000 command: "readAttribute" - attribute: "bssid" + attribute: "BSSID" response: constraints: type: octet_string @@ -72,7 +72,7 @@ tests: - label: "Reads RSSI attribute constraints" PICS: DGWIFI.S.A0004 command: "readAttribute" - attribute: "rssi" + attribute: "RSSI" response: constraints: type: int8s diff --git a/src/app/zap-templates/zcl/data-model/chip/wifi-network-diagnostics-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/wifi-network-diagnostics-cluster.xml index b7e67de42c991f..1fe4cbb9fa8e6d 100644 --- a/src/app/zap-templates/zcl/data-model/chip/wifi-network-diagnostics-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/wifi-network-diagnostics-cluster.xml @@ -27,12 +27,12 @@ limitations under the License. - - - - - - + + + + + + @@ -52,11 +52,11 @@ limitations under the License. 0x0036 WIFI_NETWORK_DIAGNOSTICS_CLUSTER The Wi-Fi Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. - bssid + BSSID SecurityType WiFiVersion ChannelNumber - Rssi + RSSI BeaconLostCount BeaconRxCount PacketMulticastRxCount diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json index 8f8541847460a1..ee7578e6e297f9 100644 --- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json +++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json @@ -247,11 +247,11 @@ "OperationalDatasetComponents" ], "WiFi Network Diagnostics": [ - "bssid", + "BSSID", "SecurityType", "WiFiVersion", "ChannelNumber", - "Rssi", + "RSSI", "BeaconLostCount", "BeaconRxCount", "PacketMulticastRxCount", diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json index 5e8b6424f9f70c..8ef2220096366d 100644 --- a/src/app/zap-templates/zcl/zcl.json +++ b/src/app/zap-templates/zcl/zcl.json @@ -241,11 +241,11 @@ "OperationalDatasetComponents" ], "WiFi Network Diagnostics": [ - "bssid", + "BSSID", "SecurityType", "WiFiVersion", "ChannelNumber", - "Rssi", + "RSSI", "BeaconLostCount", "BeaconRxCount", "PacketMulticastRxCount", diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 98c187aafe4cdc..cad9e69558887a 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -1607,12 +1607,12 @@ client cluster WiFiNetworkDiagnostics = 54 { } enum WiFiVersionType : ENUM8 { - k80211a = 0; - k80211b = 1; - k80211g = 2; - k80211n = 3; - k80211ac = 4; - k80211ax = 5; + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; } info event Disconnection = 0 { diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index c409b17ac66ccb..31e84b180cd424 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -6863,7 +6863,7 @@ "enabled": 0, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -6927,7 +6927,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index fdc31f2dd4c5b1..d593a182e73d6c 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -9425,12 +9425,12 @@ class WiFiConnectionStatus(IntEnum): kNotConnected = 0x01 class WiFiVersionType(IntEnum): - k80211a = 0x00 - k80211b = 0x01 - k80211g = 0x02 - k80211n = 0x03 - k80211ac = 0x04 - k80211ax = 0x05 + kA = 0x00 + kB = 0x01 + kG = 0x02 + kN = 0x03 + kAc = 0x04 + kAx = 0x05 diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml index d0c3349e016621..73e5f9c75dd643 100644 --- a/src/darwin/Framework/CHIP/templates/availability.yaml +++ b/src/darwin/Framework/CHIP/templates/availability.yaml @@ -4718,6 +4718,9 @@ ThreadNetworkDiagnostics: - NeighborTable - RouteTable + WiFiNetworkDiagnostics: + - BSSID + - RSSI commands: OTASoftwareUpdateProvider: - QueryImage @@ -5188,6 +5191,14 @@ ConnectionStatusEnum: - Connected - NotConnected + WiFiNetworkDiagnostics: + WiFiVersionType: + - A + - B + - G + - N + - Ac + - Ax bitmaps: UnitTesting: - Bitmap8MaskMap @@ -5252,6 +5263,9 @@ ThreadNetworkDiagnostics: - NeighborTableList - RouteTableList + WiFiNetworkDiagnostics: + - Bssid + - Rssi command fields: Groups: AddGroup: @@ -5308,6 +5322,14 @@ PowerSource: BatChargeLevel: - Ok + WiFiNetworkDiagnostics: + WiFiVersionType: + - 80211a + - 80211b + - 80211g + - 80211n + - 80211ac + - 80211ax bitmap values: NetworkCommissioning: WiFiSecurity: @@ -5343,6 +5365,9 @@ ThreadNetworkDiagnostics: NeighborTable: NeighborTableList RouteTable: RouteTableList + WiFiNetworkDiagnostics: + BSSID: Bssid + RSSI: Rssi commands: OTASoftwareUpdateRequestor: AnnounceOTAProvider: AnnounceOtaProvider @@ -5404,6 +5429,14 @@ PowerSource: BatChargeLevel: OK: Ok + WiFiNetworkDiagnostics: + WiFiVersionType: + A: 80211a + B: 80211b + G: 80211g + N: 80211n + Ac: 80211ac + Ax: 80211ax bitmap values: NetworkCommissioning: WiFiSecurity: diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 4c636b3e78a6e6..2a795a455f1ada 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -5095,13 +5095,13 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE; - (void)resetCountsWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE; -- (void)readAttributeBssidWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeBSSIDWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams *)params +- (void)subscribeAttributeBSSIDWithParams:(MTRSubscribeParams *)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE; -+ (void)readAttributeBssidWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer ++ (void)readAttributeBSSIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion @@ -5143,13 +5143,13 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeRSSIWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE; -- (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams *)params +- (void)subscribeAttributeRSSIWithParams:(MTRSubscribeParams *)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE; -+ (void)readAttributeRssiWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer ++ (void)readAttributeRSSIWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion @@ -17682,12 +17682,30 @@ typedef NS_ENUM(uint8_t, MTRWiFiNetworkDiagnosticsWiFiConnectionStatus) { } API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); typedef NS_ENUM(uint8_t, MTRWiFiNetworkDiagnosticsWiFiVersionType) { - MTRWiFiNetworkDiagnosticsWiFiVersionType80211a API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00, - MTRWiFiNetworkDiagnosticsWiFiVersionType80211b API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01, - MTRWiFiNetworkDiagnosticsWiFiVersionType80211g API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x02, - MTRWiFiNetworkDiagnosticsWiFiVersionType80211n API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x03, - MTRWiFiNetworkDiagnosticsWiFiVersionType80211ac API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x04, - MTRWiFiNetworkDiagnosticsWiFiVersionType80211ax API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x05, + MTRWiFiNetworkDiagnosticsWiFiVersionTypeA MTR_NEWLY_AVAILABLE = 0x00, + MTRWiFiNetworkDiagnosticsWiFiVersionType80211a API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRWiFiNetworkDiagnosticsWiFiVersionTypeA") + = 0x00, + MTRWiFiNetworkDiagnosticsWiFiVersionTypeB MTR_NEWLY_AVAILABLE = 0x01, + MTRWiFiNetworkDiagnosticsWiFiVersionType80211b API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRWiFiNetworkDiagnosticsWiFiVersionTypeB") + = 0x01, + MTRWiFiNetworkDiagnosticsWiFiVersionTypeG MTR_NEWLY_AVAILABLE = 0x02, + MTRWiFiNetworkDiagnosticsWiFiVersionType80211g API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRWiFiNetworkDiagnosticsWiFiVersionTypeG") + = 0x02, + MTRWiFiNetworkDiagnosticsWiFiVersionTypeN MTR_NEWLY_AVAILABLE = 0x03, + MTRWiFiNetworkDiagnosticsWiFiVersionType80211n API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRWiFiNetworkDiagnosticsWiFiVersionTypeN") + = 0x03, + MTRWiFiNetworkDiagnosticsWiFiVersionTypeAc MTR_NEWLY_AVAILABLE = 0x04, + MTRWiFiNetworkDiagnosticsWiFiVersionType80211ac API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRWiFiNetworkDiagnosticsWiFiVersionTypeAc") + = 0x04, + MTRWiFiNetworkDiagnosticsWiFiVersionTypeAx MTR_NEWLY_AVAILABLE = 0x05, + MTRWiFiNetworkDiagnosticsWiFiVersionType80211ax API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use MTRWiFiNetworkDiagnosticsWiFiVersionTypeAx") + = 0x05, } API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); typedef NS_ENUM(uint8_t, MTREthernetNetworkDiagnosticsPHYRateType) { @@ -26098,20 +26116,20 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) { - (void)readAttributeBssidWithCompletionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeBssidWithCompletion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeBSSIDWithCompletion:"); - (void)subscribeAttributeBssidWithMinInterval:(NSNumber * _Nonnull)minInterval maxInterval:(NSNumber * _Nonnull)maxInterval params:(MTRSubscribeParams * _Nullable)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use subscribeAttributeBssidWithParams:subscriptionEstablished:"); + MTR_NEWLY_DEPRECATED("Please use subscribeAttributeBSSIDWithParams:subscriptionEstablished:"); + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeBssidWithAttributeCache:endpoint:queue:completion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeBSSIDWithAttributeCache:endpoint:queue:completion:"); - (void)readAttributeSecurityTypeWithCompletionHandler: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler @@ -26173,20 +26191,20 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) { - (void)readAttributeRssiWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeRssiWithCompletion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeRSSIWithCompletion:"); - (void)subscribeAttributeRssiWithMinInterval:(NSNumber * _Nonnull)minInterval maxInterval:(NSNumber * _Nonnull)maxInterval params:(MTRSubscribeParams * _Nullable)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use subscribeAttributeRssiWithParams:subscriptionEstablished:"); + MTR_NEWLY_DEPRECATED("Please use subscribeAttributeRSSIWithParams:subscriptionEstablished:"); + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use readAttributeRssiWithAttributeCache:endpoint:queue:completion:"); + MTR_NEWLY_DEPRECATED("Please use readAttributeRSSIWithAttributeCache:endpoint:queue:completion:"); - (void)readAttributeBeaconLostCountWithCompletionHandler: (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index af04a2fb771449..6b95fba6b82199 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -33962,7 +33962,7 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams std::move(*bridge).DispatchAction(self.device); } -- (void)readAttributeBssidWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeBSSIDWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion { MTRReadParams * params = [[MTRReadParams alloc] init]; using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo; @@ -33970,7 +33970,7 @@ - (void)readAttributeBssidWithCompletion:(void (^)(NSData * _Nullable value, NSE params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId()); } -- (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams * _Nonnull)params +- (void)subscribeAttributeBSSIDWithParams:(MTRSubscribeParams * _Nonnull)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler { @@ -33980,7 +33980,7 @@ - (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams * _Nonnull)params TypeInfo::GetAttributeId()); } -+ (void)readAttributeBssidWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer ++ (void)readAttributeBSSIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion @@ -34136,7 +34136,7 @@ + (void)readAttributeChannelNumberWithClusterStateCache:(MTRClusterStateCacheCon }); } -- (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion +- (void)readAttributeRSSIWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion { MTRReadParams * params = [[MTRReadParams alloc] init]; using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo; @@ -34144,7 +34144,7 @@ - (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NS params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId()); } -- (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams * _Nonnull)params +- (void)subscribeAttributeRSSIWithParams:(MTRSubscribeParams * _Nonnull)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler { @@ -34154,7 +34154,7 @@ - (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams * _Nonnull)params TypeInfo::GetAttributeId()); } -+ (void)readAttributeRssiWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer ++ (void)readAttributeRSSIWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion @@ -34772,7 +34772,7 @@ - (void)resetCountsWithCompletionHandler:(MTRStatusCompletion)completionHandler - (void)readAttributeBssidWithCompletionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeBssidWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) { + [self readAttributeBSSIDWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) { // Cast is safe because subclass does not add any selectors. completionHandler(static_cast(value), error); }]; @@ -34790,7 +34790,7 @@ - (void)subscribeAttributeBssidWithMinInterval:(NSNumber * _Nonnull)minInterval subscribeParams.minInterval = minInterval; subscribeParams.maxInterval = maxInterval; } - [self subscribeAttributeBssidWithParams:subscribeParams + [self subscribeAttributeBSSIDWithParams:subscribeParams subscriptionEstablished:subscriptionEstablishedHandler reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) { // Cast is safe because subclass does not add any selectors. @@ -34802,7 +34802,7 @@ + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attri queue:(dispatch_queue_t)queue completionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeBssidWithClusterStateCache:attributeCacheContainer.realContainer + [self readAttributeBSSIDWithClusterStateCache:attributeCacheContainer.realContainer endpoint:endpoint queue:queue completion:^(NSData * _Nullable value, NSError * _Nullable error) { @@ -34943,7 +34943,7 @@ + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer - (void)readAttributeRssiWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeRssiWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) { + [self readAttributeRSSIWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) { // Cast is safe because subclass does not add any selectors. completionHandler(static_cast(value), error); }]; @@ -34961,7 +34961,7 @@ - (void)subscribeAttributeRssiWithMinInterval:(NSNumber * _Nonnull)minInterval subscribeParams.minInterval = minInterval; subscribeParams.maxInterval = maxInterval; } - [self subscribeAttributeRssiWithParams:subscribeParams + [self subscribeAttributeRSSIWithParams:subscribeParams subscriptionEstablished:subscriptionEstablishedHandler reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) { // Cast is safe because subclass does not add any selectors. @@ -34973,7 +34973,7 @@ + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attrib queue:(dispatch_queue_t)queue completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler { - [self readAttributeRssiWithClusterStateCache:attributeCacheContainer.realContainer + [self readAttributeRSSIWithClusterStateCache:attributeCacheContainer.realContainer endpoint:endpoint queue:queue completion:^(NSNumber * _Nullable value, NSError * _Nullable error) { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h index 68c66fcb631327..986d15366af4a7 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h @@ -1919,7 +1919,7 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { // Cluster WiFiNetworkDiagnostics deprecated attribute names MTRClusterWiFiNetworkDiagnosticsAttributeBssidID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBssidID") + MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBSSIDID") = 0x00000000, MTRClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID") @@ -1931,7 +1931,7 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeChannelNumberID") = 0x00000003, MTRClusterWiFiNetworkDiagnosticsAttributeRssiID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRssiID") + MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRSSIID") = 0x00000004, MTRClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID") @@ -1976,11 +1976,11 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { = MTRClusterGlobalAttributeClusterRevisionID, // Cluster WiFiNetworkDiagnostics attributes - MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBssidID MTR_NEWLY_AVAILABLE = 0x00000000, + MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBSSIDID MTR_NEWLY_AVAILABLE = 0x00000000, MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID MTR_NEWLY_AVAILABLE = 0x00000001, MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID MTR_NEWLY_AVAILABLE = 0x00000002, MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeChannelNumberID MTR_NEWLY_AVAILABLE = 0x00000003, - MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRssiID MTR_NEWLY_AVAILABLE = 0x00000004, + MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRSSIID MTR_NEWLY_AVAILABLE = 0x00000004, MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID MTR_NEWLY_AVAILABLE = 0x00000005, MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID MTR_NEWLY_AVAILABLE = 0x00000006, MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID MTR_NEWLY_AVAILABLE = 0x00000007, diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h index 3861315d01fb3a..4c9a458da0907d 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h @@ -1928,8 +1928,7 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) expectedValueInterval:(NSNumber *)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE; -- (NSDictionary *)readAttributeBssidWithParams:(MTRReadParams * _Nullable)params - API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +- (NSDictionary *)readAttributeBSSIDWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE; - (NSDictionary *)readAttributeSecurityTypeWithParams:(MTRReadParams * _Nullable)params API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); @@ -1940,8 +1939,7 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (NSDictionary *)readAttributeChannelNumberWithParams:(MTRReadParams * _Nullable)params API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); -- (NSDictionary *)readAttributeRssiWithParams:(MTRReadParams * _Nullable)params - API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); +- (NSDictionary *)readAttributeRSSIWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE; - (NSDictionary *)readAttributeBeaconLostCountWithParams:(MTRReadParams * _Nullable)params API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); @@ -7356,6 +7354,12 @@ MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTesting") completionHandler:(MTRStatusCompletion)completionHandler API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) MTR_NEWLY_DEPRECATED("Please use resetCountsWithExpectedValues:expectedValueIntervalMs:completion:"); +- (NSDictionary *)readAttributeBssidWithParams:(MTRReadParams * _Nullable)params + API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use readAttributeBSSIDWithParams on MTRClusterWiFiNetworkDiagnostics"); +- (NSDictionary *)readAttributeRssiWithParams:(MTRReadParams * _Nullable)params + API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) + MTR_NEWLY_DEPRECATED("Please use readAttributeRSSIWithParams on MTRClusterWiFiNetworkDiagnostics"); @end @interface MTRClusterEthernetNetworkDiagnostics (Deprecated) diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm index f167157a8f7209..fa256ffa99ce71 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm @@ -9050,11 +9050,11 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams } } -- (NSDictionary *)readAttributeBssidWithParams:(MTRReadParams * _Nullable)params +- (NSDictionary *)readAttributeBSSIDWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID) - attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBssidID) + attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBSSIDID) params:params]; } @@ -9082,11 +9082,11 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams params:params]; } -- (NSDictionary *)readAttributeRssiWithParams:(MTRReadParams * _Nullable)params +- (NSDictionary *)readAttributeRSSIWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID) - attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRssiID) + attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRSSIID) params:params]; } @@ -9227,6 +9227,14 @@ - (void)resetCountsWithExpectedValues:(NSArray *> * expectedValueInterval:expectedValueIntervalMs completionHandler:completionHandler]; } +- (NSDictionary *)readAttributeBssidWithParams:(MTRReadParams * _Nullable)params +{ + return [self readAttributeBSSIDWithParams:params]; +} +- (NSDictionary *)readAttributeRssiWithParams:(MTRReadParams * _Nullable)params +{ + return [self readAttributeRSSIWithParams:params]; +} @end @implementation MTRClusterEthernetNetworkDiagnostics diff --git a/src/platform/Ameba/DiagnosticDataProviderImpl.cpp b/src/platform/Ameba/DiagnosticDataProviderImpl.cpp index 4f3b9a7e4fbb23..dad583f5e1d084 100644 --- a/src/platform/Ameba/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Ameba/DiagnosticDataProviderImpl.cpp @@ -273,7 +273,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiBssId(ByteSpan & BssId) CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiVersion(uint8_t & wifiVersion) { // Support 802.11a/n Wi-Fi in AmebaD chipset - wifiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wifiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; return CHIP_NO_ERROR; } diff --git a/src/platform/Beken/DiagnosticDataProviderImpl.cpp b/src/platform/Beken/DiagnosticDataProviderImpl.cpp index b6445fb1a09eaa..b2f0be7a48192a 100644 --- a/src/platform/Beken/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Beken/DiagnosticDataProviderImpl.cpp @@ -173,7 +173,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiBssId(ByteSpan & BssId) CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiVersion(uint8_t & wifiVersion) { // Support 802.11a/n Wi-Fi in Beken chipset - wifiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wifiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; return CHIP_NO_ERROR; } diff --git a/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp index 76cbd5fc1ab6ef..4413309c1f1857 100644 --- a/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp @@ -260,17 +260,17 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiVersion(uint8_t & wiFiVersion) /* VHT Capable */ if (bss_info.vht_cap) { - wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AC; + wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_AC; } /* HT Capable */ else if (bss_info.n_cap) { - wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; } /* 11g Capable */ else { - wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11G; + wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_G; } exit: diff --git a/src/platform/Linux/ConnectivityManagerImpl.cpp b/src/platform/Linux/ConnectivityManagerImpl.cpp index 866d1aec1485fa..4447a1a4a183cb 100644 --- a/src/platform/Linux/ConnectivityManagerImpl.cpp +++ b/src/platform/Linux/ConnectivityManagerImpl.cpp @@ -1241,7 +1241,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetWiFiSecurityType(uint8_t & securityType) CHIP_ERROR ConnectivityManagerImpl::GetWiFiVersion(uint8_t & wiFiVersion) { // We don't have driect API to get the WiFi version yet, retrun 802.11n on Linux simulation. - wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; return CHIP_NO_ERROR; } diff --git a/src/platform/nrfconnect/wifi/WiFiManager.cpp b/src/platform/nrfconnect/wifi/WiFiManager.cpp index 0a0e50cfdd0b1c..7c2313f09014e8 100644 --- a/src/platform/nrfconnect/wifi/WiFiManager.cpp +++ b/src/platform/nrfconnect/wifi/WiFiManager.cpp @@ -356,7 +356,7 @@ CHIP_ERROR WiFiManager::GetWiFiInfo(WiFiInfo & info) const // i.e. the AP might support WiFi 5 only even though the station // is WiFi 6 ready (so the connection is WiFi 5 effectively). // For now just return what the station supports. - info.mWiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AX; + info.mWiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_AX; wpa_signal_info signalInfo{}; if (0 == wpa_drv_signal_poll(wpa_s, &signalInfo)) diff --git a/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp b/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp index bf6986f8985ded..e78aa6ef406a76 100644 --- a/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp +++ b/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp @@ -244,7 +244,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetWiFiSecurityType(uint8_t & securityType) CHIP_ERROR ConnectivityManagerImpl::GetWiFiVersion(uint8_t & wiFiVersion) { - wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; ChipLogProgress(DeviceLayer, "GetWiFiVersion: %u", wiFiVersion); return CHIP_NO_ERROR; } diff --git a/src/platform/silabs/DiagnosticDataProviderImpl.cpp b/src/platform/silabs/DiagnosticDataProviderImpl.cpp index 9924f8f3a1691a..ac14bb1924e935 100644 --- a/src/platform/silabs/DiagnosticDataProviderImpl.cpp +++ b/src/platform/silabs/DiagnosticDataProviderImpl.cpp @@ -374,7 +374,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiSecurityType(uint8_t & securityTyp CHIP_ERROR DiagnosticDataProviderImpl::GetWiFiVersion(uint8_t & wifiVersion) { - wifiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wifiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; return CHIP_NO_ERROR; } diff --git a/src/platform/webos/ConnectivityManagerImpl.cpp b/src/platform/webos/ConnectivityManagerImpl.cpp index a4c54484cc9728..014dd5260d04a3 100644 --- a/src/platform/webos/ConnectivityManagerImpl.cpp +++ b/src/platform/webos/ConnectivityManagerImpl.cpp @@ -1203,7 +1203,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetWiFiSecurityType(uint8_t & securityType) CHIP_ERROR ConnectivityManagerImpl::GetWiFiVersion(uint8_t & wiFiVersion) { // We don't have driect API to get the WiFi version yet, retrun 802.11n on Linux simulation. - wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N; + wiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_N; return CHIP_NO_ERROR; } diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 5a3328ccce0a6f..f7d01747746db2 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -665,7 +665,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -673,7 +673,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h index 493ab3d8f669f2..fc8eff8b6e62e2 100644 --- a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h @@ -483,7 +483,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -491,7 +491,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h index bc24c491899a3c..7349e4face5ac2 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h @@ -917,19 +917,19 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(WiFiNetworkDiagnostics: // Need to convert consumers to using the new enum classes, so we // don't just have casts all over. #ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM - case EnumType::k80211a: - case EnumType::k80211b: - case EnumType::k80211g: - case EnumType::k80211n: - case EnumType::k80211ac: - case EnumType::k80211ax: + case EnumType::kA: + case EnumType::kB: + case EnumType::kG: + case EnumType::kN: + case EnumType::kAc: + case EnumType::kAx: #else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM - case EMBER_ZCL_WI_FI_VERSION_TYPE_802__11A: - case EMBER_ZCL_WI_FI_VERSION_TYPE_802__11B: - case EMBER_ZCL_WI_FI_VERSION_TYPE_802__11G: - case EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N: - case EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AC: - case EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AX: + case EMBER_ZCL_WI_FI_VERSION_TYPE_A: + case EMBER_ZCL_WI_FI_VERSION_TYPE_B: + case EMBER_ZCL_WI_FI_VERSION_TYPE_G: + case EMBER_ZCL_WI_FI_VERSION_TYPE_N: + case EMBER_ZCL_WI_FI_VERSION_TYPE_AC: + case EMBER_ZCL_WI_FI_VERSION_TYPE_AX: #endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM return val; default: diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h index a54aa4ea87fb42..e74add6e0f5dd4 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h @@ -859,12 +859,12 @@ enum class WiFiConnectionStatus : uint8_t // Enum for WiFiVersionType enum class WiFiVersionType : uint8_t { - k80211a = 0x00, - k80211b = 0x01, - k80211g = 0x02, - k80211n = 0x03, - k80211ac = 0x04, - k80211ax = 0x05, + kA = 0x00, + kB = 0x01, + kG = 0x02, + kN = 0x03, + kAc = 0x04, + kAx = 0x05, kUnknownEnumValue = 6, }; #else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM diff --git a/zzz_generated/app-common/app-common/zap-generated/enums.h b/zzz_generated/app-common/app-common/zap-generated/enums.h index 5e0312ef23de4c..1cf6abadc709bd 100644 --- a/zzz_generated/app-common/app-common/zap-generated/enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/enums.h @@ -322,12 +322,12 @@ enum EmberAfTemperatureDisplayMode : uint8_t // Enum for WiFiVersionType enum EmberAfWiFiVersionType : uint8_t { - EMBER_ZCL_WI_FI_VERSION_TYPE_802__11A = 0, - EMBER_ZCL_WI_FI_VERSION_TYPE_802__11B = 1, - EMBER_ZCL_WI_FI_VERSION_TYPE_802__11G = 2, - EMBER_ZCL_WI_FI_VERSION_TYPE_802__11N = 3, - EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AC = 4, - EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AX = 5, + EMBER_ZCL_WI_FI_VERSION_TYPE_A = 0, + EMBER_ZCL_WI_FI_VERSION_TYPE_B = 1, + EMBER_ZCL_WI_FI_VERSION_TYPE_G = 2, + EMBER_ZCL_WI_FI_VERSION_TYPE_N = 3, + EMBER_ZCL_WI_FI_VERSION_TYPE_AC = 4, + EMBER_ZCL_WI_FI_VERSION_TYPE_AX = 5, }; #define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT (1) diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h index 24aaf968d0163f..1ec2bd2a6003f8 100644 --- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h +++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h @@ -358,7 +358,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -366,7 +366,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h index 8202d981d9cc50..2a4588a79a317b 100644 --- a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h +++ b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h @@ -322,7 +322,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -330,7 +330,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 1f17c983efb44d..bca49c76875991 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -6086,7 +6086,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP case WiFiNetworkDiagnostics::Attributes::Bssid::Id: { chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("bssid", 1, value); + return DataModelLogger::LogValue("BSSID", 1, value); } case WiFiNetworkDiagnostics::Attributes::SecurityType::Id: { chip::app::DataModel::Nullable value; @@ -6106,7 +6106,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP case WiFiNetworkDiagnostics::Attributes::Rssi::Id: { chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("Rssi", 1, value); + return DataModelLogger::LogValue("RSSI", 1, value); } case WiFiNetworkDiagnostics::Attributes::BeaconLostCount::Id: { chip::app::DataModel::Nullable value; diff --git a/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h index 9ca50455b472ef..f65581cc45b5fd 100644 --- a/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h +++ b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h @@ -352,7 +352,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -360,7 +360,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index 747502f9781d4e..1e576e960e6289 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -28250,10 +28250,10 @@ class ReadWiFiNetworkDiagnosticsBssid : public ReadAttribute { __auto_type * cluster = [[MTRBaseClusterWiFiNetworkDiagnostics alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - [cluster readAttributeBssidWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) { - NSLog(@"WiFiNetworkDiagnostics.Bssid response %@", [value description]); + [cluster readAttributeBSSIDWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) { + NSLog(@"WiFiNetworkDiagnostics.BSSID response %@", [value description]); if (error != nil) { - LogNSError("WiFiNetworkDiagnostics Bssid read Error", error); + LogNSError("WiFiNetworkDiagnostics BSSID read Error", error); } SetCommandExitStatus(error); }]; @@ -28287,12 +28287,12 @@ class SubscribeAttributeWiFiNetworkDiagnosticsBssid : public SubscribeAttribute if (mAutoResubscribe.HasValue()) { params.resubscribeIfLost = mAutoResubscribe.Value(); } - [cluster subscribeAttributeBssidWithParams:params + [cluster subscribeAttributeBSSIDWithParams:params subscriptionEstablished:^() { mSubscriptionEstablished = YES; } reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) { - NSLog(@"WiFiNetworkDiagnostics.Bssid response %@", [value description]); + NSLog(@"WiFiNetworkDiagnostics.BSSID response %@", [value description]); SetCommandExitStatus(error); }]; @@ -28530,10 +28530,10 @@ class ReadWiFiNetworkDiagnosticsRssi : public ReadAttribute { __auto_type * cluster = [[MTRBaseClusterWiFiNetworkDiagnostics alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - [cluster readAttributeRssiWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) { - NSLog(@"WiFiNetworkDiagnostics.Rssi response %@", [value description]); + [cluster readAttributeRSSIWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"WiFiNetworkDiagnostics.RSSI response %@", [value description]); if (error != nil) { - LogNSError("WiFiNetworkDiagnostics Rssi read Error", error); + LogNSError("WiFiNetworkDiagnostics RSSI read Error", error); } SetCommandExitStatus(error); }]; @@ -28567,12 +28567,12 @@ class SubscribeAttributeWiFiNetworkDiagnosticsRssi : public SubscribeAttribute { if (mAutoResubscribe.HasValue()) { params.resubscribeIfLost = mAutoResubscribe.Value(); } - [cluster subscribeAttributeRssiWithParams:params + [cluster subscribeAttributeRSSIWithParams:params subscriptionEstablished:^() { mSubscriptionEstablished = YES; } reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) { - NSLog(@"WiFiNetworkDiagnostics.Rssi response %@", [value description]); + NSLog(@"WiFiNetworkDiagnostics.RSSI response %@", [value description]); SetCommandExitStatus(error); }]; 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 896ae2a97537f1..2e471589934d39 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -62044,7 +62044,7 @@ class Test_TC_DGWIFI_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeBssidWithCompletion:^(NSData * _Nullable value, NSError * _Nullable err) { + [cluster readAttributeBSSIDWithCompletion:^(NSData * _Nullable value, NSError * _Nullable err) { NSLog(@"TH reads BSSID attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -62148,7 +62148,7 @@ class Test_TC_DGWIFI_2_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeRssiWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + [cluster readAttributeRSSIWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { NSLog(@"Reads RSSI attribute constraints Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); diff --git a/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h index 24aaf968d0163f..1ec2bd2a6003f8 100644 --- a/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h +++ b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h @@ -358,7 +358,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -366,7 +366,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h index 58b0c12300286e..813b729d5c95a5 100644 --- a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h +++ b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h @@ -342,7 +342,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -350,7 +350,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h index 6302684d04c632..56967881e74922 100644 --- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h @@ -361,7 +361,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -369,7 +369,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h index f3857fb1353951..cf0398be95da64 100644 --- a/zzz_generated/lock-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h @@ -399,7 +399,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -407,7 +407,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h index d56322d5664e35..d89ce5d05623d3 100644 --- a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h @@ -277,7 +277,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -285,7 +285,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h index 7a04e417d5fea8..f093105b6d1d17 100644 --- a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h @@ -277,7 +277,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -285,7 +285,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h index 6f632a623524eb..d83982bbd4361a 100644 --- a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h +++ b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h @@ -242,7 +242,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -250,7 +250,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/thermostat/zap-generated/endpoint_config.h b/zzz_generated/thermostat/zap-generated/endpoint_config.h index bc8b8f20549a62..1647ce93393cea 100644 --- a/zzz_generated/thermostat/zap-generated/endpoint_config.h +++ b/zzz_generated/thermostat/zap-generated/endpoint_config.h @@ -383,7 +383,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -391,7 +391,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h index 4001e09e14acf2..15ad0f8690c0a4 100644 --- a/zzz_generated/tv-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h @@ -414,7 +414,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -422,7 +422,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h index 961b204ab4a9d0..bafd2d9c704b1f 100644 --- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h @@ -367,7 +367,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -375,7 +375,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ diff --git a/zzz_generated/window-app/zap-generated/endpoint_config.h b/zzz_generated/window-app/zap-generated/endpoint_config.h index c2791529ab7415..0edabc57e5c5df 100644 --- a/zzz_generated/window-app/zap-generated/endpoint_config.h +++ b/zzz_generated/window-app/zap-generated/endpoint_config.h @@ -363,7 +363,7 @@ \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ { 0x00000000, ZAP_TYPE(OCTET_STRING), 7, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* bssid */ \ + ZAP_EMPTY_DEFAULT() }, /* BSSID */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* SecurityType */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ @@ -371,7 +371,7 @@ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* ChannelNumber */ \ { 0x00000004, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Rssi */ \ + ZAP_EMPTY_DEFAULT() }, /* RSSI */ \ { 0x00000005, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* BeaconLostCount */ \ { 0x00000006, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ From b4ee5bb388c98caa2f9b4a052f4b41569cf14da7 Mon Sep 17 00:00:00 2001 From: wyhong <30567533+wy-hh@users.noreply.github.com> Date: Sat, 7 Jan 2023 03:35:11 +0800 Subject: [PATCH 12/20] [Bouffalolab] Enable BL602 hardware crypto engine for mbedtls (#24272) * create bl_iot_sdk.gni * update bl_iot_sdk.gni * remove more 702 specific-name * update bl602 * update bl602 & bl702 * update toolchain path * fix issues for bl602 * bl602 mbedtls * correct partition table for bl702 and update sdk sub-repo * fix restyle --- .../bouffalolab/BL602/CHIPPlatformConfig.h | 7 +- .../BL602/bl602-chip-mbedtls-config.h | 7 ++ third_party/bouffalolab/bl602/bl_iot_sdk.gni | 115 ++++++++++++------ 3 files changed, 89 insertions(+), 40 deletions(-) diff --git a/src/platform/bouffalolab/BL602/CHIPPlatformConfig.h b/src/platform/bouffalolab/BL602/CHIPPlatformConfig.h index 4117d3a1245ca3..44d3114c1fcc75 100644 --- a/src/platform/bouffalolab/BL602/CHIPPlatformConfig.h +++ b/src/platform/bouffalolab/BL602/CHIPPlatformConfig.h @@ -56,19 +56,18 @@ #define CHIP_CONFIG_HASH_IMPLEMENTATION_MBEDTLS 0 #define CHIP_CONFIG_HASH_IMPLEMENTATION_PLATFORM 0 -// FIXME: BL602 set to MBED-TLS (But this is third-party repo in CHIP, not SDK) - #define CHIP_CONFIG_AES_IMPLEMENTATION_OPENSSL 0 #define CHIP_CONFIG_AES_IMPLEMENTATION_AESNI 0 #define CHIP_CONFIG_AES_IMPLEMENTATION_MBEDTLS 1 #define CHIP_CONFIG_AES_IMPLEMENTATION_PLATFORM 0 -// FIXME: BL602 currently set to CHIP (Does this use Entropy.cpp ?) - #define CHIP_CONFIG_RNG_IMPLEMENTATION_OPENSSL 0 #define CHIP_CONFIG_RNG_IMPLEMENTATION_CHIPDRBG 1 #define CHIP_CONFIG_RNG_IMPLEMENTATION_PLATFORM 0 +//#define CHIP_CONFIG_SHA256_CONTEXT_SIZE sizeof(bl_sha_ctx_t) +#define CHIP_CONFIG_SHA256_CONTEXT_SIZE ((1 + 5 + 18 + 16 + 16) * sizeof(unsigned int)) + #define CHIP_CONFIG_ENABLE_PASE_INITIATOR 0 #define CHIP_CONFIG_ENABLE_PASE_RESPONDER 1 #define CHIP_CONFIG_ENABLE_CASE_INITIATOR 1 diff --git a/src/platform/bouffalolab/BL602/bl602-chip-mbedtls-config.h b/src/platform/bouffalolab/BL602/bl602-chip-mbedtls-config.h index 21e4446a466503..a3b81db8bd5317 100644 --- a/src/platform/bouffalolab/BL602/bl602-chip-mbedtls-config.h +++ b/src/platform/bouffalolab/BL602/bl602-chip-mbedtls-config.h @@ -138,5 +138,12 @@ typedef void mbedtls_ecp_restart_ctx; #define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 +#define MBEDTLS_ENTROPY_HARDWARE_ALT + +#define MBEDTLS_SHA1_ALT +#define MBEDTLS_SHA256_ALT +#define MBEDTLS_AES_ALT +#define MBEDTLS_ECP_ALT + //#include "config-device-acceleration.h" #include "mbedtls/check_config.h" diff --git a/third_party/bouffalolab/bl602/bl_iot_sdk.gni b/third_party/bouffalolab/bl602/bl_iot_sdk.gni index f527f27132f791..6c684a24a9006a 100644 --- a/third_party/bouffalolab/bl602/bl_iot_sdk.gni +++ b/third_party/bouffalolab/bl602/bl_iot_sdk.gni @@ -64,41 +64,6 @@ template("bl_iot_sdk") { } } - source_set("${sdk_target_name}_code") { - sources = [ - "${chip_root}/third_party/mbedtls/repo/library/aes.c", - "${chip_root}/third_party/mbedtls/repo/library/asn1parse.c", - "${chip_root}/third_party/mbedtls/repo/library/asn1write.c", - "${chip_root}/third_party/mbedtls/repo/library/bignum.c", - "${chip_root}/third_party/mbedtls/repo/library/ccm.c", - "${chip_root}/third_party/mbedtls/repo/library/cipher.c", - "${chip_root}/third_party/mbedtls/repo/library/cipher_wrap.c", - "${chip_root}/third_party/mbedtls/repo/library/constant_time.c", - "${chip_root}/third_party/mbedtls/repo/library/ctr_drbg.c", - "${chip_root}/third_party/mbedtls/repo/library/ecdh.c", - "${chip_root}/third_party/mbedtls/repo/library/ecdsa.c", - "${chip_root}/third_party/mbedtls/repo/library/ecp.c", - "${chip_root}/third_party/mbedtls/repo/library/ecp_curves.c", - "${chip_root}/third_party/mbedtls/repo/library/entropy.c", - "${chip_root}/third_party/mbedtls/repo/library/hkdf.c", - "${chip_root}/third_party/mbedtls/repo/library/hmac_drbg.c", - "${chip_root}/third_party/mbedtls/repo/library/md.c", - "${chip_root}/third_party/mbedtls/repo/library/oid.c", - "${chip_root}/third_party/mbedtls/repo/library/pk.c", - "${chip_root}/third_party/mbedtls/repo/library/pk_wrap.c", - "${chip_root}/third_party/mbedtls/repo/library/pkcs5.c", - "${chip_root}/third_party/mbedtls/repo/library/pkwrite.c", - "${chip_root}/third_party/mbedtls/repo/library/platform.c", - "${chip_root}/third_party/mbedtls/repo/library/platform_util.c", - "${chip_root}/third_party/mbedtls/repo/library/sha256.c", - "${chip_root}/third_party/mbedtls/repo/library/sha512.c", - "${chip_root}/third_party/mbedtls/repo/library/x509_create.c", - "${chip_root}/third_party/mbedtls/repo/library/x509write_csr.c", - ] - configs += [ ":${sdk_target_name}_config_freertos" ] - public_configs = [ ":${sdk_target_name}_config" ] - } - source_set("${sdk_target_name}_soc") { defines = [ "BL602_MATTER_SUPPORT" ] @@ -469,6 +434,84 @@ template("bl_iot_sdk") { ] } + config("${sdk_target_name}_config_mbedtls") { + include_dirs = [ + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/include", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port", + ] + + defines = [ "MBEDTLS_CONFIG_FILE=\"bl602-chip-mbedtls-config.h\"" ] + } + + source_set("${sdk_target_name}_mbedtls") { + include_dirs = + [ "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library" ] + + sources = [ + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/aes_alt.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/bignum_hw.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/ecp_alt.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/ecp_curves_alt.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/hw_common.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/hw_common.h", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/sha1_alt.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_acc/sha256_alt.c", + ] + + sources += [ + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/bignum_ext.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/hw_entropy_poll.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/mbedtls_port_mem.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/net_sockets.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/port/pkparse.c", + ] + + sources += [ + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/aes.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/asn1parse.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/asn1write.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/bignum.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/ccm.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/cipher.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/cipher_wrap.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/constant_time.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/ctr_drbg.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/ecdh.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/ecdsa.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/ecp.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/ecp_curves.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/entropy.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/hkdf.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/hmac_drbg.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/md.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/oid.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/pk.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/pk_wrap.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/pkcs5.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/pkwrite.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/platform.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/platform_util.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/sha256.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/sha512.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/x509_create.c", + "${bl_iot_sdk_root}/components/security/mbedtls_lts/mbedtls/library/x509write_csr.c", + ] + + cflags_c = [ + "-Wno-sign-compare", + "-Wno-implicit-function-declaration", + ] + configs += [ + ":${sdk_target_name}_config_BSP_Driver", + ":${sdk_target_name}_config_hosal", + ":${sdk_target_name}_config_freertos", + ] + public_configs = [ + ":${sdk_target_name}_config", + ":${sdk_target_name}_config_mbedtls", + ] + } + config("${sdk_target_name}_ble_config") { include_dirs = [ "${bl_iot_sdk_root}/components/network/ble/blecontroller/ble_inc", @@ -874,11 +917,11 @@ template("bl_iot_sdk") { ":${sdk_target_name}_bl602_freertos", ":${sdk_target_name}_blcrypto_suite", ":${sdk_target_name}_ble", - ":${sdk_target_name}_code", ":${sdk_target_name}_fs", ":${sdk_target_name}_hosal", ":${sdk_target_name}_libc", ":${sdk_target_name}_lwip", + ":${sdk_target_name}_mbedtls", ":${sdk_target_name}_soc", ":${sdk_target_name}_stage", ":${sdk_target_name}_sys", From e04c1bff8f975c0759912a775c1117cbf18dfd53 Mon Sep 17 00:00:00 2001 From: Kamil Kasperczyk <66371704+kkasperczyk-no@users.noreply.github.com> Date: Fri, 6 Jan 2023 20:35:49 +0100 Subject: [PATCH 13/20] [nrfconnect] Added LOG dependency for CHIP_APP_LOG_LEVEL (#24279) CHIP_APP_LOG_LEVEL tries to set default to LOG_DEFAULT_LEVEL, but if LOG is disabled for release build the assembler will fail to process it. Added LOG dependency to make sure that LOG_DEFAULT_LEVEL exists before using it. --- config/nrfconnect/chip-module/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/config/nrfconnect/chip-module/Kconfig b/config/nrfconnect/chip-module/Kconfig index b6700cbe7f3602..ad61ab9e848112 100644 --- a/config/nrfconnect/chip-module/Kconfig +++ b/config/nrfconnect/chip-module/Kconfig @@ -25,6 +25,7 @@ config CHIP_DEVICE_VENDOR_NAME config CHIP_APP_LOG_LEVEL int "Set logging level in application" default LOG_DEFAULT_LEVEL + depends on LOG help Sets the logging level in Matter application. This config should be used only within application. From 92910376c9ed7040361292c4cb5b6e77a0bc8143 Mon Sep 17 00:00:00 2001 From: Alex Tsitsiura Date: Fri, 6 Jan 2023 22:27:52 +0200 Subject: [PATCH 14/20] [Telink] Update apps and configs & Update Telink image to 0.6.27 (#24200) * [Telink] Rework flash partitions & use swap move algorithm * [Telink] Removed timer to BLE disconnect * [Telink] Rework flash partitions & use swap move algorithm * [Telink] Use latest Telink mcuboot changes * [Telink] Enable reboot system when fault happened * [Telink] Rework system status LED loop and made the Factory-Reset Button more user friendly * [Telink] Revert submodule change * [Telink] Added last changes also to the Thermostat example * [Telink] Restyled * [Telink] Add contact sensor app example * [Telink] Add new target for CI * [Telink] Fix device re-pairing * [Telink] Enable NVS lookup cache * [Telink] Update every image to 0.6.27 * [Telink] Ordered by alphabet targets * [Telink] Fix example name * Revert "[Telink] Update every image to 0.6.27" This reverts commit 6df90e712929e7e6dc5eb68b68a2ac75d9a47a61. * [Telink] Update Telink image to 0.6.27 Co-authored-by: Serhii Salamakha Co-authored-by: Andrii Bilynskyi --- .github/workflows/examples-telink.yaml | 12 +- .vscode/tasks.json | 1 + config/telink/app/zephyr.conf | 6 + config/telink/chip-module/CMakeLists.txt | 18 +- .../telink/include/AppEvent.h | 12 + .../all-clusters-app/telink/include/AppTask.h | 6 + .../all-clusters-app/telink/src/AppTask.cpp | 104 +++- .../telink/include/AppEvent.h | 12 + .../telink/include/AppTask.h | 6 + .../telink/src/AppTask.cpp | 102 +++- examples/contact-sensor-app/telink/.gitignore | 1 + .../contact-sensor-app/telink/CMakeLists.txt | 64 +++ examples/contact-sensor-app/telink/Readme.md | 159 ++++++ .../telink/include/AppConfig.h | 37 ++ .../telink/include/AppEvent.h | 57 ++ .../telink/include/AppTask.h | 107 ++++ .../telink/include/CHIPProjectConfig.h | 39 ++ .../telink/include/ContactSensorManager.h | 62 +++ examples/contact-sensor-app/telink/prj.conf | 58 ++ .../contact-sensor-app/telink/src/AppTask.cpp | 524 ++++++++++++++++++ .../telink/src/ContactSensorManager.cpp | 87 +++ .../telink/src/ZclCallbacks.cpp | 56 ++ .../contact-sensor-app/telink/src/main.cpp | 82 +++ .../telink/third_party/connectedhomeip | 1 + .../telink/include/AppEvent.h | 7 + .../light-switch-app/telink/include/AppTask.h | 6 + .../light-switch-app/telink/src/AppTask.cpp | 109 +++- .../lighting-app/telink/include/AppEvent.h | 7 + .../lighting-app/telink/include/AppTask.h | 7 +- examples/lighting-app/telink/src/AppTask.cpp | 114 +++- .../telink/include/AppEvent.h | 7 + .../telink/include/AppTask.h | 6 + .../ota-requestor-app/telink/src/AppTask.cpp | 104 +++- .../telink/util/include/ButtonManager.h | 3 +- .../platform/telink/util/include/LEDWidget.h | 11 +- .../telink/util/src/ButtonManager.cpp | 21 +- .../platform/telink/util/src/LEDWidget.cpp | 59 +- examples/thermostat/telink/include/AppEvent.h | 7 + examples/thermostat/telink/include/AppTask.h | 6 + examples/thermostat/telink/src/AppTask.cpp | 107 +++- scripts/build/build/targets.py | 1 + scripts/build/builders/telink.py | 5 + .../build/testdata/all_targets_linux_x64.txt | 2 +- scripts/tools/telink/mfg_tool.py | 2 +- scripts/tools/telink/readme.md | 2 +- src/platform/telink/BLEManagerImpl.cpp | 15 +- src/platform/telink/BLEManagerImpl.h | 1 - 47 files changed, 2055 insertions(+), 167 deletions(-) create mode 100644 examples/contact-sensor-app/telink/.gitignore create mode 100755 examples/contact-sensor-app/telink/CMakeLists.txt create mode 100755 examples/contact-sensor-app/telink/Readme.md create mode 100755 examples/contact-sensor-app/telink/include/AppConfig.h create mode 100755 examples/contact-sensor-app/telink/include/AppEvent.h create mode 100644 examples/contact-sensor-app/telink/include/AppTask.h create mode 100755 examples/contact-sensor-app/telink/include/CHIPProjectConfig.h create mode 100644 examples/contact-sensor-app/telink/include/ContactSensorManager.h create mode 100755 examples/contact-sensor-app/telink/prj.conf create mode 100644 examples/contact-sensor-app/telink/src/AppTask.cpp create mode 100644 examples/contact-sensor-app/telink/src/ContactSensorManager.cpp create mode 100644 examples/contact-sensor-app/telink/src/ZclCallbacks.cpp create mode 100755 examples/contact-sensor-app/telink/src/main.cpp create mode 120000 examples/contact-sensor-app/telink/third_party/connectedhomeip diff --git a/.github/workflows/examples-telink.yaml b/.github/workflows/examples-telink.yaml index 9e5737c84828f9..28d5c7faf03f4f 100644 --- a/.github/workflows/examples-telink.yaml +++ b/.github/workflows/examples-telink.yaml @@ -35,8 +35,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - # TODO: update this to connectedhomeip/chip-build-vscode:0.6.27 once we can compile - image: connectedhomeip/chip-build-telink:0.6.18 + image: connectedhomeip/chip-build-telink:0.6.27 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" @@ -76,6 +75,15 @@ jobs: out/telink-tlsr9518adk80d-all-clusters-minimal/zephyr/zephyr.elf \ /tmp/bloat_reports/ + - name: Build example Telink Contact Sensor App + run: | + ./scripts/run_in_build_env.sh \ + "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-contact-sensor' build" + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + telink tlsr9518adk80d contact-sensor-app \ + out/telink-tlsr9518adk80d-contact-sensor/zephyr/zephyr.elf \ + /tmp/bloat_reports/ + - name: Build example Telink Lighting App run: | ./scripts/run_in_build_env.sh \ diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 2dfa9587570c4d..32db085151c081 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -638,6 +638,7 @@ "qpg-qpg6100-lock", "telink-tlsr9518adk80d-all-clusters", "telink-tlsr9518adk80d-all-clusters-minimal", + "telink-tlsr9518adk80d-contact-sensor", "telink-tlsr9518adk80d-light", "telink-tlsr9518adk80d-light-switch", "telink-tlsr9518adk80d-ota-requestor", diff --git a/config/telink/app/zephyr.conf b/config/telink/app/zephyr.conf index 0bb8ffeca65103..9d02f8f06d4b31 100644 --- a/config/telink/app/zephyr.conf +++ b/config/telink/app/zephyr.conf @@ -118,6 +118,12 @@ CONFIG_DYNAMIC_INTERRUPTS=y # nvs_sector_size = flash_page_size * mult = 256 * 8 = 2048 CONFIG_SETTINGS_NVS_SECTOR_SIZE_MULT=8 +# Enable NVS lookup cache +CONFIG_NVS_LOOKUP_CACHE=y + +# Reboot system when fault happened +CONFIG_TELINK_B91_REBOOT_ON_FAULT=y + # Shell settings CONFIG_SHELL=n CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE=255 diff --git a/config/telink/chip-module/CMakeLists.txt b/config/telink/chip-module/CMakeLists.txt index 2328ef28c13893..4f1ed485c156b4 100644 --- a/config/telink/chip-module/CMakeLists.txt +++ b/config/telink/chip-module/CMakeLists.txt @@ -297,21 +297,14 @@ add_dependencies(chip chip-gn) if (CONFIG_CHIP_OTA_IMAGE_BUILD) add_custom_target(build_mcuboot ALL COMMAND - west build -b tlsr9518adk80d -d build_mcuboot ${ZEPHYR_BASE}/../bootloader/mcuboot/boot/zephyr - ) - - add_custom_target(west_sign ALL - COMMAND - west sign -t imgtool -p ${ZEPHYR_BASE}/../bootloader/mcuboot/scripts/imgtool.py -d ${PROJECT_BINARY_DIR}/.. -- --key ${ZEPHYR_BASE}/../bootloader/mcuboot/root-rsa-2048.pem - BYPRODUCTS - ${PROJECT_BINARY_DIR}/zephyr.signed.bin + west build -b tlsr9518adk80d -d build_mcuboot ${ZEPHYR_BASE}/../bootloader/mcuboot/boot/zephyr -- -DCONFIG_BOOT_SWAP_USING_MOVE=y ) add_custom_target(merge_mcuboot ALL COMMAND dd if=${PROJECT_BINARY_DIR}/../modules/chip-module/build_mcuboot/zephyr/zephyr.bin of=${PROJECT_BINARY_DIR}/zephyr.bin COMMAND - dd if=${PROJECT_BINARY_DIR}/zephyr.signed.bin of=${PROJECT_BINARY_DIR}/zephyr.bin bs=1024 seek=96 + dd if=${PROJECT_BINARY_DIR}/zephyr.signed.bin of=${PROJECT_BINARY_DIR}/zephyr.bin bs=1024 seek=76 ) chip_ota_image(chip-ota-image @@ -319,15 +312,14 @@ if (CONFIG_CHIP_OTA_IMAGE_BUILD) OUTPUT_FILE ${PROJECT_BINARY_DIR}/zephyr-ota.bin ) - add_dependencies(west_sign ${ZEPHYR_FINAL_EXECUTABLE}) - add_dependencies(merge_mcuboot west_sign) - add_dependencies(chip-ota-image west_sign) + add_dependencies(merge_mcuboot ${ZEPHYR_FINAL_EXECUTABLE}) + add_dependencies(chip-ota-image ${ZEPHYR_FINAL_EXECUTABLE}) endif() if (CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE) add_custom_target(merge_factory_data ALL COMMAND - dd if=${PROJECT_BINARY_DIR}/factory/factory_data.bin of=${PROJECT_BINARY_DIR}/zephyr.bin bs=1024 seek=2000 + dd if=${PROJECT_BINARY_DIR}/factory/factory_data.bin of=${PROJECT_BINARY_DIR}/zephyr.bin bs=1024 seek=1040 ) if (CONFIG_CHIP_OTA_IMAGE_BUILD) add_dependencies(merge_factory_data merge_mcuboot) diff --git a/examples/all-clusters-app/telink/include/AppEvent.h b/examples/all-clusters-app/telink/include/AppEvent.h index 000f3e8653d3ff..54250995e06ca8 100644 --- a/examples/all-clusters-app/telink/include/AppEvent.h +++ b/examples/all-clusters-app/telink/include/AppEvent.h @@ -23,11 +23,15 @@ struct AppEvent; typedef void (*EventHandler)(AppEvent *); +class LEDWidget; + struct AppEvent { enum AppEventTypes { kEventType_Button = 0, + kEventType_Timer, + kEventType_UpdateLedState, }; uint16_t Type; @@ -38,6 +42,14 @@ struct AppEvent { uint8_t Action; } ButtonEvent; + struct + { + void * Context; + } TimerEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; }; EventHandler Handler; diff --git a/examples/all-clusters-app/telink/include/AppTask.h b/examples/all-clusters-app/telink/include/AppTask.h index d893794235fb47..7787968458b867 100644 --- a/examples/all-clusters-app/telink/include/AppTask.h +++ b/examples/all-clusters-app/telink/include/AppTask.h @@ -19,6 +19,7 @@ #pragma once #include "AppEvent.h" +#include "LEDWidget.h" #include @@ -43,15 +44,20 @@ class AppTask void DispatchEvent(AppEvent * event); static void UpdateStatusLED(); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); static void FactoryResetButtonEventHandler(void); static void StartThreadButtonEventHandler(void); static void StartBleAdvButtonEventHandler(void); static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); static void FactoryResetHandler(AppEvent * aEvent); static void StartThreadHandler(AppEvent * aEvent); static void StartBleAdvHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); static void InitButtons(void); diff --git a/examples/all-clusters-app/telink/src/AppTask.cpp b/examples/all-clusters-app/telink/src/AppTask.cpp index f5b8cac574c23a..9f831beecfaf9b 100644 --- a/examples/all-clusters-app/telink/src/AppTask.cpp +++ b/examples/all-clusters-app/telink/src/AppTask.cpp @@ -21,7 +21,6 @@ #include "AppConfig.h" #include "AppEvent.h" #include "ButtonManager.h" -#include "LEDWidget.h" #include "binding-handler.h" #include #include @@ -48,12 +47,13 @@ LOG_MODULE_DECLARE(app); namespace { - -constexpr int kAppEventQueueSize = 10; -constexpr uint8_t kButtonPushEvent = 1; -constexpr uint8_t kButtonReleaseEvent = 0; +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; LEDWidget sStatusLED; @@ -61,10 +61,11 @@ Button sFactoryResetButton; Button sThreadStartButton; Button sBleAdvStartButton; -bool sIsThreadProvisioned = false; -bool sIsThreadEnabled = false; -bool sIsThreadAttached = false; -bool sHaveBLEConnections = false; +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider; @@ -108,6 +109,17 @@ using namespace ::chip::DeviceLayer::Internal; AppTask AppTask::sAppTask; +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + constexpr EndpointId kNetworkCommissioningEndpointSecondary = 0xFFFE; CHIP_ERROR AppTask::Init() @@ -118,12 +130,17 @@ CHIP_ERROR AppTask::Init() // Initialize status LED LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); sStatusLED.Init(SYSTEM_STATE_LED_PIN); UpdateStatusLED(); InitButtons(); + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + // Init ZCL Data Model and start server static chip::CommonCaseDeviceServerInitParams initParams; (void) initParams.InitializeStaticResourcesBeforeServerInit(); @@ -168,6 +185,13 @@ CHIP_ERROR AppTask::Init() return ret; } + ret = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (ret != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return ret; + } + return CHIP_NO_ERROR; } @@ -192,8 +216,6 @@ CHIP_ERROR AppTask::StartApp() DispatchEvent(&event); ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); } - - sStatusLED.Animate(); } } @@ -209,8 +231,16 @@ void AppTask::FactoryResetButtonEventHandler(void) void AppTask::FactoryResetHandler(AppEvent * aEvent) { - LOG_INF("FactoryResetHandler"); - chip::Server::GetInstance().ScheduleFactoryReset(); + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } } void AppTask::StartThreadButtonEventHandler(void) @@ -272,6 +302,23 @@ void AppTask::StartBleAdvHandler(AppEvent * aEvent) } } +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + void AppTask::UpdateStatusLED() { if (sIsThreadProvisioned && sIsThreadEnabled) @@ -342,11 +389,36 @@ void AppTask::DispatchEvent(AppEvent * aEvent) } } +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + void AppTask::InitButtons(void) { - sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, FactoryResetButtonEventHandler); - sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, StartThreadButtonEventHandler); - sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, StartBleAdvButtonEventHandler); + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, false, StartThreadButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); ButtonManagerInst().AddButton(sFactoryResetButton); ButtonManagerInst().AddButton(sThreadStartButton); diff --git a/examples/all-clusters-minimal-app/telink/include/AppEvent.h b/examples/all-clusters-minimal-app/telink/include/AppEvent.h index 000f3e8653d3ff..54250995e06ca8 100644 --- a/examples/all-clusters-minimal-app/telink/include/AppEvent.h +++ b/examples/all-clusters-minimal-app/telink/include/AppEvent.h @@ -23,11 +23,15 @@ struct AppEvent; typedef void (*EventHandler)(AppEvent *); +class LEDWidget; + struct AppEvent { enum AppEventTypes { kEventType_Button = 0, + kEventType_Timer, + kEventType_UpdateLedState, }; uint16_t Type; @@ -38,6 +42,14 @@ struct AppEvent { uint8_t Action; } ButtonEvent; + struct + { + void * Context; + } TimerEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; }; EventHandler Handler; diff --git a/examples/all-clusters-minimal-app/telink/include/AppTask.h b/examples/all-clusters-minimal-app/telink/include/AppTask.h index d6a02734a40e74..7d0168759055d0 100644 --- a/examples/all-clusters-minimal-app/telink/include/AppTask.h +++ b/examples/all-clusters-minimal-app/telink/include/AppTask.h @@ -19,6 +19,7 @@ #pragma once #include "AppEvent.h" +#include "LEDWidget.h" #include @@ -43,13 +44,18 @@ class AppTask void DispatchEvent(AppEvent * event); static void UpdateStatusLED(); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); static void FactoryResetButtonEventHandler(void); static void StartBleAdvButtonEventHandler(void); static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); static void FactoryResetHandler(AppEvent * aEvent); static void StartBleAdvHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); static void InitButtons(void); diff --git a/examples/all-clusters-minimal-app/telink/src/AppTask.cpp b/examples/all-clusters-minimal-app/telink/src/AppTask.cpp index 8ecf29eda06939..4d0f29cb87efea 100644 --- a/examples/all-clusters-minimal-app/telink/src/AppTask.cpp +++ b/examples/all-clusters-minimal-app/telink/src/AppTask.cpp @@ -21,7 +21,6 @@ #include "AppConfig.h" #include "AppEvent.h" #include "ButtonManager.h" -#include "LEDWidget.h" #include "binding-handler.h" #include #include @@ -45,22 +44,24 @@ LOG_MODULE_DECLARE(app); namespace { - -constexpr int kAppEventQueueSize = 10; -constexpr uint8_t kButtonPushEvent = 1; -constexpr uint8_t kButtonReleaseEvent = 0; +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; LEDWidget sStatusLED; Button sFactoryResetButton; Button sBleAdvStartButton; -bool sIsThreadProvisioned = false; -bool sIsThreadEnabled = false; -bool sIsThreadAttached = false; -bool sHaveBLEConnections = false; +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; } // namespace @@ -71,6 +72,17 @@ using namespace ::chip::DeviceLayer::Internal; AppTask AppTask::sAppTask; +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + constexpr EndpointId kNetworkCommissioningEndpointSecondary = 0xFFFE; CHIP_ERROR AppTask::Init() @@ -81,12 +93,17 @@ CHIP_ERROR AppTask::Init() // Initialize status LED LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); sStatusLED.Init(SYSTEM_STATE_LED_PIN); UpdateStatusLED(); InitButtons(); + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + // Init ZCL Data Model and start server static chip::CommonCaseDeviceServerInitParams initParams; (void) initParams.InitializeStaticResourcesBeforeServerInit(); @@ -128,6 +145,13 @@ CHIP_ERROR AppTask::Init() return ret; } + ret = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (ret != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return ret; + } + return CHIP_NO_ERROR; } @@ -152,8 +176,6 @@ CHIP_ERROR AppTask::StartApp() DispatchEvent(&event); ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); } - - sStatusLED.Animate(); } } @@ -169,8 +191,16 @@ void AppTask::FactoryResetButtonEventHandler(void) void AppTask::FactoryResetHandler(AppEvent * aEvent) { - LOG_INF("FactoryResetHandler"); - chip::Server::GetInstance().ScheduleFactoryReset(); + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } } void AppTask::StartBleAdvButtonEventHandler(void) @@ -206,6 +236,23 @@ void AppTask::StartBleAdvHandler(AppEvent * aEvent) } } +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + void AppTask::UpdateStatusLED() { if (sIsThreadProvisioned && sIsThreadEnabled) @@ -276,10 +323,35 @@ void AppTask::DispatchEvent(AppEvent * aEvent) } } +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + void AppTask::InitButtons(void) { - sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, FactoryResetButtonEventHandler); - sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, StartBleAdvButtonEventHandler); + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); ButtonManagerInst().AddButton(sFactoryResetButton); ButtonManagerInst().AddButton(sBleAdvStartButton); diff --git a/examples/contact-sensor-app/telink/.gitignore b/examples/contact-sensor-app/telink/.gitignore new file mode 100644 index 00000000000000..84c048a73cc2e5 --- /dev/null +++ b/examples/contact-sensor-app/telink/.gitignore @@ -0,0 +1 @@ +/build/ diff --git a/examples/contact-sensor-app/telink/CMakeLists.txt b/examples/contact-sensor-app/telink/CMakeLists.txt new file mode 100755 index 00000000000000..b75ad4764331b4 --- /dev/null +++ b/examples/contact-sensor-app/telink/CMakeLists.txt @@ -0,0 +1,64 @@ +# +# 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. +# +cmake_minimum_required(VERSION 3.13.1) + +set(BOARD tlsr9518adk80d) + +get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/third_party/connectedhomeip REALPATH) +get_filename_component(TELINK_COMMON ${CHIP_ROOT}/examples/platform/telink REALPATH) +get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) + +set(CONF_FILE ${CHIP_ROOT}/config/telink/app/zephyr.conf prj.conf) + +# Load NCS/Zephyr build system +list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/telink/chip-module) +find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) + +project(chip-telink-contact-sensor-example) + +include(${CHIP_ROOT}/config/telink/app/enable-gnu-std.cmake) +include(${CHIP_ROOT}/src/app/chip_data_model.cmake) + +target_compile_options(app PRIVATE -fpermissive) + +target_include_directories(app PRIVATE + include + ${GEN_DIR}/app-common + ${GEN_DIR}/contact-sensor-app + ${TELINK_COMMON}/util/include) + +add_definitions( + "-DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=" +) + +target_sources(app PRIVATE + src/AppTask.cpp + src/ContactSensorManager.cpp + src/main.cpp + src/ZclCallbacks.cpp + ${GEN_DIR}/contact-sensor-app/zap-generated/IMClusterCommandHandler.cpp + ${TELINK_COMMON}/util/src/LEDWidget.cpp + ${TELINK_COMMON}/util/src/ButtonManager.cpp + ${TELINK_COMMON}/util/src/ThreadUtil.cpp) + +chip_configure_data_model(app + INCLUDE_SERVER + ZAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../contact-sensor-common/contact-sensor-app.zap +) + +if(CONFIG_CHIP_OTA_REQUESTOR) + target_sources(app PRIVATE ${TELINK_COMMON}/util/src/OTAUtil.cpp) +endif() diff --git a/examples/contact-sensor-app/telink/Readme.md b/examples/contact-sensor-app/telink/Readme.md new file mode 100755 index 00000000000000..31b004dd7aaa5b --- /dev/null +++ b/examples/contact-sensor-app/telink/Readme.md @@ -0,0 +1,159 @@ +# Matter Telink Contact Sensor Example Application + +You can use this example as a reference for creating your own application. + +![Telink B91 EVK](http://wiki.telink-semi.cn/wiki/assets/Hardware/B91_Generic_Starter_Kit_Hardware_Guide/connection_chart.png) + +## Build and flash + +1. Pull docker image from repository: + + ```bash + $ docker pull connectedhomeip/chip-build-telink:latest + ``` + +1. Run docker container: + + ```bash + $ docker run -it --rm -v ${CHIP_BASE}:/root/chip -v /dev/bus/usb:/dev/bus/usb --device-cgroup-rule "c 189:* rmw" connectedhomeip/chip-build-telink:latest + ``` + + here `${CHIP_BASE}` is directory which contains CHIP repo files **!!!Pay + attention that OUTPUT_DIR should contains ABSOLUTE path to output dir** + +1. Activate the build environment: + + ```bash + $ source ./scripts/activate.sh + ``` + +1. In the example dir run: + + ```bash + $ west build + ``` + +1. Flash binary: + + ``` + $ west flash --erase + ``` + +## Usage + +### UART + +To get output from device, connect UART to following pins: + +| Name | Pin | +| :--: | :---------------------------- | +| RX | PB3 (pin 17 of J34 connector) | +| TX | PB2 (pin 16 of J34 connector) | +| GND | GND | + +### Buttons + +The following buttons are available on **tlsr9518adk80d** board: + +| Name | Function | Description | +| :------- | :--------------------- | :----------------------------------------------------------------------------------------------------- | +| Button 1 | Factory reset | Perform factory reset to forget currently commissioned Thread network and back to uncommissioned state | +| Button 2 | Toggle Contact State | Manually triggers the Contact Sensor State | +| Button 3 | NA | NA | +| Button 4 | Open commission window | The button is opening commissioning window to perform commissioning over BLE | + +### LEDs + +**Red** LED indicates current state of Thread network. It ables to be in +following states: + +| State | Description | +| :-------------------------- | :--------------------------------------------------------------------------- | +| Blinks with short pulses | Device is not commissioned to Thread, Thread is disabled | +| Blinls with frequent pulses | Device is commissioned, Thread enabled. Device trying to JOIN thread network | +| Blinks with whde pulses | Device commissioned and joined to thread network as CHILD | + +**Blue** LED shows current state of Contact Sensor + +### CHIP tool commands + +1. Build + [chip-tool cli](https://github.com/project-chip/connectedhomeip/blob/master/examples/chip-tool/README.md) + +2. Pair with device + + ``` + ${CHIP_TOOL_DIR}/chip-tool pairing ble-thread ${NODE_ID} hex:${DATASET} ${PIN_CODE} ${DISCRIMINATOR} + ``` + + Example: + + ``` + ./chip-tool pairing ble-thread 1234 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd61f77bd3df233e051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f010212340410445f2b5ca6f2a93a55ce570a70efeecb0c0402a0fff8 20202021 3840 + ``` + +### OTA with Linux OTA Provider + +OTA feature enabled by default only for ota-requestor-app example. To enable OTA +feature for another Telink example: + +- set CONFIG_CHIP_OTA_REQUESTOR=y in corresponding "prj.conf" configuration + file. + +After build application with enabled OTA feature, use next binary files: + +- zephyr.bin - main binary to flash PCB (Use 2MB PCB). +- zephyr-ota.bin - binary for OTA Provider + +All binaries has the same SW version. To test OTA “zephyr-ota.bin” should have +higher SW version than base SW. Set CONFIG_CHIP_DEVICE_SOFTWARE_VERSION=2 in +corresponding “prj.conf” configuration file. + +Usage of OTA: + +- Build the [Linux OTA Provider](../../ota-provider-app/linux) + + ``` + ./scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/ota-provider-app chip_config_network_layer_ble=false + ``` + +- Run the Linux OTA Provider with OTA image. + + ``` + ./chip-ota-provider-app -f zephyr-ota.bin + ``` + +- Provision the Linux OTA Provider using chip-tool + + ``` + ./chip-tool pairing onnetwork ${OTA_PROVIDER_NODE_ID} 20202021 + ``` + + here: + + - \${OTA_PROVIDER_NODE_ID} is the node id of Linux OTA Provider + +- Configure the ACL of the ota-provider-app to allow access + + ``` + ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' ${OTA_PROVIDER_NODE_ID} 0 + ``` + + here: + + - \${OTA_PROVIDER_NODE_ID} is the node id of Linux OTA Provider + +- Use the chip-tool to announce the ota-provider-app to start the OTA process + + ``` + ./chip-tool otasoftwareupdaterequestor announce-ota-provider ${OTA_PROVIDER_NODE_ID} 0 0 0 ${DEVICE_NODE_ID} 0 + ``` + + here: + + - \${OTA_PROVIDER_NODE_ID} is the node id of Linux OTA Provider + - \${DEVICE_NODE_ID} is the node id of paired device + +Once the transfer is complete, OTA requestor sends ApplyUpdateRequest command to +OTA provider for applying the image. Device will restart on successful +application of OTA image. diff --git a/examples/contact-sensor-app/telink/include/AppConfig.h b/examples/contact-sensor-app/telink/include/AppConfig.h new file mode 100755 index 00000000000000..01128b76e4d929 --- /dev/null +++ b/examples/contact-sensor-app/telink/include/AppConfig.h @@ -0,0 +1,37 @@ +/* + * + * 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. + */ + +#pragma once + +// ---- Contact Sensor Example App Config ---- + +// Buttons config +#define BUTTON_PORT DEVICE_DT_GET(DT_NODELABEL(gpioc)) + +#define BUTTON_PIN_1 2 +#define BUTTON_PIN_3 3 +#define BUTTON_PIN_4 1 +#define BUTTON_PIN_2 0 + +// LEDs config +// System led config +#define SYSTEM_STATE_LED_PORT DEVICE_DT_GET(DT_NODELABEL(gpiob)) +#define SYSTEM_STATE_LED_PIN 7 + +// Contact state led +#define CONTACT_STATE_LED_PIN 4 diff --git a/examples/contact-sensor-app/telink/include/AppEvent.h b/examples/contact-sensor-app/telink/include/AppEvent.h new file mode 100755 index 00000000000000..4051ba31cbb465 --- /dev/null +++ b/examples/contact-sensor-app/telink/include/AppEvent.h @@ -0,0 +1,57 @@ +/* + * + * 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. + */ + +#pragma once + +#include + +struct AppEvent; +typedef void (*EventHandler)(AppEvent *); + +class LEDWidget; + +struct AppEvent +{ + enum AppEventTypes + { + kEventType_Button = 0, + kEventType_Timer, + kEventType_UpdateLedState, + kEventType_Contact, + }; + + uint16_t Type; + + union + { + struct + { + uint8_t Action; + } ButtonEvent; + struct + { + uint8_t Action; + } ContactEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; + }; + + EventHandler Handler; +}; diff --git a/examples/contact-sensor-app/telink/include/AppTask.h b/examples/contact-sensor-app/telink/include/AppTask.h new file mode 100644 index 00000000000000..ad6f98c7c2cf66 --- /dev/null +++ b/examples/contact-sensor-app/telink/include/AppTask.h @@ -0,0 +1,107 @@ +/* + * + * 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. + */ + +#pragma once + +#include "AppEvent.h" +#include "ContactSensorManager.h" +#include "LEDWidget.h" + +#include + +#include + +#if CONFIG_CHIP_FACTORY_DATA +#include +#endif + +#include + +// Application-defined error codes in the CHIP_ERROR space. +#define APP_ERROR_UNHANDLED_EVENT CHIP_APPLICATION_ERROR(0x03) + +struct k_timer; + +class AppTask +{ +public: + CHIP_ERROR StartApp(void); + + void PostContactActionRequest(ContactSensorManager::Action aAction); + void PostEvent(AppEvent * event); + void UpdateClusterState(void); + void UpdateDeviceState(void); + + bool IsSyncClusterToButtonAction(void); + void SetSyncClusterToButtonAction(bool value); + +private: + friend AppTask & GetAppTask(void); + CHIP_ERROR Init(void); + + void DispatchEvent(AppEvent * event); + + static void OnStateChanged(ContactSensorManager::State aState); + + static void UpdateClusterStateInternal(intptr_t arg); + static void UpdateDeviceStateInternal(intptr_t arg); + + static void UpdateStatusLED(void); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); + static void FactoryResetButtonEventHandler(void); + static void StartBleAdvButtonEventHandler(void); + static void ToggleContactStateButtonEventHandler(void); + + static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); + static void FactoryResetHandler(AppEvent * aEvent); + static void StartBleAdvHandler(AppEvent * aEvent); + static void ContactActionEventHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); + + static void InitButtons(void); + + static void ThreadProvisioningHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + + bool mSyncClusterToButtonAction = false; + + static AppTask sAppTask; + +#if CONFIG_CHIP_FACTORY_DATA + // chip::DeviceLayer::FactoryDataProvider mFactoryDataProvider; + chip::DeviceLayer::FactoryDataProvider mFactoryDataProvider; +#endif +}; + +inline AppTask & GetAppTask(void) +{ + return AppTask::sAppTask; +} + +inline bool AppTask::IsSyncClusterToButtonAction() +{ + return mSyncClusterToButtonAction; +} + +inline void AppTask::SetSyncClusterToButtonAction(bool value) +{ + mSyncClusterToButtonAction = value; +} diff --git a/examples/contact-sensor-app/telink/include/CHIPProjectConfig.h b/examples/contact-sensor-app/telink/include/CHIPProjectConfig.h new file mode 100755 index 00000000000000..2fda70c57da9dc --- /dev/null +++ b/examples/contact-sensor-app/telink/include/CHIPProjectConfig.h @@ -0,0 +1,39 @@ +/* + * + * 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 + * Example project configuration file for CHIP. + * + * This is a place to put application or project-specific overrides + * to the default configuration values for general CHIP features. + * + */ + +#pragma once + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 + +/** + * CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE + * + * Reduce packet buffer pool size to 8 (default 15) to reduce ram consumption + */ +#define CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE 8 diff --git a/examples/contact-sensor-app/telink/include/ContactSensorManager.h b/examples/contact-sensor-app/telink/include/ContactSensorManager.h new file mode 100644 index 00000000000000..0f735288b6ee39 --- /dev/null +++ b/examples/contact-sensor-app/telink/include/ContactSensorManager.h @@ -0,0 +1,62 @@ +/* + * + * 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. + */ + +#pragma once + +#include +#include + +#include "AppEvent.h" + +class ContactSensorManager +{ +public: + enum class Action : uint8_t + { + kSignalDetected = 0, + kSignalLost, + kInvalid + }; + + enum class State : uint8_t + { + kContactClosed = 0, + kContactOpened, + kInvalid + }; + + int Init(); + bool IsContactClosed(); + void InitiateAction(Action aAction); + + typedef void (*CallbackStateChanged)(State aState); + void SetCallback(CallbackStateChanged aCallbackStateChanged); + + static void HandleAction(AppEvent * aEvent); + +private: + friend ContactSensorManager & ContactSensorMgr(void); + State mState; + CallbackStateChanged mCallbackStateChanged; + static ContactSensorManager sContactSensor; +}; + +inline ContactSensorManager & ContactSensorMgr(void) +{ + return ContactSensorManager::sContactSensor; +} diff --git a/examples/contact-sensor-app/telink/prj.conf b/examples/contact-sensor-app/telink/prj.conf new file mode 100755 index 00000000000000..6c4ad9d8975f05 --- /dev/null +++ b/examples/contact-sensor-app/telink/prj.conf @@ -0,0 +1,58 @@ +# +# 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. +# + +# This sample uses sample-defaults.conf to set options common for all +# samples. This file should contain only options specific for this sample +# or overrides of default values. + +# enable GPIO +CONFIG_GPIO=y + +# OpenThread configs +CONFIG_OPENTHREAD_MTD=y +CONFIG_OPENTHREAD_FTD=n + +# Default OpenThread network settings +CONFIG_OPENTHREAD_PANID=4660 +CONFIG_OPENTHREAD_CHANNEL=15 +CONFIG_OPENTHREAD_NETWORK_NAME="OpenThreadDemo" +CONFIG_OPENTHREAD_XPANID="11:11:11:11:22:22:22:22" + +# Disable Matter OTA DFU +CONFIG_CHIP_OTA_REQUESTOR=n + +# CHIP configuration +CONFIG_CHIP_PROJECT_CONFIG="include/CHIPProjectConfig.h" +CONFIG_CHIP_OPENTHREAD_CONFIG="../../platform/telink/project_include/OpenThreadConfig.h" + +CONFIG_CHIP_DEVICE_VENDOR_ID=65521 +# 32774 == 0x8006 (example contact-sensor-app) +CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 +CONFIG_CHIP_DEVICE_TYPE=65535 + +CONFIG_CHIP_DEVICE_SOFTWARE_VERSION=1 +CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING="2022" + +# Enable CHIP pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# CHIP shell +CONFIG_CHIP_LIB_SHELL=n + +# Disable factory data support. +CONFIG_CHIP_FACTORY_DATA=n +CONFIG_CHIP_FACTORY_DATA_BUILD=n +CONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=n \ No newline at end of file diff --git a/examples/contact-sensor-app/telink/src/AppTask.cpp b/examples/contact-sensor-app/telink/src/AppTask.cpp new file mode 100644 index 00000000000000..a2dc322fcc50de --- /dev/null +++ b/examples/contact-sensor-app/telink/src/AppTask.cpp @@ -0,0 +1,524 @@ +/* + * + * 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. + */ + +#include "AppTask.h" + +#include "AppConfig.h" +#include "AppEvent.h" +#include "ButtonManager.h" + +#include "ThreadUtil.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if CONFIG_CHIP_OTA_REQUESTOR +#include "OTAUtil.h" +#endif + +#include +#include + +LOG_MODULE_DECLARE(app); + +using namespace ::chip; +using namespace ::chip::app; +using namespace ::chip::Credentials; +using namespace ::chip::DeviceLayer; + +namespace { + +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; + +// NOTE! This key is for test/certification only and should not be available in production devices! +// If CONFIG_CHIP_FACTORY_DATA is enabled, this value is read from the factory data. +uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; + +K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; + +LEDWidget sStatusLED; +LEDWidget sContactSensorLED; + +Button sFactoryResetButton; +Button sToggleContactStateButton; +Button sBleAdvStartButton; + +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; + +chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider; + +void OnIdentifyTriggerEffect(Identify * identify) +{ + switch (identify->mCurrentEffectIdentifier) + { + case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK: + ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK"); + break; + case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE: + ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE"); + break; + case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY: + ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY"); + break; + case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE: + ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE"); + break; + default: + ChipLogProgress(Zcl, "No identifier effect"); + break; + } + return; +} + +Identify sIdentify = { + chip::EndpointId{ 1 }, + [](Identify *) { ChipLogProgress(Zcl, "OnIdentifyStart"); }, + [](Identify *) { ChipLogProgress(Zcl, "OnIdentifyStop"); }, + EMBER_ZCL_IDENTIFY_IDENTIFY_TYPE_VISIBLE_LED, + OnIdentifyTriggerEffect, +}; + +} // namespace + +AppTask AppTask::sAppTask; + +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + +CHIP_ERROR AppTask::Init() +{ + CHIP_ERROR err; + + LOG_INF("SW Version: %u, %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION, CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + + // Initialize status LED + LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); + sStatusLED.Init(SYSTEM_STATE_LED_PIN); + + UpdateStatusLED(); + + sContactSensorLED.Init(CONTACT_STATE_LED_PIN); + sContactSensorLED.Set(ContactSensorMgr().IsContactClosed()); + + UpdateDeviceState(); + + InitButtons(); + + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + + // Initialize CHIP server +#if CONFIG_CHIP_FACTORY_DATA + ReturnErrorOnFailure(mFactoryDataProvider.Init()); + SetDeviceInstanceInfoProvider(&mFactoryDataProvider); + SetDeviceAttestationCredentialsProvider(&mFactoryDataProvider); + SetCommissionableDataProvider(&mFactoryDataProvider); + // Read EnableKey from the factory data. + MutableByteSpan enableKey(sTestEventTriggerEnableKey); + err = mFactoryDataProvider.GetEnableKey(enableKey); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("GetEnableKey fail"); + memset(sTestEventTriggerEnableKey, 0, sizeof(sTestEventTriggerEnableKey)); + } +#else + SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider()); +#endif + + static CommonCaseDeviceServerInitParams initParams; + // static OTATestEventTriggerDelegate testEventTriggerDelegate{ ByteSpan(sTestEventTriggerEnableKey) }; + (void) initParams.InitializeStaticResourcesBeforeServerInit(); + // initParams.testEventTriggerDelegate = &testEventTriggerDelegate; + ReturnErrorOnFailure(chip::Server::GetInstance().Init(initParams)); + + gExampleDeviceInfoProvider.SetStorageDelegate(&Server::GetInstance().GetPersistentStorage()); + chip::DeviceLayer::SetDeviceInfoProvider(&gExampleDeviceInfoProvider); + +#if CONFIG_CHIP_OTA_REQUESTOR + InitBasicOTARequestor(); +#endif + + ConfigurationMgr().LogDeviceConfig(); + PrintOnboardingCodes(chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE)); + + // Add CHIP event handler and start CHIP thread. + // Note that all the initialization code should happen prior to this point to avoid data races + // between the main and the CHIP threads. + PlatformMgr().AddEventHandler(ChipEventHandler, 0); + + ContactSensorMgr().SetCallback(OnStateChanged); + + err = ConnectivityMgr().SetBLEDeviceName("TelinkSensor"); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("SetBLEDeviceName fail"); + return err; + } + + err = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return err; + } + + return CHIP_NO_ERROR; +} + +void AppTask::OnStateChanged(ContactSensorManager::State aState) +{ + // If the contact state was changed, update LED state and cluster state (only if button was pressed). + // - turn on the contact LED if contact sensor is in closed state. + // - turn off the lock LED if contact sensor is in opened state. + if (ContactSensorManager::State::kContactClosed == aState) + { + LOG_INF("Contact state changed to CLOSED"); + sContactSensorLED.Set(true); + } + else if (ContactSensorManager::State::kContactOpened == aState) + { + LOG_INF("Contact state changed to OPEN"); + sContactSensorLED.Set(false); + } + + if (sAppTask.IsSyncClusterToButtonAction()) + { + sAppTask.UpdateClusterState(); + } +} + +CHIP_ERROR AppTask::StartApp(void) +{ + CHIP_ERROR err = Init(); + + if (err != CHIP_NO_ERROR) + { + LOG_ERR("AppTask Init fail"); + return err; + } + + AppEvent event = {}; + + while (true) + { + int ret = k_msgq_get(&sAppEventQueue, &event, K_MSEC(10)); + + while (!ret) + { + DispatchEvent(&event); + ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); + } + } +} + +void AppTask::PostContactActionRequest(ContactSensorManager::Action aAction) +{ + AppEvent event; + event.Type = AppEvent::kEventType_Contact; + event.ContactEvent.Action = static_cast(aAction); + event.Handler = ContactActionEventHandler; + + sAppTask.PostEvent(&event); +} + +void AppTask::ToggleContactStateButtonEventHandler(void) +{ + AppEvent event; + + event.Type = AppEvent::kEventType_Button; + event.ButtonEvent.Action = kButtonPushEvent; + event.Handler = ContactActionEventHandler; + + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetButtonEventHandler(void) +{ + AppEvent event; + + event.Type = AppEvent::kEventType_Button; + event.ButtonEvent.Action = kButtonPushEvent; + event.Handler = FactoryResetHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetHandler(AppEvent * aEvent) +{ + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } +} + +void AppTask::UpdateClusterStateInternal(intptr_t arg) +{ + uint8_t newValue = ContactSensorMgr().IsContactClosed(); + + ChipLogProgress(NotSpecified, "emberAfWriteAttribute : %d", newValue); + + // write the new boolean state value + EmberAfStatus status = emberAfWriteAttribute(1, ZCL_BOOLEAN_STATE_CLUSTER_ID, ZCL_STATE_VALUE_ATTRIBUTE_ID, + (uint8_t *) &newValue, ZCL_BOOLEAN_ATTRIBUTE_TYPE); + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + ChipLogError(NotSpecified, "ERR: updating boolean status value %x", status); + } +} + +void AppTask::ContactActionEventHandler(AppEvent * aEvent) +{ + ContactSensorManager::Action action = ContactSensorManager::Action::kInvalid; + CHIP_ERROR err = CHIP_NO_ERROR; + + ChipLogProgress(NotSpecified, "ContactActionEventHandler"); + + if (aEvent->Type == AppEvent::kEventType_Contact) + { + action = static_cast(aEvent->ContactEvent.Action); + } + else if (aEvent->Type == AppEvent::kEventType_Button) + { + if (ContactSensorMgr().IsContactClosed()) + { + action = ContactSensorManager::Action::kSignalLost; + } + else + { + action = ContactSensorManager::Action::kSignalDetected; + } + + sAppTask.SetSyncClusterToButtonAction(true); + } + else + { + err = APP_ERROR_UNHANDLED_EVENT; + action = ContactSensorManager::Action::kInvalid; + } + + if (err == CHIP_NO_ERROR) + { + ContactSensorMgr().InitiateAction(action); + } +} + +void AppTask::StartBleAdvButtonEventHandler(void) +{ + AppEvent event; + + event.Type = AppEvent::kEventType_Button; + event.ButtonEvent.Action = kButtonPushEvent; + event.Handler = StartBleAdvHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::StartBleAdvHandler(AppEvent * aEvent) +{ + LOG_INF("StartBleAdvHandler"); + + // Don't allow on starting Matter service BLE advertising after Thread provisioning. + if (ConnectivityMgr().IsThreadProvisioned()) + { + LOG_INF("Device already commissioned"); + return; + } + + if (ConnectivityMgr().IsBLEAdvertisingEnabled()) + { + LOG_INF("BLE adv already enabled"); + return; + } + + if (chip::Server::GetInstance().GetCommissioningWindowManager().OpenBasicCommissioningWindow() != CHIP_NO_ERROR) + { + LOG_ERR("OpenBasicCommissioningWindow fail"); + } +} + +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + +void AppTask::UpdateStatusLED(void) +{ + if (sIsThreadProvisioned && sIsThreadEnabled) + { + if (sIsThreadAttached) + { + sStatusLED.Blink(950, 50); + } + else + { + sStatusLED.Blink(100, 100); + } + } + else + { + sStatusLED.Blink(50, 950); + } +} + +void AppTask::ChipEventHandler(const ChipDeviceEvent * event, intptr_t /* arg */) +{ + switch (event->Type) + { + case DeviceEventType::kCHIPoBLEAdvertisingChange: + sHaveBLEConnections = ConnectivityMgr().NumBLEConnections() != 0; + UpdateStatusLED(); + break; + case DeviceEventType::kThreadStateChange: + sIsThreadProvisioned = ConnectivityMgr().IsThreadProvisioned(); + sIsThreadEnabled = ConnectivityMgr().IsThreadEnabled(); + sIsThreadAttached = ConnectivityMgr().IsThreadAttached(); + UpdateStatusLED(); + break; + case DeviceEventType::kThreadConnectivityChange: +#if CONFIG_CHIP_OTA_REQUESTOR + if (event->ThreadConnectivityChange.Result == kConnectivity_Established) + { + InitBasicOTARequestor(); + } +#endif + break; + default: + break; + } +} + +void AppTask::PostEvent(AppEvent * aEvent) +{ + if (k_msgq_put(&sAppEventQueue, aEvent, K_NO_WAIT) != 0) + { + LOG_INF("PostEvent fail"); + } +} + +void AppTask::DispatchEvent(AppEvent * aEvent) +{ + if (aEvent->Handler) + { + aEvent->Handler(aEvent); + } + else + { + LOG_INF("Dropping event without handler"); + } +} + +void AppTask::UpdateClusterState(void) +{ + PlatformMgr().ScheduleWork(UpdateClusterStateInternal, 0); +} + +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + +void AppTask::InitButtons(void) +{ + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sToggleContactStateButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_1, false, ToggleContactStateButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); + + ButtonManagerInst().AddButton(sFactoryResetButton); + ButtonManagerInst().AddButton(sToggleContactStateButton); + ButtonManagerInst().AddButton(sBleAdvStartButton); +} + +void AppTask::UpdateDeviceState(void) +{ + PlatformMgr().ScheduleWork(UpdateDeviceStateInternal, 0); +} + +void AppTask::UpdateDeviceStateInternal(intptr_t arg) +{ + bool stateValueAttrValue = 0; + + /* get boolean state attribute value */ + (void) emberAfReadAttribute(1, ZCL_BOOLEAN_STATE_CLUSTER_ID, ZCL_STATE_VALUE_ATTRIBUTE_ID, (uint8_t *) &stateValueAttrValue, 1); + + ChipLogProgress(NotSpecified, "emberAfReadAttribute : %d", stateValueAttrValue); + sContactSensorLED.Set(stateValueAttrValue); +} diff --git a/examples/contact-sensor-app/telink/src/ContactSensorManager.cpp b/examples/contact-sensor-app/telink/src/ContactSensorManager.cpp new file mode 100644 index 00000000000000..b555e4e0a2c958 --- /dev/null +++ b/examples/contact-sensor-app/telink/src/ContactSensorManager.cpp @@ -0,0 +1,87 @@ +/* + * + * 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. + */ + +#include "ContactSensorManager.h" + +#include "AppConfig.h" +#include "AppTask.h" + +#include + +#include +#include +#include + +LOG_MODULE_DECLARE(app); + +ContactSensorManager ContactSensorManager::sContactSensor; + +int ContactSensorManager::Init() +{ + int err = 0; + + mState = State::kContactOpened; + mCallbackStateChanged = nullptr; + + return err; +} + +void ContactSensorManager::SetCallback(CallbackStateChanged aCallbackStateChanged) +{ + mCallbackStateChanged = aCallbackStateChanged; +} + +bool ContactSensorManager::IsContactClosed() +{ + return mState == State::kContactClosed; +} + +void ContactSensorManager::InitiateAction(Action aAction) +{ + AppEvent event; + event.Type = AppEvent::kEventType_Contact; + event.ContactEvent.Action = static_cast(aAction); + event.Handler = HandleAction; + GetAppTask().PostEvent(&event); +} + +void ContactSensorManager::HandleAction(AppEvent * aEvent) +{ + Action action = static_cast(aEvent->ContactEvent.Action); + // Change current state based on action: + // - if state is closed and action is signal lost, change state to opened + // - if state is opened and action is signal detected, change state to closed + // - else, the state/action combination does not change the state. + if (sContactSensor.mState == State::kContactClosed && action == Action::kSignalLost) + { + sContactSensor.mState = State::kContactOpened; + } + else if (sContactSensor.mState == State::kContactOpened && action == Action::kSignalDetected) + { + sContactSensor.mState = State::kContactClosed; + } + + if (sContactSensor.mCallbackStateChanged != nullptr) + { + sContactSensor.mCallbackStateChanged(sContactSensor.mState); + } + else + { + LOG_ERR("Callback for state change was not set. Please set an appropriate callback."); + } +} diff --git a/examples/contact-sensor-app/telink/src/ZclCallbacks.cpp b/examples/contact-sensor-app/telink/src/ZclCallbacks.cpp new file mode 100644 index 00000000000000..89d6aed77f16d2 --- /dev/null +++ b/examples/contact-sensor-app/telink/src/ZclCallbacks.cpp @@ -0,0 +1,56 @@ +/* + * + * 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. + */ + +#include "AppTask.h" + +#include +#include +#include +#include + +using namespace chip; +using namespace chip::app::Clusters; + +void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t type, uint16_t size, + uint8_t * value) +{ + ClusterId clusterId = attributePath.mClusterId; + AttributeId attributeId = attributePath.mAttributeId; + ChipLogProgress(Zcl, "Cluster callback: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); + + if (clusterId == BooleanState::Id && attributeId == BooleanState::Attributes::StateValue::Id) + { + ChipLogProgress(Zcl, "Cluster BooleanState: attribute StateValue set to %u", *value); + AppTask & task = GetAppTask(); + if (task.IsSyncClusterToButtonAction()) + { + task.SetSyncClusterToButtonAction(false); + } + else + { + task.PostContactActionRequest(*value ? ContactSensorManager::Action::kSignalDetected + : ContactSensorManager::Action::kSignalLost); + } + } +} + +void emberAfBooleanStateClusterInitCallback(EndpointId endpoint) +{ + ChipLogProgress(Zcl, "emberAfBooleanStateClusterInitCallback"); + GetAppTask().UpdateClusterState(); +} diff --git a/examples/contact-sensor-app/telink/src/main.cpp b/examples/contact-sensor-app/telink/src/main.cpp new file mode 100755 index 00000000000000..e71632de12fddb --- /dev/null +++ b/examples/contact-sensor-app/telink/src/main.cpp @@ -0,0 +1,82 @@ +/* + * + * 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. + */ + +#include "AppTask.h" + +#include +#include + +#include + +LOG_MODULE_REGISTER(app); + +using namespace ::chip; +using namespace ::chip::Inet; +using namespace ::chip::DeviceLayer; + +int main(void) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + err = chip::Platform::MemoryInit(); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("MemoryInit fail"); + goto exit; + } + + err = PlatformMgr().InitChipStack(); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("InitChipStack fail"); + goto exit; + } + + err = PlatformMgr().StartEventLoopTask(); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("StartEventLoopTask fail"); + goto exit; + } + + err = ThreadStackMgr().InitThreadStack(); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("InitThreadStack fail"); + goto exit; + } + +#ifdef CONFIG_OPENTHREAD_MTD_SED + err = ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_SleepyEndDevice); +#elif CONFIG_OPENTHREAD_MTD + err = ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_MinimalEndDevice); +#else + err = ConnectivityMgr().SetThreadDeviceType(ConnectivityManager::kThreadDeviceType_Router); +#endif + if (err != CHIP_NO_ERROR) + { + LOG_ERR("SetThreadDeviceType fail"); + goto exit; + } + + err = GetAppTask().StartApp(); + +exit: + LOG_ERR("Exit err %" CHIP_ERROR_FORMAT, err.Format()); + return (err == CHIP_NO_ERROR) ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/examples/contact-sensor-app/telink/third_party/connectedhomeip b/examples/contact-sensor-app/telink/third_party/connectedhomeip new file mode 120000 index 00000000000000..c866b86874994d --- /dev/null +++ b/examples/contact-sensor-app/telink/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../.. \ No newline at end of file diff --git a/examples/light-switch-app/telink/include/AppEvent.h b/examples/light-switch-app/telink/include/AppEvent.h index ed69564c270adb..9a6fd3060c1685 100755 --- a/examples/light-switch-app/telink/include/AppEvent.h +++ b/examples/light-switch-app/telink/include/AppEvent.h @@ -23,12 +23,15 @@ struct AppEvent; typedef void (*EventHandler)(AppEvent *); +class LEDWidget; + struct AppEvent { enum AppEventTypes { kEventType_Button = 0, kEventType_Timer, + kEventType_UpdateLedState, kEventType_Lighting, kEventType_Install, }; @@ -50,6 +53,10 @@ struct AppEvent uint8_t Action; int32_t Actor; } LightingEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; }; EventHandler Handler; diff --git a/examples/light-switch-app/telink/include/AppTask.h b/examples/light-switch-app/telink/include/AppTask.h index 6cf0a330cf2317..6509613e3741b8 100755 --- a/examples/light-switch-app/telink/include/AppTask.h +++ b/examples/light-switch-app/telink/include/AppTask.h @@ -19,6 +19,7 @@ #pragma once #include "AppEvent.h" +#include "LEDWidget.h" #include @@ -60,6 +61,7 @@ class AppTask void DispatchEvent(AppEvent * event); static void UpdateStatusLED(); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); static void SwitchActionButtonEventHandler(void); static void FactoryResetButtonEventHandler(void); static void StartThreadButtonEventHandler(void); @@ -67,10 +69,14 @@ class AppTask static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); static void FactoryResetHandler(AppEvent * aEvent); static void StartThreadHandler(AppEvent * aEvent); static void SwitchActionEventHandler(AppEvent * aEvent); static void StartBleAdvHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); static void InitButtons(void); diff --git a/examples/light-switch-app/telink/src/AppTask.cpp b/examples/light-switch-app/telink/src/AppTask.cpp index c5a77caae8f701..5b7817831ed68a 100644 --- a/examples/light-switch-app/telink/src/AppTask.cpp +++ b/examples/light-switch-app/telink/src/AppTask.cpp @@ -21,7 +21,6 @@ #include "AppConfig.h" #include "AppEvent.h" #include "ButtonManager.h" -#include "LEDWidget.h" #include "binding-handler.h" #include "ThreadUtil.h" @@ -54,10 +53,10 @@ using namespace ::chip::Credentials; using namespace ::chip::DeviceLayer; namespace { - -constexpr int kAppEventQueueSize = 10; -constexpr uint8_t kButtonPushEvent = 1; -constexpr uint8_t kButtonReleaseEvent = 0; +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; // NOTE! This key is for test/certification only and should not be available in production devices! // If CONFIG_CHIP_FACTORY_DATA is enabled, this value is read from the factory data. @@ -65,6 +64,7 @@ uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; LEDWidget sStatusLED; @@ -73,10 +73,11 @@ Button sSwitchButton; Button sThreadStartButton; Button sBleAdvStartButton; -bool sIsThreadProvisioned = false; -bool sIsThreadEnabled = false; -bool sIsThreadAttached = false; -bool sHaveBLEConnections = false; +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider; @@ -115,6 +116,17 @@ Identify sIdentify = { AppTask AppTask::sAppTask; +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + CHIP_ERROR AppTask::Init() { CHIP_ERROR err; @@ -123,12 +135,17 @@ CHIP_ERROR AppTask::Init() // Initialize status LED LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); sStatusLED.Init(SYSTEM_STATE_LED_PIN); UpdateStatusLED(); InitButtons(); + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + // Initialize CHIP server #if CONFIG_CHIP_FACTORY_DATA ReturnErrorOnFailure(mFactoryDataProvider.Init()); @@ -180,9 +197,17 @@ CHIP_ERROR AppTask::Init() if (err != CHIP_NO_ERROR) { LOG_ERR("SetBLEDeviceName fail"); + return err; + } + + err = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return err; } - return err; + return CHIP_NO_ERROR; } CHIP_ERROR AppTask::StartApp() @@ -206,8 +231,6 @@ CHIP_ERROR AppTask::StartApp() DispatchEvent(&event); ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); } - - sStatusLED.Animate(); } } @@ -245,8 +268,16 @@ void AppTask::FactoryResetButtonEventHandler(void) void AppTask::FactoryResetHandler(AppEvent * aEvent) { - LOG_INF("FactoryResetHandler"); - chip::Server::GetInstance().ScheduleFactoryReset(); + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } } void AppTask::StartThreadButtonEventHandler(void) @@ -308,6 +339,23 @@ void AppTask::StartBleAdvHandler(AppEvent * aEvent) } } +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + void AppTask::UpdateStatusLED() { if (sIsThreadProvisioned && sIsThreadEnabled) @@ -386,12 +434,37 @@ void AppTask::DispatchEvent(AppEvent * aEvent) void AppTask::UpdateClusterState() {} +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + void AppTask::InitButtons(void) { - sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, FactoryResetButtonEventHandler); - sSwitchButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_1, SwitchActionButtonEventHandler); - sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, StartThreadButtonEventHandler); - sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, StartBleAdvButtonEventHandler); + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sSwitchButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_1, false, SwitchActionButtonEventHandler); + sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, false, StartThreadButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); ButtonManagerInst().AddButton(sFactoryResetButton); ButtonManagerInst().AddButton(sSwitchButton); diff --git a/examples/lighting-app/telink/include/AppEvent.h b/examples/lighting-app/telink/include/AppEvent.h index 548d737f5c65d7..1766b5d77577a1 100644 --- a/examples/lighting-app/telink/include/AppEvent.h +++ b/examples/lighting-app/telink/include/AppEvent.h @@ -23,12 +23,15 @@ struct AppEvent; typedef void (*EventHandler)(AppEvent *); +class LEDWidget; + struct AppEvent { enum AppEventTypes { kEventType_Button = 0, kEventType_Timer, + kEventType_UpdateLedState, kEventType_Lighting, kEventType_Install, }; @@ -50,6 +53,10 @@ struct AppEvent uint8_t Action; int32_t Actor; } LightingEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; }; EventHandler Handler; diff --git a/examples/lighting-app/telink/include/AppTask.h b/examples/lighting-app/telink/include/AppTask.h index 09ba6ef240f26c..26575805d70a5d 100644 --- a/examples/lighting-app/telink/include/AppTask.h +++ b/examples/lighting-app/telink/include/AppTask.h @@ -19,8 +19,8 @@ #pragma once #include "AppEvent.h" +#include "LEDWidget.h" #include "LightingManager.h" - #include #if CONFIG_CHIP_FACTORY_DATA @@ -65,6 +65,7 @@ class AppTask void DispatchEvent(AppEvent * event); static void UpdateStatusLED(); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); static void LightingActionButtonEventHandler(void); static void FactoryResetButtonEventHandler(void); static void StartThreadButtonEventHandler(void); @@ -72,10 +73,14 @@ class AppTask static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); static void FactoryResetHandler(AppEvent * aEvent); static void StartThreadHandler(AppEvent * aEvent); static void LightingActionEventHandler(AppEvent * aEvent); static void StartBleAdvHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); static void ButtonEventHandler(ButtonId_t btnId, bool btnPressed); static void InitButtons(void); diff --git a/examples/lighting-app/telink/src/AppTask.cpp b/examples/lighting-app/telink/src/AppTask.cpp index 2a311a2a052413..f7866db456c370 100644 --- a/examples/lighting-app/telink/src/AppTask.cpp +++ b/examples/lighting-app/telink/src/AppTask.cpp @@ -21,8 +21,6 @@ #include "AppConfig.h" #include "AppEvent.h" #include "ButtonManager.h" -#include "LEDWidget.h" -#include "LightingManager.h" #include "ThreadUtil.h" @@ -55,12 +53,12 @@ using namespace ::chip::Credentials; using namespace ::chip::DeviceLayer; namespace { - -constexpr int kAppEventQueueSize = 10; -constexpr uint8_t kButtonPushEvent = 1; -constexpr uint8_t kButtonReleaseEvent = 0; -constexpr uint8_t kDefaultMinLevel = 0; -constexpr uint8_t kDefaultMaxLevel = 254; +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; +constexpr uint8_t kDefaultMinLevel = 0; +constexpr uint8_t kDefaultMaxLevel = 254; // NOTE! This key is for test/certification only and should not be available in production devices! // If CONFIG_CHIP_FACTORY_DATA is enabled, this value is read from the factory data. @@ -68,6 +66,7 @@ uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; LEDWidget sStatusLED; @@ -76,10 +75,11 @@ Button sLightingButton; Button sThreadStartButton; Button sBleAdvStartButton; -bool sIsThreadProvisioned = false; -bool sIsThreadEnabled = false; -bool sIsThreadAttached = false; -bool sHaveBLEConnections = false; +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider; @@ -118,18 +118,34 @@ Identify sIdentify = { AppTask AppTask::sAppTask; +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + CHIP_ERROR AppTask::Init() { LOG_INF("SW Version: %u, %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION, CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); // Initialize status LED LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); sStatusLED.Init(SYSTEM_STATE_LED_PIN); UpdateStatusLED(); InitButtons(); + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + // Init lighting manager uint8_t minLightLevel = kDefaultMinLevel; Clusters::LevelControl::Attributes::MinLevel::Get(1, &minLightLevel); @@ -188,9 +204,17 @@ CHIP_ERROR AppTask::Init() if (err != CHIP_NO_ERROR) { LOG_ERR("SetBLEDeviceName fail"); + return err; + } + + err = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return err; } - return err; + return CHIP_NO_ERROR; } CHIP_ERROR AppTask::StartApp() @@ -214,8 +238,6 @@ CHIP_ERROR AppTask::StartApp() DispatchEvent(&event); ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); } - - sStatusLED.Animate(); } } @@ -263,8 +285,16 @@ void AppTask::FactoryResetButtonEventHandler(void) void AppTask::FactoryResetHandler(AppEvent * aEvent) { - LOG_INF("FactoryResetHandler"); - chip::Server::GetInstance().ScheduleFactoryReset(); + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } } void AppTask::StartThreadButtonEventHandler(void) @@ -326,6 +356,23 @@ void AppTask::StartBleAdvHandler(AppEvent * aEvent) } } +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + void AppTask::UpdateStatusLED() { if (sIsThreadProvisioned && sIsThreadEnabled) @@ -456,6 +503,31 @@ void AppTask::UpdateClusterState() } } +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + void AppTask::ButtonEventHandler(ButtonId_t btnId, bool btnPressed) { if (!btnPressed) @@ -482,10 +554,10 @@ void AppTask::ButtonEventHandler(ButtonId_t btnId, bool btnPressed) void AppTask::InitButtons(void) { - sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, FactoryResetButtonEventHandler); - sLightingButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_1, LightingActionButtonEventHandler); - sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, StartThreadButtonEventHandler); - sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, StartBleAdvButtonEventHandler); + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sLightingButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_1, false, LightingActionButtonEventHandler); + sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, false, StartThreadButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); ButtonManagerInst().AddButton(sFactoryResetButton); ButtonManagerInst().AddButton(sLightingButton); diff --git a/examples/ota-requestor-app/telink/include/AppEvent.h b/examples/ota-requestor-app/telink/include/AppEvent.h index ed69564c270adb..9a6fd3060c1685 100644 --- a/examples/ota-requestor-app/telink/include/AppEvent.h +++ b/examples/ota-requestor-app/telink/include/AppEvent.h @@ -23,12 +23,15 @@ struct AppEvent; typedef void (*EventHandler)(AppEvent *); +class LEDWidget; + struct AppEvent { enum AppEventTypes { kEventType_Button = 0, kEventType_Timer, + kEventType_UpdateLedState, kEventType_Lighting, kEventType_Install, }; @@ -50,6 +53,10 @@ struct AppEvent uint8_t Action; int32_t Actor; } LightingEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; }; EventHandler Handler; diff --git a/examples/ota-requestor-app/telink/include/AppTask.h b/examples/ota-requestor-app/telink/include/AppTask.h index 712212e38fd80d..a8b5c2dd3e7a93 100755 --- a/examples/ota-requestor-app/telink/include/AppTask.h +++ b/examples/ota-requestor-app/telink/include/AppTask.h @@ -19,6 +19,7 @@ #pragma once #include "AppEvent.h" +#include "LEDWidget.h" #include @@ -56,15 +57,20 @@ class AppTask void DispatchEvent(AppEvent * event); static void UpdateStatusLED(); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); static void FactoryResetButtonEventHandler(void); static void StartThreadButtonEventHandler(void); static void StartBleAdvButtonEventHandler(void); static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); static void FactoryResetHandler(AppEvent * aEvent); static void StartThreadHandler(AppEvent * aEvent); static void StartBleAdvHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); static void InitButtons(void); diff --git a/examples/ota-requestor-app/telink/src/AppTask.cpp b/examples/ota-requestor-app/telink/src/AppTask.cpp index 8343e3ddc38f65..15f3c6f17ff274 100644 --- a/examples/ota-requestor-app/telink/src/AppTask.cpp +++ b/examples/ota-requestor-app/telink/src/AppTask.cpp @@ -21,7 +21,6 @@ #include "AppConfig.h" #include "AppEvent.h" #include "ButtonManager.h" -#include "LEDWidget.h" #include #include @@ -56,12 +55,13 @@ LOG_MODULE_DECLARE(app); namespace { - -constexpr int kAppEventQueueSize = 10; -constexpr uint8_t kButtonPushEvent = 1; -constexpr uint8_t kButtonReleaseEvent = 0; +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; LEDWidget sStatusLED; @@ -69,10 +69,11 @@ Button sFactoryResetButton; Button sThreadStartButton; Button sBleAdvStartButton; -bool sIsThreadProvisioned = false; -bool sIsThreadEnabled = false; -bool sIsThreadAttached = false; -bool sHaveBLEConnections = false; +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider; @@ -116,6 +117,17 @@ using namespace ::chip::DeviceLayer::Internal; AppTask AppTask::sAppTask; +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + constexpr EndpointId kNetworkCommissioningEndpointSecondary = 0xFFFE; CHIP_ERROR AppTask::Init() @@ -126,12 +138,17 @@ CHIP_ERROR AppTask::Init() // Initialize status LED LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); sStatusLED.Init(SYSTEM_STATE_LED_PIN); UpdateStatusLED(); InitButtons(); + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + // Init ZCL Data Model and start server static chip::CommonCaseDeviceServerInitParams initParams; (void) initParams.InitializeStaticResourcesBeforeServerInit(); @@ -167,6 +184,13 @@ CHIP_ERROR AppTask::Init() return ret; } + ret = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (ret != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return ret; + } + return CHIP_NO_ERROR; } @@ -191,8 +215,6 @@ CHIP_ERROR AppTask::StartApp() DispatchEvent(&event); ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); } - - sStatusLED.Animate(); } } @@ -208,8 +230,16 @@ void AppTask::FactoryResetButtonEventHandler(void) void AppTask::FactoryResetHandler(AppEvent * aEvent) { - LOG_INF("FactoryResetHandler"); - chip::Server::GetInstance().ScheduleFactoryReset(); + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } } void AppTask::StartThreadButtonEventHandler(void) @@ -271,6 +301,23 @@ void AppTask::StartBleAdvHandler(AppEvent * aEvent) } } +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + void AppTask::UpdateStatusLED() { if (sIsThreadProvisioned && sIsThreadEnabled) @@ -341,11 +388,36 @@ void AppTask::DispatchEvent(AppEvent * aEvent) } } +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + void AppTask::InitButtons(void) { - sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, FactoryResetButtonEventHandler); - sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, StartThreadButtonEventHandler); - sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, StartBleAdvButtonEventHandler); + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, false, StartThreadButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); ButtonManagerInst().AddButton(sFactoryResetButton); ButtonManagerInst().AddButton(sThreadStartButton); diff --git a/examples/platform/telink/util/include/ButtonManager.h b/examples/platform/telink/util/include/ButtonManager.h index 9c164fd7120c82..c728d59a5ea48d 100644 --- a/examples/platform/telink/util/include/ButtonManager.h +++ b/examples/platform/telink/util/include/ButtonManager.h @@ -26,7 +26,7 @@ class Button { public: - void Configure(const struct device * port, gpio_pin_t outPin, gpio_pin_t inPin, void (*callback)(void)); + void Configure(const struct device * port, gpio_pin_t outPin, gpio_pin_t inPin, bool intBothLevel, void (*callback)(void)); void Poll(Button * previous); void SetCallback(void (*callback)(void)); @@ -38,6 +38,7 @@ class Button gpio_pin_t mOutPin; gpio_pin_t mInPin; int mPreviousState = STATE_LOW; + bool mIntBothLevel = false; void (*mCallback)(void) = NULL; }; diff --git a/examples/platform/telink/util/include/LEDWidget.h b/examples/platform/telink/util/include/LEDWidget.h index e851c03ccc04e2..b1e25d4f91a703 100644 --- a/examples/platform/telink/util/include/LEDWidget.h +++ b/examples/platform/telink/util/include/LEDWidget.h @@ -19,25 +19,32 @@ #include #include +#include class LEDWidget { public: + typedef void (*LEDWidgetStateUpdateHandler)(LEDWidget * ledWidget); + static void InitGpio(const device * port); + static void SetStateUpdateCallback(LEDWidgetStateUpdateHandler stateUpdateCb); const static struct device * mPort; void Init(gpio_pin_t gpioNum); void Set(bool state); void Invert(void); void Blink(uint32_t changeRateMS); void Blink(uint32_t onTimeMS, uint32_t offTimeMS); - void Animate(); + void UpdateState(); private: - int64_t mLastChangeTimeMS; uint32_t mBlinkOnTimeMS; uint32_t mBlinkOffTimeMS; gpio_pin_t mGPIONum; bool mState; + k_timer mLedTimer; + + static void LedStateTimerHandler(k_timer * timer); void DoSet(bool state); + void ScheduleStateChange(); }; diff --git a/examples/platform/telink/util/src/ButtonManager.cpp b/examples/platform/telink/util/src/ButtonManager.cpp index 9afc6ed0f2493d..21decd38b54298 100644 --- a/examples/platform/telink/util/src/ButtonManager.cpp +++ b/examples/platform/telink/util/src/ButtonManager.cpp @@ -29,14 +29,15 @@ LOG_MODULE_REGISTER(ButtonManager); ButtonManager ButtonManager::sInstance; -void Button::Configure(const struct device * port, gpio_pin_t outPin, gpio_pin_t inPin, void (*callback)(void)) +void Button::Configure(const struct device * port, gpio_pin_t outPin, gpio_pin_t inPin, bool intBothLevel, void (*callback)(void)) { __ASSERT(device_is_ready(port), "%s is not ready\n", port->name); - mPort = port; - mOutPin = outPin; - mInPin = inPin; - mCallback = callback; + mPort = port; + mOutPin = outPin; + mInPin = inPin; + mIntBothLevel = intBothLevel; + mCallback = callback; } int Button::Init(void) @@ -91,19 +92,15 @@ void Button::Poll(Button * previous) ret = gpio_pin_get(mPort, mInPin); assert(ret >= 0); - if (ret == STATE_HIGH && mPreviousState != STATE_HIGH) + if ((mIntBothLevel && ret != mPreviousState) || (!mIntBothLevel && ret == STATE_HIGH && ret != mPreviousState)) { - mPreviousState = STATE_HIGH; - if (mCallback != NULL) { mCallback(); } } - else if (ret == STATE_LOW) - { - mPreviousState = STATE_LOW; - } + + mPreviousState = ret; k_msleep(10); } diff --git a/examples/platform/telink/util/src/LEDWidget.cpp b/examples/platform/telink/util/src/LEDWidget.cpp index 3b97fe64375058..cefb8bbc1cb2a0 100644 --- a/examples/platform/telink/util/src/LEDWidget.cpp +++ b/examples/platform/telink/util/src/LEDWidget.cpp @@ -21,6 +21,7 @@ #include const struct device * LEDWidget::mPort = NULL; +static LEDWidget::LEDWidgetStateUpdateHandler sStateUpdateCallback; void LEDWidget::InitGpio(const device * port) { @@ -28,17 +29,25 @@ void LEDWidget::InitGpio(const device * port) __ASSERT(device_is_ready(mPort), "%s is not ready\n", mPort->name); } +void LEDWidget::SetStateUpdateCallback(LEDWidgetStateUpdateHandler stateUpdateCb) +{ + if (stateUpdateCb) + sStateUpdateCallback = stateUpdateCb; +} + void LEDWidget::Init(gpio_pin_t gpioNum) { - mLastChangeTimeMS = 0; - mBlinkOnTimeMS = 0; - mBlinkOffTimeMS = 0; - mGPIONum = gpioNum; - mState = false; + mBlinkOnTimeMS = 0; + mBlinkOffTimeMS = 0; + mGPIONum = gpioNum; + mState = false; int ret = gpio_pin_configure(mPort, mGPIONum, GPIO_OUTPUT_ACTIVE); __ASSERT(ret >= 0, "GPIO pin %d configure - fail. Status%d\n", mGPIONum, ret); + k_timer_init(&mLedTimer, &LEDWidget::LedStateTimerHandler, nullptr); + k_timer_user_data_set(&mLedTimer, this); + Set(false); } @@ -49,7 +58,8 @@ void LEDWidget::Invert(void) void LEDWidget::Set(bool state) { - mLastChangeTimeMS = mBlinkOnTimeMS = mBlinkOffTimeMS = 0; + k_timer_stop(&mLedTimer); + mBlinkOnTimeMS = mBlinkOffTimeMS = 0; DoSet(state); } @@ -60,29 +70,42 @@ void LEDWidget::Blink(uint32_t changeRateMS) void LEDWidget::Blink(uint32_t onTimeMS, uint32_t offTimeMS) { + k_timer_stop(&mLedTimer); + mBlinkOnTimeMS = onTimeMS; mBlinkOffTimeMS = offTimeMS; - Animate(); -} -void LEDWidget::Animate() -{ if (mBlinkOnTimeMS != 0 && mBlinkOffTimeMS != 0) { - int64_t nowMS = k_uptime_get(); - int64_t stateDurMS = mState ? mBlinkOnTimeMS : mBlinkOffTimeMS; - - if (nowMS > mLastChangeTimeMS + stateDurMS) - { - DoSet(!mState); - mLastChangeTimeMS = nowMS; - } + DoSet(!mState); + ScheduleStateChange(); } } +void LEDWidget::ScheduleStateChange() +{ + k_timer_start(&mLedTimer, K_MSEC(mState ? mBlinkOnTimeMS : mBlinkOffTimeMS), K_NO_WAIT); +} + void LEDWidget::DoSet(bool state) { mState = state; int ret = gpio_pin_set(mPort, mGPIONum, state); __ASSERT(ret >= 0, "GPIO pin %d set -fail. Status: %d\n", mGPIONum, ret); } + +void LEDWidget::UpdateState() +{ + /* Prevent from keep updating the state if LED was set to solid On/Off value */ + if (mBlinkOnTimeMS != 0 && mBlinkOffTimeMS != 0) + { + DoSet(!mState); + ScheduleStateChange(); + } +} + +void LEDWidget::LedStateTimerHandler(k_timer * timer) +{ + if (sStateUpdateCallback) + sStateUpdateCallback(reinterpret_cast(timer->user_data)); +} diff --git a/examples/thermostat/telink/include/AppEvent.h b/examples/thermostat/telink/include/AppEvent.h index 21933d1d03d1d3..07a10228175763 100755 --- a/examples/thermostat/telink/include/AppEvent.h +++ b/examples/thermostat/telink/include/AppEvent.h @@ -23,12 +23,15 @@ struct AppEvent; typedef void (*EventHandler)(AppEvent *); +class LEDWidget; + struct AppEvent { enum AppEventTypes { kEventType_Button = 0, kEventType_Timer, + kEventType_UpdateLedState, kEventType_Thermostat, kEventType_Install, }; @@ -45,6 +48,10 @@ struct AppEvent { void * Context; } TimerEvent; + struct + { + LEDWidget * LedWidget; + } UpdateLedStateEvent; }; EventHandler Handler; diff --git a/examples/thermostat/telink/include/AppTask.h b/examples/thermostat/telink/include/AppTask.h index 8a3322d11d1342..18edadc0436845 100755 --- a/examples/thermostat/telink/include/AppTask.h +++ b/examples/thermostat/telink/include/AppTask.h @@ -19,6 +19,7 @@ #pragma once #include "AppEvent.h" +#include "LEDWidget.h" #include "SensorManager.h" #include "TemperatureManager.h" @@ -50,15 +51,20 @@ class AppTask void DispatchEvent(AppEvent * event); static void UpdateStatusLED(); + static void LEDStateUpdateHandler(LEDWidget * ledWidget); static void FactoryResetButtonEventHandler(void); static void StartThreadButtonEventHandler(void); static void StartBleAdvButtonEventHandler(void); static void ChipEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); + static void FactoryResetTimerTimeoutCallback(k_timer * timer); + + static void FactoryResetTimerEventHandler(AppEvent * aEvent); static void FactoryResetHandler(AppEvent * aEvent); static void StartThreadHandler(AppEvent * aEvent); static void StartBleAdvHandler(AppEvent * aEvent); + static void UpdateLedStateEventHandler(AppEvent * aEvent); static void InitButtons(void); diff --git a/examples/thermostat/telink/src/AppTask.cpp b/examples/thermostat/telink/src/AppTask.cpp index e56092d65262a1..96caac3e06e2bd 100644 --- a/examples/thermostat/telink/src/AppTask.cpp +++ b/examples/thermostat/telink/src/AppTask.cpp @@ -21,7 +21,6 @@ #include "AppConfig.h" #include "AppEvent.h" #include "ButtonManager.h" -#include "LEDWidget.h" #include "ThreadUtil.h" @@ -53,10 +52,10 @@ using namespace ::chip::Credentials; using namespace ::chip::DeviceLayer; namespace { - -constexpr int kAppEventQueueSize = 10; -constexpr uint8_t kButtonPushEvent = 1; -constexpr uint8_t kButtonReleaseEvent = 0; +constexpr int kFactoryResetTriggerTimeout = 2000; +constexpr int kAppEventQueueSize = 10; +constexpr uint8_t kButtonPushEvent = 1; +constexpr uint8_t kButtonReleaseEvent = 0; // NOTE! This key is for test/certification only and should not be available in production devices! // If CONFIG_CHIP_FACTORY_DATA is enabled, this value is read from the factory data. @@ -64,6 +63,7 @@ uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; K_MSGQ_DEFINE(sAppEventQueue, sizeof(AppEvent), kAppEventQueueSize, alignof(AppEvent)); +k_timer sFactoryResetTimer; LEDWidget sStatusLED; @@ -71,10 +71,11 @@ Button sFactoryResetButton; Button sThreadStartButton; Button sBleAdvStartButton; -bool sIsThreadProvisioned = false; -bool sIsThreadEnabled = false; -bool sIsThreadAttached = false; -bool sHaveBLEConnections = false; +bool sIsThreadProvisioned = false; +bool sIsThreadEnabled = false; +bool sIsThreadAttached = false; +bool sHaveBLEConnections = false; +bool sIsFactoryResetTimerActive = false; chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider; @@ -113,6 +114,17 @@ Identify sIdentify = { AppTask AppTask::sAppTask; +class AppFabricTableDelegate : public FabricTable::Delegate +{ + void OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) + { + if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) + { + chip::Server::GetInstance().ScheduleFactoryReset(); + } + } +}; + CHIP_ERROR AppTask::Init() { CHIP_ERROR err; @@ -121,12 +133,17 @@ CHIP_ERROR AppTask::Init() // Initialize status LED LEDWidget::InitGpio(SYSTEM_STATE_LED_PORT); + LEDWidget::SetStateUpdateCallback(LEDStateUpdateHandler); sStatusLED.Init(SYSTEM_STATE_LED_PIN); UpdateStatusLED(); InitButtons(); + // Initialize function button timer + k_timer_init(&sFactoryResetTimer, &AppTask::FactoryResetTimerTimeoutCallback, nullptr); + k_timer_user_data_set(&sFactoryResetTimer, this); + // Initialize CHIP server #if CONFIG_CHIP_FACTORY_DATA ReturnErrorOnFailure(mFactoryDataProvider.Init()); @@ -183,9 +200,17 @@ CHIP_ERROR AppTask::Init() if (err != CHIP_NO_ERROR) { LOG_ERR("SetBLEDeviceName fail"); + return err; + } + + err = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(new AppFabricTableDelegate); + if (err != CHIP_NO_ERROR) + { + LOG_ERR("AppFabricTableDelegate fail"); + return err; } - return err; + return CHIP_NO_ERROR; } CHIP_ERROR AppTask::StartApp() @@ -209,8 +234,6 @@ CHIP_ERROR AppTask::StartApp() DispatchEvent(&event); ret = k_msgq_get(&sAppEventQueue, &event, K_NO_WAIT); } - - sStatusLED.Animate(); } } @@ -232,8 +255,16 @@ void AppTask::FactoryResetButtonEventHandler(void) void AppTask::FactoryResetHandler(AppEvent * aEvent) { - LOG_INF("FactoryResetHandler"); - chip::Server::GetInstance().ScheduleFactoryReset(); + if (!sIsFactoryResetTimerActive) + { + k_timer_start(&sFactoryResetTimer, K_MSEC(kFactoryResetTriggerTimeout), K_NO_WAIT); + sIsFactoryResetTimerActive = true; + } + else + { + k_timer_stop(&sFactoryResetTimer); + sIsFactoryResetTimerActive = false; + } } void AppTask::StartThreadButtonEventHandler(void) @@ -295,6 +326,23 @@ void AppTask::StartBleAdvHandler(AppEvent * aEvent) } } +void AppTask::UpdateLedStateEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type == AppEvent::kEventType_UpdateLedState) + { + aEvent->UpdateLedStateEvent.LedWidget->UpdateState(); + } +} + +void AppTask::LEDStateUpdateHandler(LEDWidget * ledWidget) +{ + AppEvent event; + event.Type = AppEvent::kEventType_UpdateLedState; + event.Handler = UpdateLedStateEventHandler; + event.UpdateLedStateEvent.LedWidget = ledWidget; + sAppTask.PostEvent(&event); +} + void AppTask::UpdateStatusLED() { if (sIsThreadProvisioned && sIsThreadEnabled) @@ -363,11 +411,36 @@ void AppTask::DispatchEvent(AppEvent * aEvent) void AppTask::UpdateClusterState() {} +void AppTask::FactoryResetTimerTimeoutCallback(k_timer * timer) +{ + if (!timer) + { + return; + } + + AppEvent event; + event.Type = AppEvent::kEventType_Timer; + event.Handler = FactoryResetTimerEventHandler; + sAppTask.PostEvent(&event); +} + +void AppTask::FactoryResetTimerEventHandler(AppEvent * aEvent) +{ + if (aEvent->Type != AppEvent::kEventType_Timer) + { + return; + } + + sIsFactoryResetTimerActive = false; + LOG_INF("FactoryResetHandler"); + chip::Server::GetInstance().ScheduleFactoryReset(); +} + void AppTask::InitButtons(void) { - sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, FactoryResetButtonEventHandler); - sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, StartThreadButtonEventHandler); - sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, StartBleAdvButtonEventHandler); + sFactoryResetButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_1, true, FactoryResetButtonEventHandler); + sThreadStartButton.Configure(BUTTON_PORT, BUTTON_PIN_3, BUTTON_PIN_2, false, StartThreadButtonEventHandler); + sBleAdvStartButton.Configure(BUTTON_PORT, BUTTON_PIN_4, BUTTON_PIN_2, false, StartBleAdvButtonEventHandler); ButtonManagerInst().AddButton(sFactoryResetButton); ButtonManagerInst().AddButton(sThreadStartButton); diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index 2e1dff050641d6..bd7dc36231c699 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -527,6 +527,7 @@ def BuildTelinkTarget(): target.AppendFixedTargets([ TargetPart('all-clusters', app=TelinkApp.ALL_CLUSTERS), TargetPart('all-clusters-minimal', app=TelinkApp.ALL_CLUSTERS_MINIMAL), + TargetPart('contact-sensor', app=TelinkApp.CONTACT_SENSOR), TargetPart('light', app=TelinkApp.LIGHT), TargetPart('light-switch', app=TelinkApp.SWITCH), TargetPart('ota-requestor', app=TelinkApp.OTA_REQUESTOR), diff --git a/scripts/build/builders/telink.py b/scripts/build/builders/telink.py index 32a9bf85c3187e..5be30cb72ceb80 100644 --- a/scripts/build/builders/telink.py +++ b/scripts/build/builders/telink.py @@ -23,6 +23,7 @@ class TelinkApp(Enum): ALL_CLUSTERS = auto() ALL_CLUSTERS_MINIMAL = auto() + CONTACT_SENSOR = auto() LIGHT = auto() SWITCH = auto() OTA_REQUESTOR = auto() @@ -33,6 +34,8 @@ def ExampleName(self): return 'all-clusters-app' elif self == TelinkApp.ALL_CLUSTERS_MINIMAL: return 'all-clusters-minimal-app' + elif self == TelinkApp.CONTACT_SENSOR: + return 'contact-sensor-app' elif self == TelinkApp.LIGHT: return 'lighting-app' elif self == TelinkApp.SWITCH: @@ -49,6 +52,8 @@ def AppNamePrefix(self): return 'chip-telink-all-clusters-example' elif self == TelinkApp.ALL_CLUSTERS_MINIMAL: return 'chip-telink-all-clusters-minimal-example' + elif self == TelinkApp.CONTACT_SENSOR: + return 'chip-telink-contact-sensor-example' elif self == TelinkApp.LIGHT: return 'chip-telink-lighting-example' elif self == TelinkApp.SWITCH: diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt index 2fbf8d8813520f..015f917dac3200 100644 --- a/scripts/build/testdata/all_targets_linux_x64.txt +++ b/scripts/build/testdata/all_targets_linux_x64.txt @@ -18,5 +18,5 @@ nrf-{nrf5340dk,nrf52840dk,nrf52840dongle}-{all-clusters,all-clusters-minimal,loc nrf-native-posix-64-tests qpg-qpg6105-{lock,light,shell,persistent-storage} tizen-arm-{all-clusters,all-clusters-minimal,chip-tool,light}[-no-ble][-no-wifi][-asan][-ubsan] -telink-tlsr9518adk80d-{all-clusters,all-clusters-minimal,light,light-switch,ota-requestor,thermostat} +telink-tlsr9518adk80d-{all-clusters,all-clusters-minimal,contact-sensor,light,light-switch,ota-requestor,thermostat} openiotsdk-{shell,lock} diff --git a/scripts/tools/telink/mfg_tool.py b/scripts/tools/telink/mfg_tool.py index 2c4390c0d0eed3..fc3f1eb596d27c 100644 --- a/scripts/tools/telink/mfg_tool.py +++ b/scripts/tools/telink/mfg_tool.py @@ -644,7 +644,7 @@ def base64_str(s): return base64.b64decode(s) basic_args.add_argument('--part_number', type=str, required=False, help='Provide human-readable product number') part_gen_args = parser.add_argument_group('Partition generator options') - part_gen_args.add_argument('--offset', type=allow_any_int, default=0x1F4000, + part_gen_args.add_argument('--offset', type=allow_any_int, default=0x104000, help='Partition offset - an address in devices NVM memory, where factory data will be stored') part_gen_args.add_argument('--size', type=allow_any_int, default=0x1000, help='The maximum partition size') diff --git a/scripts/tools/telink/readme.md b/scripts/tools/telink/readme.md index d3539b590d3591..4bb4a8a32a9d1c 100644 --- a/scripts/tools/telink/readme.md +++ b/scripts/tools/telink/readme.md @@ -187,7 +187,7 @@ You can try one of these factory partition FW on developing stage. > [v1.0-branch](https://github.com/telink-semi/zephyr/blob/telink_matter_v1.0-branch/boards/riscv/tlsr9518adk80d/tlsr9518adk80d.dts) > is `0xF4000` and for > [master branch](https://github.com/telink-semi/zephyr/blob/telink_matter/boards/riscv/tlsr9518adk80d/tlsr9518adk80d.dts) - > is `0x1F4000`. You can check the `factory_partition` reg at + > is `0x104000`. You can check the `factory_partition` reg at > `tlsr9518adk80d.dts` for details. For example, the `factory_data_bin` with serial number diff --git a/src/platform/telink/BLEManagerImpl.cpp b/src/platform/telink/BLEManagerImpl.cpp index f11d3c087678b6..fdb120ef9414e6 100644 --- a/src/platform/telink/BLEManagerImpl.cpp +++ b/src/platform/telink/BLEManagerImpl.cpp @@ -886,24 +886,17 @@ ssize_t BLEManagerImpl::HandleC3Read(struct bt_conn * conId, const struct bt_gat } #endif -void BLEManagerImpl::BLEConnDisconnect(System::Layer * layer, void * param) +CHIP_ERROR BLEManagerImpl::HandleOperationalNetworkEnabled(const ChipDeviceEvent * event) { + ChipLogDetail(DeviceLayer, "HandleOperationalNetworkEnabled"); + int error = bt_conn_disconnect(BLEMgrImpl().mconId, BT_HCI_ERR_LOCALHOST_TERM_CONN); if (error) { ChipLogError(DeviceLayer, "Close BLEConn err: %d", error); } -} -CHIP_ERROR BLEManagerImpl::HandleOperationalNetworkEnabled(const ChipDeviceEvent * event) -{ - - ChipLogDetail(DeviceLayer, "HandleOperationalNetworkEnabled"); - - // Start timer to close BLE connection. - DeviceLayer::SystemLayer().StartTimer(System::Clock::Milliseconds32(20), BLEConnDisconnect, this); - - return CHIP_NO_ERROR; + return MapErrorZephyr(error); } CHIP_ERROR BLEManagerImpl::HandleThreadStateChange(const ChipDeviceEvent * event) diff --git a/src/platform/telink/BLEManagerImpl.h b/src/platform/telink/BLEManagerImpl.h index f6fcbf87c8e584..9937e1212724e2 100644 --- a/src/platform/telink/BLEManagerImpl.h +++ b/src/platform/telink/BLEManagerImpl.h @@ -127,7 +127,6 @@ class BLEManagerImpl final : public BLEManager, private BleLayer, private BlePla */ CHIP_ERROR HandleThreadStateChange(const ChipDeviceEvent * event); CHIP_ERROR HandleOperationalNetworkEnabled(const ChipDeviceEvent * event); - static void BLEConnDisconnect(chip::System::Layer * aLayer, void * aAppState); #if CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING CHIP_ERROR PrepareC3CharData(); From 457f809c201f7f834b1e0ad74f1bcf7cff314261 Mon Sep 17 00:00:00 2001 From: manjunath-grl <102359958+manjunath-grl@users.noreply.github.com> Date: Sat, 7 Jan 2023 01:58:44 +0530 Subject: [PATCH 15/20] Test added Dec 26 (#24208) * Modified test TC-ACL-2.4 TC-ACL-2.7 TC-ACL-2.9 * Auto generated files * Restyled by clang-format * Removed SWTCH-3.1 * Autogenerated files * Disabled TC-ACL-2.4 in Darwin Json * Auto generated files Co-authored-by: Restyled.io --- .../templates/tests/ciTests.json | 5 +- .../placeholder/linux/apps/app1/ciTests.json | 8 +- .../placeholder/linux/apps/app1/config.matter | 122 +- .../placeholder/linux/apps/app1/config.zap | 592 ++ .../placeholder/linux/apps/app2/config.matter | 97 +- .../placeholder/linux/apps/app2/config.zap | 698 +- .../suites/certification/Test_TC_ACL_2_4.yaml | 3493 +++------- .../suites/certification/Test_TC_ACL_2_7.yaml | 350 +- .../suites/certification/Test_TC_ACL_2_9.yaml | 497 +- .../certification/Test_TC_LCFG_3_1.yaml | 86 - .../Test_TC_LCFG_3_1_Simulated.yaml | 40 + .../certification/Test_TC_LUNIT_1_1.yaml | 194 - .../Test_TC_LUNIT_1_1_Simulated.yaml | 54 + .../certification/Test_TC_LUNIT_2_1.yaml | 124 - .../Test_TC_LUNIT_2_1_Simulated.yaml | 48 + .../suites/certification/Test_TC_OCC_2_2.yaml | 400 -- .../Test_TC_OCC_2_2_Simulated.yaml | 106 + .../suites/certification/Test_TC_OCC_2_4.yaml | 89 - .../Test_TC_OCC_2_4_Simulated.yaml | 38 + .../certification/Test_TC_SWTCH_3_1.yaml | 240 - .../certification/Test_TC_ULABEL_3_1.yaml | 140 - .../Test_TC_ULABEL_3_1_Simulated.yaml | 40 + src/app/tests/suites/ciTests.json | 13 +- src/app/tests/suites/manualTests.json | 20 +- .../chip-tool/zap-generated/test/Commands.h | 5952 ++++++++++++----- .../zap-generated/test/Commands.h | 504 ++ .../app1/zap-generated/CHIPClientCallbacks.h | 2 + .../app1/zap-generated/CHIPClusters.h | 19 + .../placeholder/app1/zap-generated/access.h | 60 + .../app1/zap-generated/endpoint_config.h | 159 +- .../app1/zap-generated/gen_config.h | 34 + .../app1/zap-generated/test/Commands.h | 537 ++ .../placeholder/app2/zap-generated/access.h | 60 + .../app2/zap-generated/endpoint_config.h | 255 +- .../app2/zap-generated/gen_config.h | 24 + .../app2/zap-generated/test/Commands.h | 537 ++ 36 files changed, 9461 insertions(+), 6176 deletions(-) delete mode 100644 src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_LCFG_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_LUNIT_1_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_OCC_2_2_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_OCC_2_4_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_ULABEL_3_1_Simulated.yaml diff --git a/examples/darwin-framework-tool/templates/tests/ciTests.json b/examples/darwin-framework-tool/templates/tests/ciTests.json index fa2baf9081e469..bc93afef772ff6 100644 --- a/examples/darwin-framework-tool/templates/tests/ciTests.json +++ b/examples/darwin-framework-tool/templates/tests/ciTests.json @@ -23,6 +23,9 @@ "Test_TC_G_2_1", "Test_TC_FLABEL_2_1", "Test_TC_TSTAT_2_1", - "Test_TC_TSTAT_2_2" + "Test_TC_TSTAT_2_2", + "Test_TC_ACL_2_4", + "Test_TC_ACL_2_7", + "Test_TC_ACL_2_9" ] } diff --git a/examples/placeholder/linux/apps/app1/ciTests.json b/examples/placeholder/linux/apps/app1/ciTests.json index 1b4508da3227a7..368eb2c968d052 100644 --- a/examples/placeholder/linux/apps/app1/ciTests.json +++ b/examples/placeholder/linux/apps/app1/ciTests.json @@ -18,7 +18,13 @@ "Test_TC_PSCFG_3_1_Simulated", "Test_TC_RH_3_1_Simulated", "Test_TC_SWTCH_3_1_Simulated", - "Test_TC_WNCV_5_1_Simulated" + "Test_TC_WNCV_5_1_Simulated", + "Test_TC_LCFG_3_1_Simulated", + "Test_TC_LUNIT_1_1_Simulated", + "Test_TC_LUNIT_2_1_Simulated", + "Test_TC_OCC_2_2_Simulated", + "Test_TC_OCC_2_4_Simulated", + "Test_TC_ULABEL_3_1_Simulated" ], "collection": ["Test"] } diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index e2f2144245cdd3..731e4719127078 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -1,6 +1,11 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +struct LabelStruct { + char_string<16> label = 0; + char_string<16> value = 1; +} + server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -555,6 +560,52 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +client cluster LocalizationConfiguration = 43 { + attribute char_string<35> activeLocale = 0; + readonly attribute CHAR_STRING supportedLocales[] = 1; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +server cluster LocalizationConfiguration = 43 { + attribute char_string<35> activeLocale = 0; + readonly attribute CHAR_STRING supportedLocales[] = 1; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +client cluster UnitLocalization = 45 { + enum TempUnit : ENUM8 { + kFahrenheit = 0; + kCelsius = 1; + kKelvin = 2; + } + + bitmap UnitLocalizationFeature : BITMAP32 { + kTemperatureUnit = 0x1; + } + + attribute TempUnit temperatureUnit = 0; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +server cluster UnitLocalization = 45 { + enum TempUnit : ENUM8 { + kFahrenheit = 0; + kCelsius = 1; + kKelvin = 2; + } + + bitmap UnitLocalizationFeature : BITMAP32 { + kTemperatureUnit = 0x1; + } + + attribute TempUnit temperatureUnit = 0; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute bitmap32 featureMap = 65532; @@ -1454,25 +1505,21 @@ server cluster OperationalCredentials = 62 { } client cluster FixedLabel = 64 { - struct LabelStruct { - char_string<16> label = 0; - char_string<16> value = 1; - } - readonly attribute LabelStruct labelList[] = 0; readonly attribute int16u clusterRevision = 65533; } server cluster FixedLabel = 64 { - struct LabelStruct { - char_string<16> label = 0; - char_string<16> value = 1; - } - readonly attribute LabelStruct labelList[] = 0; readonly attribute int16u clusterRevision = 65533; } +server cluster UserLabel = 65 { + attribute access(write: manage) LabelStruct labelList[] = 0; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -2088,6 +2135,23 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +server cluster OccupancySensing = 1030 { + readonly attribute bitmap8 occupancy = 0; + readonly attribute enum8 occupancySensorType = 1; + readonly attribute bitmap8 occupancySensorTypeBitmap = 2; + attribute access(write: manage) int16u pirOccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) int16u pirUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) int8u pirUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + client cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -3076,6 +3140,8 @@ endpoint 0 { endpoint 1 { device type anonymousEndpointType = 258, version 1; binding cluster OnOff; + binding cluster LocalizationConfiguration; + binding cluster UnitLocalization; binding cluster FixedLabel; server cluster Identify { @@ -3138,11 +3204,30 @@ endpoint 1 { ram attribute clusterRevision default = 1; } + server cluster LocalizationConfiguration { + ram attribute activeLocale; + callback attribute supportedLocales; + ram attribute featureMap; + ram attribute clusterRevision default = 1; + } + + server cluster UnitLocalization { + ram attribute temperatureUnit; + ram attribute featureMap; + ram attribute clusterRevision default = 1; + } + server cluster FixedLabel { callback attribute labelList; ram attribute clusterRevision default = 1; } + server cluster UserLabel { + callback attribute labelList; + ram attribute featureMap; + callback attribute clusterRevision default = 1; + } + server cluster ColorControl { ram attribute currentX default = 0x616B; ram attribute currentY default = 0x607D; @@ -3152,6 +3237,23 @@ endpoint 1 { ram attribute featureMap; ram attribute clusterRevision default = 5; } + + server cluster OccupancySensing { + ram attribute occupancy; + ram attribute occupancySensorType; + ram attribute occupancySensorTypeBitmap; + ram attribute pirOccupiedToUnoccupiedDelay; + ram attribute pirUnoccupiedToOccupiedDelay; + ram attribute pirUnoccupiedToOccupiedThreshold default = 1; + ram attribute ultrasonicOccupiedToUnoccupiedDelay; + ram attribute ultrasonicUnoccupiedToOccupiedDelay; + ram attribute ultrasonicUnoccupiedToOccupiedThreshold default = 1; + ram attribute physicalContactOccupiedToUnoccupiedDelay; + ram attribute physicalContactUnoccupiedToOccupiedDelay; + ram attribute physicalContactUnoccupiedToOccupiedThreshold default = 1; + ram attribute featureMap; + callback attribute clusterRevision default = 3; + } } diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap index a116fddd7c1234..38e76b10033723 100644 --- a/examples/placeholder/linux/apps/app1/config.zap +++ b/examples/placeholder/linux/apps/app1/config.zap @@ -8303,6 +8303,598 @@ "reportableChange": 0 } ] + }, + { + "name": "Localization Configuration", + "code": 43, + "mfgCode": null, + "define": "LOCALIZATION_CONFIGURATION_CLUSTER", + "side": "client", + "enabled": 1, + "attributes": [ + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "client", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Localization Configuration", + "code": 43, + "mfgCode": null, + "define": "LOCALIZATION_CONFIGURATION_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "ActiveLocale", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "SupportedLocales", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Unit Localization", + "code": 45, + "mfgCode": null, + "define": "UNIT_LOCALIZATION_CLUSTER", + "side": "client", + "enabled": 1, + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Unit Localization", + "code": 45, + "mfgCode": null, + "define": "UNIT_LOCALIZATION_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "temperature unit", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "TempUnit", + "included": 1, + "storageOption": "RAM", + "singleton": 1, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Occupancy Sensor", + "code": 1030, + "mfgCode": null, + "define": "OCCUPANCY_SENSING_CLUSTER", + "side": "client", + "enabled": 0, + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Occupancy Sensor", + "code": 1030, + "mfgCode": null, + "define": "OCCUPANCY_SENSING_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Occupancy", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "bitmap8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "OccupancySensorType", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "enum8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "OccupancySensorTypeBitmap", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "bitmap8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PIROccupiedToUnoccupiedDelay", + "code": 16, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PIRUnoccupiedToOccupiedDelay", + "code": 17, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PIRUnoccupiedToOccupiedThreshold", + "code": 18, + "mfgCode": null, + "side": "server", + "type": "bitmap8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "UltrasonicOccupiedToUnoccupiedDelay", + "code": 32, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "UltrasonicUnoccupiedToOccupiedDelay", + "code": 33, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "UltrasonicUnoccupiedToOccupiedThreshold", + "code": 34, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PhysicalContactOccupiedToUnoccupiedDelay", + "code": 48, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PhysicalContactUnoccupiedToOccupiedDelay", + "code": 49, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PhysicalContactUnoccupiedToOccupiedThreshold", + "code": 50, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "User Label", + "code": 65, + "mfgCode": null, + "define": "USER_LABEL_CLUSTER", + "side": "client", + "enabled": 0, + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "User Label", + "code": 65, + "mfgCode": null, + "define": "USER_LABEL_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "LabelList", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] } ] } diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index e2f2144245cdd3..e6655ba610485f 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -1,6 +1,11 @@ // This IDL was generated automatically by ZAP. // It is for view/code review purposes only. +struct LabelStruct { + char_string<16> label = 0; + char_string<16> value = 1; +} + server cluster Identify = 3 { enum IdentifyEffectIdentifier : ENUM8 { kBlink = 0; @@ -555,6 +560,29 @@ server cluster BasicInformation = 40 { readonly attribute int16u clusterRevision = 65533; } +server cluster LocalizationConfiguration = 43 { + attribute char_string<35> activeLocale = 0; + readonly attribute CHAR_STRING supportedLocales[] = 1; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +server cluster UnitLocalization = 45 { + enum TempUnit : ENUM8 { + kFahrenheit = 0; + kCelsius = 1; + kKelvin = 2; + } + + bitmap UnitLocalizationFeature : BITMAP32 { + kTemperatureUnit = 0x1; + } + + attribute TempUnit temperatureUnit = 0; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + server cluster PowerSourceConfiguration = 46 { readonly attribute INT8U sources[] = 0; readonly attribute bitmap32 featureMap = 65532; @@ -1454,25 +1482,21 @@ server cluster OperationalCredentials = 62 { } client cluster FixedLabel = 64 { - struct LabelStruct { - char_string<16> label = 0; - char_string<16> value = 1; - } - readonly attribute LabelStruct labelList[] = 0; readonly attribute int16u clusterRevision = 65533; } server cluster FixedLabel = 64 { - struct LabelStruct { - char_string<16> label = 0; - char_string<16> value = 1; - } - readonly attribute LabelStruct labelList[] = 0; readonly attribute int16u clusterRevision = 65533; } +server cluster UserLabel = 65 { + attribute access(write: manage) LabelStruct labelList[] = 0; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + server cluster BooleanState = 69 { info event StateChange = 0 { boolean stateValue = 0; @@ -2088,6 +2112,23 @@ server cluster RelativeHumidityMeasurement = 1029 { readonly attribute int16u clusterRevision = 65533; } +server cluster OccupancySensing = 1030 { + readonly attribute bitmap8 occupancy = 0; + readonly attribute enum8 occupancySensorType = 1; + readonly attribute bitmap8 occupancySensorTypeBitmap = 2; + attribute access(write: manage) int16u pirOccupiedToUnoccupiedDelay = 16; + attribute access(write: manage) int16u pirUnoccupiedToOccupiedDelay = 17; + attribute access(write: manage) int8u pirUnoccupiedToOccupiedThreshold = 18; + attribute access(write: manage) int16u ultrasonicOccupiedToUnoccupiedDelay = 32; + attribute access(write: manage) int16u ultrasonicUnoccupiedToOccupiedDelay = 33; + attribute access(write: manage) int8u ultrasonicUnoccupiedToOccupiedThreshold = 34; + attribute access(write: manage) int16u physicalContactOccupiedToUnoccupiedDelay = 48; + attribute access(write: manage) int16u physicalContactUnoccupiedToOccupiedDelay = 49; + attribute access(write: manage) int8u physicalContactUnoccupiedToOccupiedThreshold = 50; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + client cluster TargetNavigator = 1285 { enum TargetNavigatorStatusEnum : ENUM8 { kSuccess = 0; @@ -2721,6 +2762,19 @@ endpoint 0 { ram attribute clusterRevision default = 1; } + server cluster LocalizationConfiguration { + ram attribute activeLocale; + callback attribute supportedLocales; + ram attribute featureMap; + ram attribute clusterRevision default = 1; + } + + server cluster UnitLocalization { + ram attribute temperatureUnit; + ram attribute featureMap; + ram attribute clusterRevision default = 1; + } + server cluster PowerSourceConfiguration { callback attribute sources; ram attribute featureMap; @@ -2873,6 +2927,12 @@ endpoint 0 { ram attribute clusterRevision default = 1; } + server cluster UserLabel { + callback attribute labelList; + ram attribute featureMap; + callback attribute clusterRevision default = 1; + } + server cluster BooleanState { ram attribute stateValue; ram attribute featureMap; @@ -3152,6 +3212,23 @@ endpoint 1 { ram attribute featureMap; ram attribute clusterRevision default = 5; } + + server cluster OccupancySensing { + ram attribute occupancy; + ram attribute occupancySensorType; + ram attribute occupancySensorTypeBitmap; + ram attribute pirOccupiedToUnoccupiedDelay; + ram attribute pirUnoccupiedToOccupiedDelay; + ram attribute pirUnoccupiedToOccupiedThreshold default = 1; + ram attribute ultrasonicOccupiedToUnoccupiedDelay; + ram attribute ultrasonicUnoccupiedToOccupiedDelay; + ram attribute ultrasonicUnoccupiedToOccupiedThreshold default = 1; + ram attribute physicalContactOccupiedToUnoccupiedDelay; + ram attribute physicalContactUnoccupiedToOccupiedDelay; + ram attribute physicalContactUnoccupiedToOccupiedThreshold default = 1; + ram attribute featureMap; + callback attribute clusterRevision default = 3; + } } diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap index 5e18f830933d37..48198e2be34d21 100644 --- a/examples/placeholder/linux/apps/app2/config.zap +++ b/examples/placeholder/linux/apps/app2/config.zap @@ -2450,6 +2450,206 @@ } ] }, + { + "name": "Localization Configuration", + "code": 43, + "mfgCode": null, + "define": "LOCALIZATION_CONFIGURATION_CLUSTER", + "side": "client", + "enabled": 0, + "attributes": [ + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "client", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Localization Configuration", + "code": 43, + "mfgCode": null, + "define": "LOCALIZATION_CONFIGURATION_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "ActiveLocale", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "SupportedLocales", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Unit Localization", + "code": 45, + "mfgCode": null, + "define": "UNIT_LOCALIZATION_CLUSTER", + "side": "client", + "enabled": 0, + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Unit Localization", + "code": 45, + "mfgCode": null, + "define": "UNIT_LOCALIZATION_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "temperature unit", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "TempUnit", + "included": 1, + "storageOption": "RAM", + "singleton": 1, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, { "name": "WiFi Network Diagnostics", "code": 54, @@ -3529,10 +3729,10 @@ ] }, { - "name": "Boolean State", - "code": 69, + "name": "User Label", + "code": 65, "mfgCode": null, - "define": "BOOLEAN_STATE_CLUSTER", + "define": "USER_LABEL_CLUSTER", "side": "client", "enabled": 0, "attributes": [ @@ -3555,24 +3755,24 @@ ] }, { - "name": "Boolean State", - "code": 69, + "name": "User Label", + "code": 65, "mfgCode": null, - "define": "BOOLEAN_STATE_CLUSTER", + "define": "USER_LABEL_CLUSTER", "side": "server", "enabled": 1, "attributes": [ { - "name": "StateValue", + "name": "LabelList", "code": 0, "mfgCode": null, "side": "server", - "type": "boolean", + "type": "array", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3601,7 +3801,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "1", @@ -3613,39 +3813,13 @@ ] }, { - "name": "Mode Select", - "code": 80, + "name": "Boolean State", + "code": 69, "mfgCode": null, - "define": "MODE_SELECT_CLUSTER", + "define": "BOOLEAN_STATE_CLUSTER", "side": "client", - "enabled": 1, - "commands": [ - { - "name": "ChangeToMode", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], + "enabled": 0, "attributes": [ - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "client", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, { "name": "ClusterRevision", "code": 65533, @@ -3665,47 +3839,157 @@ ] }, { - "name": "Mode Select", - "code": 80, + "name": "Boolean State", + "code": 69, "mfgCode": null, - "define": "MODE_SELECT_CLUSTER", + "define": "BOOLEAN_STATE_CLUSTER", "side": "server", "enabled": 1, "attributes": [ { - "name": "Description", + "name": "StateValue", "code": 0, "mfgCode": null, "side": "server", - "type": "char_string", + "type": "boolean", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "StandardNamespace", - "code": 1, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", - "type": "enum16", + "type": "bitmap32", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "SupportedModes", + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Mode Select", + "code": 80, + "mfgCode": null, + "define": "MODE_SELECT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "ChangeToMode", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "client", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Mode Select", + "code": 80, + "mfgCode": null, + "define": "MODE_SELECT_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Description", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "StandardNamespace", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "enum16", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SupportedModes", "code": 2, "mfgCode": null, "side": "server", @@ -8303,6 +8587,314 @@ "reportableChange": 0 } ] + }, + { + "name": "Occupancy Sensor", + "code": 1030, + "mfgCode": null, + "define": "OCCUPANCY_SENSING_CLUSTER", + "side": "client", + "enabled": 0, + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Occupancy Sensor", + "code": 1030, + "mfgCode": null, + "define": "OCCUPANCY_SENSING_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Occupancy", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "bitmap8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "OccupancySensorType", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "enum8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "OccupancySensorTypeBitmap", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "bitmap8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PIROccupiedToUnoccupiedDelay", + "code": 16, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PIRUnoccupiedToOccupiedDelay", + "code": 17, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PIRUnoccupiedToOccupiedThreshold", + "code": 18, + "mfgCode": null, + "side": "server", + "type": "bitmap8", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "UltrasonicOccupiedToUnoccupiedDelay", + "code": 32, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "UltrasonicUnoccupiedToOccupiedDelay", + "code": 33, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "UltrasonicUnoccupiedToOccupiedThreshold", + "code": 34, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PhysicalContactOccupiedToUnoccupiedDelay", + "code": 48, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PhysicalContactUnoccupiedToOccupiedDelay", + "code": 49, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "PhysicalContactUnoccupiedToOccupiedThreshold", + "code": 50, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] } ] } diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml index 7867035b8710f9..f1c4bfa496ab2f 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml @@ -13,1057 +13,572 @@ # 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: 131.2.4. [TC-ACL-2.4] ACL attribute +name: 133.2.3. [TC-ACL-2.4] Extension attribute PICS: - ACL.S config: nodeId: 0x12344321 - cluster: "Basic Information" + cluster: "Access Control" endpoint: 0 + CommissionerNodeId: + type: node_id + defaultValue: 112233 + CAT1: + type: int64u + defaultValue: 65520 + CAT2: + type: int64u + defaultValue: 65521 + CAT3: + type: int64u + defaultValue: 65522 + CAT4: + type: int64u + defaultValue: 65523 tests: - - label: "Pre-conditions" - verification: | - 1.N1 is the node ID of TH1 - - 2 .CAT1 is a valid CAT with arbitrary ID and arbitrary version - - 3.CAT2 is a valid CAT with arbitrary ID and arbitrary version - - 4.CAT3 is a valid CAT with arbitrary ID and arbitrary version - - 5.CAT4 is a valid CAT with arbitrary ID and arbitrary version - disabled: true - - - label: "TH1 commissions DUT using admin node ID N1" - verification: | - DUT - sudo ./chip-all-clusters-app --wifi - - TH1 - ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 - disabled: true + - label: "Step 1:Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId - label: - "TH1 reads DUT Endpoint 0 OperationalCredentials cluster + "Step 2:TH1 reads DUT Endpoint 0 OperationalCredentials cluster CurrentFabricIndex attribute" - verification: | - ./chip-tool operationalcredentials read current-fabric-index 1 0 - - - On TH1(Chiptool), verify the CurrentFabricIndex as 1 + command: "readAttribute" + cluster: "Operational Credentials" + attribute: "CurrentFabricIndex" + response: + saveAs: CurrentFabricIndex - [1656652012.060584][2763:2768] CHIP:DMG: - [1656652012.060609][2763:2768] CHIP:DMG: SuppressResponse = true, - [1656652012.060634][2763:2768] CHIP:DMG: InteractionModelRevision = 1 - [1656652012.060659][2763:2768] CHIP:DMG: } - [1656652012.060820][2763:2768] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0005 DataVersion: 4209633606 - [1656652012.063135][2763:2768] CHIP:TOO: CurrentFabricIndex: 1 - [1656652012.063267][2763:2768] CHIP:EM: Sending Standalone Ack for MessageCounter:205308569 on exchange 52625i - [1656652012.063360][2763:2768] CHIP:IN: Prepared secure message 0xffff7b7ed958 to 0x0000000000000001 (1) - of type 0x10 and protocolId (0, 0) on exchange 52625i with MessageCounter:187919921. - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + - label: + "Step 3:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - - On TH1(Chiptool) , Verify that the AccessControlEntryStruct containing 1 element - - [1656652338.381499][2784:2789] CHIP:DMG: }, - [1656652338.381552][2784:2789] CHIP:DMG: - [1656652338.381590][2784:2789] CHIP:DMG: ], - [1656652338.381650][2784:2789] CHIP:DMG: - [1656652338.381690][2784:2789] CHIP:DMG: SuppressResponse = true, - [1656652338.381732][2784:2789] CHIP:DMG: InteractionModelRevision = 1 - [1656652338.381769][2784:2789] CHIP:DMG: } - [1656652338.382142][2784:2789] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 3780432410 - [1656652338.382228][2784:2789] CHIP:TOO: ACL: 1 entries - [1656652338.382315][2784:2789] CHIP:TOO: [1]: { - [1656652338.382378][2784:2789] CHIP:TOO: Privilege: 5 - [1656652338.382418][2784:2789] CHIP:TOO: AuthMode: 2 - [1656652338.382458][2784:2789] CHIP:TOO: Subjects: 1 entries - [1656652338.382504][2784:2789] CHIP:TOO: [1]: 112233 - [1656652338.382547][2784:2789] CHIP:TOO: Targets: null - [1656652338.382586][2784:2789] CHIP:TOO: FabricIndex: 1 - [1656652338.382617][2784:2789] CHIP:TOO: } - [1656652338.382736][2784:2789] CHIP:EM: Sending Standalone Ack for MessageCounter:224641043 on exchange 12328i - [1656652338.382835][2784:2789] CHIP:IN: Prepared secure message 0xffffa27cd958 to 0x0000000000000001 (1) of type 0x10 and protocolId - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 3 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2 . struct Privilege field: View (1) - AuthMode field: CASE (3) Subjects field: [111, 222, 333, 444] Targets - field: [{Cluster: 11}, {Endpoint: 22}] 3..struct Privilege field: - Operate (3) AuthMode field: Group (3) Subjects field: [555, 666, 777, - 888] Targets field: [{Cluster: 55}, {Endpoint: 66}]" + "Step 4:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, + value is list of AccessControlEntryStruct containing 3 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2 . struct Privilege field: + View (1) AuthMode field: CASE (3) Subjects field: [111, 222, 333, 444] + Targets field: [{Cluster: 11}, {Endpoint: 22}] 3..struct Privilege + field: Operate (3) AuthMode field: Group (3) Subjects field: [555, + 666, 777, 888] Targets field: [{Cluster: 55}, {Endpoint: 66}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 3, "subjects": [111,222,333,444], "targets": [{"cluster":11 , "endpoint":22, "deviceType": null}]},{ "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets": [{"cluster": 55, "endpoint": 66, "deviceType":null }]}]' 1 0 - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with 3 elements - [1658323877.660699][2502:2507] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658323877.660829][2502:2507] CHIP:DMG: WriteResponseMessage = - [1658323877.660890][2502:2507] CHIP:DMG: { - [1658323877.660943][2502:2507] CHIP:DMG: AttributeStatusIBs = - [1658323877.661019][2502:2507] CHIP:DMG: [ - [1658323877.661079][2502:2507] CHIP:DMG: AttributeStatusIB = - [1658323877.661251][2502:2507] CHIP:DMG: { - [1658323877.661321][2502:2507] CHIP:DMG: AttributePathIB = - [1658323877.661397][2502:2507] CHIP:DMG: { - [1658323877.661477][2502:2507] CHIP:DMG: Endpoint = 0x0, - [1658323877.661568][2502:2507] CHIP:DMG: Cluster = 0x1f, - [1658323877.661657][2502:2507] CHIP:DMG: Attribute = 0x0000_0000, - [1658323877.661744][2502:2507] CHIP:DMG: } - [1658323877.661838][2502:2507] CHIP:DMG: - [1658323877.661920][2502:2507] CHIP:DMG: StatusIB = - [1658323877.662004][2502:2507] CHIP:DMG: { - [1658323877.662084][2502:2507] CHIP:DMG: status = 0x00 (SUCCESS), - [1658323877.662167][2502:2507] CHIP:DMG: }, - [1658323877.662243][2502:2507] CHIP:DMG: - [1658323877.662309][2502:2507] CHIP:DMG: }, - [1658323877.662398][2502:2507] CHIP:DMG: - [1658323877.662458][2502:2507] CHIP:DMG: AttributeStatusIB = - [1658323877.662527][2502:2507] CHIP:DMG: { - [1658323877.662590][2502:2507] CHIP:DMG: AttributePathIB = - [1658323877.662706][2502:2507] CHIP:DMG: { - [1658323877.662784][2502:2507] CHIP:DMG: Endpoint = 0x0, - [1658323877.662872][2502:2507] CHIP:DMG: Cluster = 0x1f, - [1658323877.662939][2502:2507] CHIP:DMG: Attribute = 0x0000_0000, - [1658323877.663079][2502:2507] CHIP:DMG: ListIndex = Null, - [1658323877.663151][2502:2507] CHIP:DMG: } - [1658323877.663228][2502:2507] CHIP:DMG: - [1658323877.663298][2502:2507] CHIP:DMG: StatusIB = - [1658323877.663364][2502:2507] CHIP:DMG: { - [1658323877.663428][2502:2507] CHIP:DMG: status = 0x00 (SUCCESS), - [1658323877.663500][2502:2507] CHIP:DMG: }, - [1658323877.663566][2502:2507] CHIP:DMG: - [1658323877.663624][2502:2507] CHIP:DMG: }, - [1658323877.663703][2502:2507] CHIP:DMG: - [1658323877.663754][2502:2507] CHIP:DMG: AttributeStatusIB = - [1658323877.663814][2502:2507] CHIP:DMG: { - [1658323877.663871][2502:2507] CHIP:DMG: AttributePathIB = - [1658323877.663941][2502:2507] CHIP:DMG: { - [1658323877.664007][2502:2507] CHIP:DMG: Endpoint = 0x0, - [1658323877.664077][2502:2507] CHIP:DMG: Cluster = 0x1f, - [1658323877.664147][2502:2507] CHIP:DMG: Attribute = 0x0000_0000, - [1658323877.664214][2502:2507] CHIP:DMG: ListIndex = Null, - [1658323877.664278][2502:2507] CHIP:DMG: } - [1658323877.664350][2502:2507] CHIP:DMG: - [1658323877.664414][2502:2507] CHIP:DMG: StatusIB = - [1658323877.664477][2502:2507] CHIP:DMG: { - [1658323877.664541][2502:2507] CHIP:DMG: status = 0x00 (SUCCESS), - [1658323877.664606][2502:2507] CHIP:DMG: }, - [1658323877.664670][2502:2507] CHIP:DMG: - [1658323877.664727][2502:2507] CHIP:DMG: }, - [1658323877.664800][2502:2507] CHIP:DMG: - [1658323877.664850][2502:2507] CHIP:DMG: AttributeStatusIB = - [1658323877.664910][2502:2507] CHIP:DMG: { - [1658323877.664967][2502:2507] CHIP:DMG: AttributePathIB = - [1658323877.665031][2502:2507] CHIP:DMG: { - [1658323877.665096][2502:2507] CHIP:DMG: Endpoint = 0x0, - [1658323877.665170][2502:2507] CHIP:DMG: Cluster = 0x1f, - [1658323877.665240][2502:2507] CHIP:DMG: Attribute = 0x0000_0000, - [1658323877.665313][2502:2507] CHIP:DMG: ListIndex = Null, - [1658323877.665384][2502:2507] CHIP:DMG: } - [1658323877.665453][2502:2507] CHIP:DMG: - [1658323877.665515][2502:2507] CHIP:DMG: StatusIB = - [1658323877.665577][2502:2507] CHIP:DMG: { - [1658323877.665643][2502:2507] CHIP:DMG: status = 0x00 (SUCCESS), - [1658323877.665708][2502:2507] CHIP:DMG: }, - [1658323877.665771][2502:2507] CHIP:DMG: - [1658323877.665828][2502:2507] CHIP:DMG: }, - [1658323877.665889][2502:2507] CHIP:DMG: - [1658323877.665938][2502:2507] CHIP:DMG: ], - [1658323877.666020][2502:2507] CHIP:DMG: - [1658323877.666070][2502:2507] CHIP:DMG: InteractionModelRevision = 1 - [1658323877.666119][2502:2507] CHIP:DMG: } - [1658323877.666433][2502:2507] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658323877.666532][2502:2507] CHIP:EM: Sending Standalone Ack for MessageCounter:122439856 on exchange 57514i - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "3", + Subjects: [111, 222, 333, 444], + Targets: + [{ Cluster: 11, Endpoint: 22, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: [555, 666, 777, 888], + Targets: + [{ Cluster: 55, Endpoint: 66, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + ] - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + - label: + "Step 5:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 3 elements - InteractionModelRevision = 1 - [1658229676.712083][4872:4878] CHIP:DMG: } - [1658229676.712624][4872:4878] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 1307037423 - [1658229676.712736][4872:4878] CHIP:TOO: ACL: 3 entries - [1658229676.712809][4872:4878] CHIP:TOO: [1]: { - [1658229676.712839][4872:4878] CHIP:TOO: Privilege: 5 - [1658229676.712864][4872:4878] CHIP:TOO: AuthMode: 2 - [1658229676.712893][4872:4878] CHIP:TOO: Subjects: 1 entries - [1658229676.712923][4872:4878] CHIP:TOO: [1]: 112233 - [1658229676.712949][4872:4878] CHIP:TOO: Targets: null - [1658229676.712972][4872:4878] CHIP:TOO: FabricIndex: 1 - [1658229676.712995][4872:4878] CHIP:TOO: } - [1658229676.713033][4872:4878] CHIP:TOO: [2]: { - [1658229676.713058][4872:4878] CHIP:TOO: Privilege: 1 - [1658229676.713082][4872:4878] CHIP:TOO: AuthMode: 3 - [1658229676.713109][4872:4878] CHIP:TOO: Subjects: 4 entries - [1658229676.713136][4872:4878] CHIP:TOO: [1]: 111 - [1658229676.713161][4872:4878] CHIP:TOO: [2]: 222 - [1658229676.713187][4872:4878] CHIP:TOO: [3]: 333 - [1658229676.713212][4872:4878] CHIP:TOO: [4]: 444 - [1658229676.713241][4872:4878] CHIP:TOO: Targets: 1 entries - [1658229676.713295][4872:4878] CHIP:TOO: [1]: { - [1658229676.713322][4872:4878] CHIP:TOO: Cluster: 11 - [1658229676.713347][4872:4878] CHIP:TOO: Endpoint: 22 - [1658229676.713371][4872:4878] CHIP:TOO: DeviceType: null - [1658229676.713429][4872:4878] CHIP:TOO: } - [1658229676.713457][4872:4878] CHIP:TOO: FabricIndex: 1 - [1658229676.713480][4872:4878] CHIP:TOO: } - [1658229676.713517][4872:4878] CHIP:TOO: [3]: { - [1658229676.713543][4872:4878] CHIP:TOO: Privilege: 3 - [1658229676.713566][4872:4878] CHIP:TOO: AuthMode: 3 - [1658229676.713593][4872:4878] CHIP:TOO: Subjects: 4 entries - [1658229676.713620][4872:4878] CHIP:TOO: [1]: 555 - [1658229676.713645][4872:4878] CHIP:TOO: [2]: 666 - [1658229676.713670][4872:4878] CHIP:TOO: [3]: 777 - [1658229676.713695][4872:4878] CHIP:TOO: [4]: 888 - [1658229676.713724][4872:4878] CHIP:TOO: Targets: 1 entries - [1658229676.713756][4872:4878] CHIP:TOO: [1]: { - [1658229676.713780][4872:4878] CHIP:TOO: Cluster: 55 - [1658229676.713804][4872:4878] CHIP:TOO: Endpoint: 66 - [1658229676.713826][4872:4878] CHIP:TOO: DeviceType: null - [1658229676.713849][4872:4878] CHIP:TOO: } - [1658229676.713873][4872:4878] CHIP:TOO: FabricIndex: 1 - [1658229676.713896][4872:4878] CHIP:TOO: } - [1658229676.714004][4872:4878] CHIP:EM: Sending Standalone Ack for MessageCounter:20458493 on exchange 31143i - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "3", + Subjects: [111, 222, 333, 444], + Targets: + [{ Cluster: 11, Endpoint: 22, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: [555, 666, 777, 888], + Targets: + [{ Cluster: 55, Endpoint: 66, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 3 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Manage (4) - AuthMode field: Group (3) Subjects field: [444, 333, 222, 111] Targets - field: [{Cluster: 44}, {Endpoint: 33}] 3.struct Privilege field: - Administer (5) AuthMode field: CASE (2) Subjects field: [888, 777, - 666, 555] Targets field: [{Cluster: 88}, {Endpoint: 77}]" + "Step 6:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, + value is list of AccessControlEntryStruct containing 3 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Manage (4) AuthMode field: Group (3) Subjects field: [444, 333, 222, + 111] Targets field: [{Cluster: 44}, {Endpoint: 33}] 3.struct Privilege + field: Administer (5) AuthMode field: CASE (2) Subjects field: [888, + 777, 666, 555] Targets field: [{Cluster: 88}, {Endpoint: 77}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 4, "authMode": 3, "subjects": [444,333,222,111], "targets": [{"cluster":44 , "endpoint":33, "deviceType":null}]},{ "privilege":5, "authMode":2, "subjects": [888,777,666,555], "targets": [{"cluster": 88, "endpoint": 77, "deviceType":null}]}]' 1 0 - - On TH1(Chiptool) , Verify that the status is success when writing the AccessControl cluster ACL attribute with 3 elements - 1658226959.554674][4736:4741] CHIP:DMG: AttributeStatusIBs = - [1658226959.554706][4736:4741] CHIP:DMG: [ - [1658226959.554732][4736:4741] CHIP:DMG: AttributeStatusIB = - [1658226959.554761][4736:4741] CHIP:DMG: { - [1658226959.554787][4736:4741] CHIP:DMG: AttributePathIB = - [1658226959.554822][4736:4741] CHIP:DMG: { - [1658226959.554855][4736:4741] CHIP:DMG: Endpoint = 0x0, - [1658226959.554887][4736:4741] CHIP:DMG: Cluster = 0x1f, - [1658226959.554916][4736:4741] CHIP:DMG: Attribute = 0x0000_0000, - [1658226959.554941][4736:4741] CHIP:DMG: } - [1658226959.554982][4736:4741] CHIP:DMG: - [1658226959.555013][4736:4741] CHIP:DMG: StatusIB = - [1658226959.555049][4736:4741] CHIP:DMG: { - [1658226959.555085][4736:4741] CHIP:DMG: status = 0x00 (SUCCESS), - [1658226959.555121][4736:4741] CHIP:DMG: }, - [1658226959.555152][4736:4741] CHIP:DMG: - [1658226959.555181][4736:4741] CHIP:DMG: }, - [1658226959.555216][4736:4741] CHIP:DMG: - [1658226959.555241][4736:4741] CHIP:DMG: AttributeStatusIB = - [1658226959.555269][4736:4741] CHIP:DMG: { - [1658226959.555296][4736:4741] CHIP:DMG: AttributePathIB = - [1658226959.555329][4736:4741] CHIP:DMG: { - [1658226959.555360][4736:4741] CHIP:DMG: Endpoint = 0x0, - [1658226959.555392][4736:4741] CHIP:DMG: Cluster = 0x1f, - [1658226959.555424][4736:4741] CHIP:DMG: Attribute = 0x0000_0000, - [1658226959.555455][4736:4741] CHIP:DMG: ListIndex = Null, - [1658226959.555487][4736:4741] CHIP:DMG: } - [1658226959.555521][4736:4741] CHIP:DMG: - [1658226959.555552][4736:4741] CHIP:DMG: StatusIB = - [1658226959.555582][4736:4741] CHIP:DMG: { - [1658226959.555614][4736:4741] CHIP:DMG: status = 0x00 (SUCCESS), - [1658226959.555646][4736:4741] CHIP:DMG: }, - [1658226959.555678][4736:4741] CHIP:DMG: - [1658226959.555704][4736:4741] CHIP:DMG: }, - [1658226959.555740][4736:4741] CHIP:DMG: - [1658226959.555765][4736:4741] CHIP:DMG: AttributeStatusIB = - [1658226959.555793][4736:4741] CHIP:DMG: { - [1658226959.555819][4736:4741] CHIP:DMG: AttributePathIB = - [1658226959.555850][4736:4741] CHIP:DMG: { - [1658226959.555881][4736:4741] CHIP:DMG: Endpoint = 0x0, - [1658226959.555912][4736:4741] CHIP:DMG: Cluster = 0x1f, - [1658226959.555947][4736:4741] CHIP:DMG: Attribute = 0x0000_0000, - [1658226959.555983][4736:4741] CHIP:DMG: ListIndex = Null, - [1658226959.556017][4736:4741] CHIP:DMG: } - [1658226959.556053][4736:4741] CHIP:DMG: - [1658226959.556083][4736:4741] CHIP:DMG: StatusIB = - [1658226959.556114][4736:4741] CHIP:DMG: { - [1658226959.556146][4736:4741] CHIP:DMG: status = 0x00 (SUCCESS), - [1658226959.556177][4736:4741] CHIP:DMG: }, - [1658226959.556209][4736:4741] CHIP:DMG: - [1658226959.556235][4736:4741] CHIP:DMG: }, - [1658226959.556271][4736:4741] CHIP:DMG: - [1658226959.556296][4736:4741] CHIP:DMG: AttributeStatusIB = - [1658226959.556323][4736:4741] CHIP:DMG: { - [1658226959.556350][4736:4741] CHIP:DMG: AttributePathIB = - [1658226959.556380][4736:4741] CHIP:DMG: { - [1658226959.556412][4736:4741] CHIP:DMG: Endpoint = 0x0, - [1658226959.556445][4736:4741] CHIP:DMG: Cluster = 0x1f, - [1658226959.556479][4736:4741] CHIP:DMG: Attribute = 0x0000_0000, - [1658226959.556547][4736:4741] CHIP:DMG: ListIndex = Null, - [1658226959.556583][4736:4741] CHIP:DMG: } - [1658226959.556620][4736:4741] CHIP:DMG: - [1658226959.556651][4736:4741] CHIP:DMG: StatusIB = - [1658226959.556679][4736:4741] CHIP:DMG: { - [1658226959.556711][4736:4741] CHIP:DMG: status = 0x00 (SUCCESS), - [1658226959.556743][4736:4741] CHIP:DMG: }, - [1658226959.556774][4736:4741] CHIP:DMG: - [1658226959.556800][4736:4741] CHIP:DMG: }, - [1658226959.556830][4736:4741] CHIP:DMG: - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "4", + AuthMode: "3", + Subjects: [444, 333, 222, 111], + Targets: + [{ Cluster: 44, Endpoint: 33, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "5", + AuthMode: "2", + Subjects: [888, 777, 666, 555], + Targets: + [{ Cluster: 88, Endpoint: 77, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + ] - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + - label: + "Step 7:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool), Verify that the AccessControlEntryStruct contains 3 elements - 9800.959293][4892:4897] CHIP:DMG: - [1658229800.959325][4892:4897] CHIP:DMG: ], - [1658229800.959399][4892:4897] CHIP:DMG: - [1658229800.959433][4892:4897] CHIP:DMG: SuppressResponse = true, - [1658229800.959466][4892:4897] CHIP:DMG: InteractionModelRevision = 1 - [1658229800.959497][4892:4897] CHIP:DMG: } - [1658229800.960148][4892:4897] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 1307037427 - [1658229800.960272][4892:4897] CHIP:TOO: ACL: 3 entries - [1658229800.960360][4892:4897] CHIP:TOO: [1]: { - [1658229800.960397][4892:4897] CHIP:TOO: Privilege: 5 - [1658229800.960429][4892:4897] CHIP:TOO: AuthMode: 2 - [1658229800.960465][4892:4897] CHIP:TOO: Subjects: 1 entries - [1658229800.960526][4892:4897] CHIP:TOO: [1]: 112233 - [1658229800.960564][4892:4897] CHIP:TOO: Targets: null - [1658229800.960595][4892:4897] CHIP:TOO: FabricIndex: 1 - [1658229800.960625][4892:4897] CHIP:TOO: } - [1658229800.960673][4892:4897] CHIP:TOO: [2]: { - [1658229800.960706][4892:4897] CHIP:TOO: Privilege: 4 - [1658229800.960736][4892:4897] CHIP:TOO: AuthMode: 3 - [1658229800.960771][4892:4897] CHIP:TOO: Subjects: 4 entries - [1658229800.960806][4892:4897] CHIP:TOO: [1]: 444 - [1658229800.960840][4892:4897] CHIP:TOO: [2]: 333 - [1658229800.960874][4892:4897] CHIP:TOO: [3]: 222 - [1658229800.960907][4892:4897] CHIP:TOO: [4]: 111 - [1658229800.960944][4892:4897] CHIP:TOO: Targets: 1 entries - [1658229800.961008][4892:4897] CHIP:TOO: [1]: { - [1658229800.961042][4892:4897] CHIP:TOO: Cluster: 44 - [1658229800.961074][4892:4897] CHIP:TOO: Endpoint: 33 - [1658229800.961105][4892:4897] CHIP:TOO: DeviceType: null - [1658229800.961135][4892:4897] CHIP:TOO: } - [1658229800.961167][4892:4897] CHIP:TOO: FabricIndex: 1 - [1658229800.961197][4892:4897] CHIP:TOO: } - [1658229800.961245][4892:4897] CHIP:TOO: [3]: { - [1658229800.961277][4892:4897] CHIP:TOO: Privilege: 5 - [1658229800.961308][4892:4897] CHIP:TOO: AuthMode: 2 - [1658229800.961343][4892:4897] CHIP:TOO: Subjects: 4 entries - [1658229800.961378][4892:4897] CHIP:TOO: [1]: 888 - [1658229800.961411][4892:4897] CHIP:TOO: [2]: 777 - [1658229800.961445][4892:4897] CHIP:TOO: [3]: 666 - [1658229800.961479][4892:4897] CHIP:TOO: [4]: 555 - [1658229800.961516][4892:4897] CHIP:TOO: Targets: 1 entries - [1658229800.961556][4892:4897] CHIP:TOO: [1]: { - [1658229800.961589][4892:4897] CHIP:TOO: Cluster: 88 - [1658229800.961620][4892:4897] CHIP:TOO: Endpoint: 77 - [1658229800.961650][4892:4897] CHIP:TOO: DeviceType: null - [1658229800.961679][4892:4897] CHIP:TOO: } - [1658229800.961711][4892:4897] CHIP:TOO: FabricIndex: 1 - [1658229800.961741][4892:4897] CHIP:TOO: } - [1658229800.961850][4892:4897] CHIP:EM: Sending Standalone Ack for MessageCounter:261677764 on exchange 51705i - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "4", + AuthMode: "3", + Subjects: [444, 333, 222, 111], + Targets: + [{ Cluster: 44, Endpoint: 33, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "5", + AuthMode: "2", + Subjects: [888, 777, 666, 555], + Targets: + [{ Cluster: 88, Endpoint: 77, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 3 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: View (1) - AuthMode field: CASE (2) Subjects field: [111, 222, 333, 444] Targets - field: [{Cluster: 11, Endpoint: 22}, {Cluster: 33, DeviceType: 44}] - 3.struct Privilege field: Operate (3) AuthMode field: Group (3) + "Step 8:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, + value is list of AccessControlEntryStruct containing 3 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + View (1) AuthMode field: CASE (2) Subjects field: [111, 222, 333, 444] + Targets field: [{Cluster: 11, Endpoint: 22}, {Cluster: 33, DeviceType: + 44}] 3.struct Privilege field: Operate (3) AuthMode field: Group (3) Subjects field: [555, 666, 777, 888] Targets field: [{Cluster: 55, Endpoint: 66}, {Cluster: 77, DeviceType: 88}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111,222,333,444], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]' 1 0 - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with 3 elements - 1657276276.708941][2297:2302] CHIP:DMG: WriteClient moving to [ResponseRe] - [1657276276.709021][2297:2302] CHIP:DMG: WriteResponseMessage = - [1657276276.709058][2297:2302] CHIP:DMG: { - [1657276276.709090][2297:2302] CHIP:DMG: AttributeStatusIBs = - [1657276276.709135][2297:2302] CHIP:DMG: [ - [1657276276.709171][2297:2302] CHIP:DMG: AttributeStatusIB = - [1657276276.709216][2297:2302] CHIP:DMG: { - [1657276276.709257][2297:2302] CHIP:DMG: AttributePathIB = - [1657276276.709309][2297:2302] CHIP:DMG: { - [1657276276.709356][2297:2302] CHIP:DMG: Endpoint = 0x0, - [1657276276.709405][2297:2302] CHIP:DMG: Cluster = 0x1f, - [1657276276.709455][2297:2302] CHIP:DMG: Attribute = 0x0000_0000, - [1657276276.709505][2297:2302] CHIP:DMG: } - [1657276276.709555][2297:2302] CHIP:DMG: - [1657276276.709599][2297:2302] CHIP:DMG: StatusIB = - [1657276276.709645][2297:2302] CHIP:DMG: { - [1657276276.709691][2297:2302] CHIP:DMG: status = 0x00 (SUCCESS), - [1657276276.709740][2297:2302] CHIP:DMG: }, - [1657276276.709786][2297:2302] CHIP:DMG: - [1657276276.709826][2297:2302] CHIP:DMG: }, - [1657276276.709880][2297:2302] CHIP:DMG: - [1657276276.709916][2297:2302] CHIP:DMG: AttributeStatusIB = - [1657276276.709954][2297:2302] CHIP:DMG: { - [1657276276.709991][2297:2302] CHIP:DMG: AttributePathIB = - [1657276276.710035][2297:2302] CHIP:DMG: { - [1657276276.710151][2297:2302] CHIP:DMG: Endpoint = 0x0, - [1657276276.710232][2297:2302] CHIP:DMG: Cluster = 0x1f, - [1657276276.710316][2297:2302] CHIP:DMG: Attribute = 0x0000_0000, - [1657276276.710401][2297:2302] CHIP:DMG: ListIndex = Null, - [1657276276.710559][2297:2302] CHIP:DMG: } - [1657276276.710648][2297:2302] CHIP:DMG: - [1657276276.710723][2297:2302] CHIP:DMG: StatusIB = - [1657276276.710798][2297:2302] CHIP:DMG: { - [1657276276.710873][2297:2302] CHIP:DMG: status = 0x00 (SUCCESS), - [1657276276.710948][2297:2302] CHIP:DMG: }, - [1657276276.711025][2297:2302] CHIP:DMG: - [1657276276.711091][2297:2302] CHIP:DMG: }, - [1657276276.711180][2297:2302] CHIP:DMG: - [1657276276.711239][2297:2302] CHIP:DMG: AttributeStatusIB = - [1657276276.711303][2297:2302] CHIP:DMG: { - [1657276276.711365][2297:2302] CHIP:DMG: AttributePathIB = - [1657276276.711439][2297:2302] CHIP:DMG: { - [1657276276.711513][2297:2302] CHIP:DMG: Endpoint = 0x0, - [1657276276.711595][2297:2302] CHIP:DMG: Cluster = 0x1f, - [1657276276.711676][2297:2302] CHIP:DMG: Attribute = 0x0000_0000, - [1657276276.711763][2297:2302] CHIP:DMG: ListIndex = Null, - [1657276276.711837][2297:2302] CHIP:DMG: } - [1657276276.711919][2297:2302] CHIP:DMG: - [1657276276.711992][2297:2302] CHIP:DMG: StatusIB = - [1657276276.712064][2297:2302] CHIP:DMG: { - [1657276276.712141][2297:2302] CHIP:DMG: status = 0x00 (SUCCESS), - [1657276276.712218][2297:2302] CHIP:DMG: }, - [1657276276.712292][2297:2302] CHIP:DMG: - [1657276276.712359][2297:2302] CHIP:DMG: }, - [1657276276.712448][2297:2302] CHIP:DMG: - [1657276276.712512][2297:2302] CHIP:DMG: AttributeStatusIB = - [1657276276.712580][2297:2302] CHIP:DMG: { - [1657276276.712646][2297:2302] CHIP:DMG: AttributePathIB = - [1657276276.712720][2297:2302] CHIP:DMG: { - [1657276276.712794][2297:2302] CHIP:DMG: Endpoint = 0x0, - [1657276276.712881][2297:2302] CHIP:DMG: Cluster = 0x1f, - [1657276276.712963][2297:2302] CHIP:DMG: Attribute = 0x0000_0000, - [1657276276.713043][2297:2302] CHIP:DMG: ListIndex = Null, - [1657276276.713119][2297:2302] CHIP:DMG: } - [1657276276.713203][2297:2302] CHIP:DMG: - [1657276276.713275][2297:2302] CHIP:DMG: StatusIB = - [1657276276.713348][2297:2302] CHIP:DMG: { - [1657276276.713423][2297:2302] CHIP:DMG: status = 0x00 (SUCCESS), - [1657276276.713504][2297:2302] CHIP:DMG: }, - [1657276276.713578][2297:2302] CHIP:DMG: - [1657276276.713644][2297:2302] CHIP:DMG: }, - [1657276276.713716][2297:2302] CHIP:DMG: - [1657276276.713773][2297:2302] CHIP:DMG: ], - [1657276276.713869][2297:2302] CHIP:DMG: - [1657276276.713927][2297:2302] CHIP:DMG: InteractionModelRevision = 1 - [1657276276.713983][2297:2302] CHIP:DMG: } - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "2", + Subjects: [111, 222, 333, 444], + Targets: + [ + { Cluster: 11, Endpoint: 22, DeviceType: null }, + { Cluster: 33, Endpoint: null, DeviceType: 44 }, + ], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: [555, 666, 777, 888], + Targets: + [ + { Cluster: 55, Endpoint: 66, DeviceType: null }, + { Cluster: 77, Endpoint: null, DeviceType: 88 }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 9:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool), Verify that the AccessControlEntryStruct contains 3 elements - - - [1657278053.764924][2231:2236] CHIP:DMG: SuppressResponse = true, - [1657278053.764958][2231:2236] CHIP:DMG: InteractionModelRevision = 1 - [1657278053.764989][2231:2236] CHIP:DMG: } - [1657278053.765924][2231:2236] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 48629793 - [1657278053.766111][2231:2236] CHIP:TOO: ACL: 3 entries - [1657278053.766188][2231:2236] CHIP:TOO: [1]: { - [1657278053.766239][2231:2236] CHIP:TOO: Privilege: 5 - [1657278053.766301][2231:2236] CHIP:TOO: AuthMode: 2 - [1657278053.766339][2231:2236] CHIP:TOO: Subjects: 1 entries - [1657278053.766378][2231:2236] CHIP:TOO: [1]: 112233 - [1657278053.766413][2231:2236] CHIP:TOO: Targets: null - [1657278053.766444][2231:2236] CHIP:TOO: FabricIndex: 1 - [1657278053.766473][2231:2236] CHIP:TOO: } - [1657278053.766525][2231:2236] CHIP:TOO: [2]: { - [1657278053.766557][2231:2236] CHIP:TOO: Privilege: 1 - [1657278053.766587][2231:2236] CHIP:TOO: AuthMode: 2 - [1657278053.766622][2231:2236] CHIP:TOO: Subjects: 4 entries - [1657278053.766657][2231:2236] CHIP:TOO: [1]: 111 - [1657278053.766690][2231:2236] CHIP:TOO: [2]: 222 - [1657278053.766723][2231:2236] CHIP:TOO: [3]: 333 - [1657278053.766756][2231:2236] CHIP:TOO: [4]: 444 - [1657278053.766797][2231:2236] CHIP:TOO: Targets: 2 entries - [1657278053.766894][2231:2236] CHIP:TOO: [1]: { - [1657278053.766929][2231:2236] CHIP:TOO: Cluster: 11 - [1657278053.766960][2231:2236] CHIP:TOO: Endpoint: 22 - [1657278053.766991][2231:2236] CHIP:TOO: DeviceType: null - [1657278053.767020][2231:2236] CHIP:TOO: } - [1657278053.767058][2231:2236] CHIP:TOO: [2]: { - [1657278053.767090][2231:2236] CHIP:TOO: Cluster: 33 - [1657278053.767120][2231:2236] CHIP:TOO: Endpoint: null - [1657278053.767150][2231:2236] CHIP:TOO: DeviceType: 44 - [1657278053.767180][2231:2236] CHIP:TOO: } - [1657278053.767212][2231:2236] CHIP:TOO: FabricIndex: 1 - [1657278053.767242][2231:2236] CHIP:TOO: } - [1657278053.767291][2231:2236] CHIP:TOO: [3]: { - [1657278053.767342][2231:2236] CHIP:TOO: Privilege: 3 - [1657278053.767405][2231:2236] CHIP:TOO: AuthMode: 3 - [1657278053.767441][2231:2236] CHIP:TOO: Subjects: 4 entries - [1657278053.767476][2231:2236] CHIP:TOO: [1]: 555 - [1657278053.767510][2231:2236] CHIP:TOO: [2]: 666 - [1657278053.767542][2231:2236] CHIP:TOO: [3]: 777 - [1657278053.767575][2231:2236] CHIP:TOO: [4]: 888 - [1657278053.767616][2231:2236] CHIP:TOO: Targets: 2 entries - [1657278053.767657][2231:2236] CHIP:TOO: [1]: { - [1657278053.767689][2231:2236] CHIP:TOO: Cluster: 55 - [1657278053.767718][2231:2236] CHIP:TOO: Endpoint: 66 - [1657278053.767747][2231:2236] CHIP:TOO: DeviceType: null - [1657278053.767776][2231:2236] CHIP:TOO: } - [1657278053.767815][2231:2236] CHIP:TOO: [2]: { - [1657278053.767847][2231:2236] CHIP:TOO: Cluster: 77 - [1657278053.767877][2231:2236] CHIP:TOO: Endpoint: null - [1657278053.767907][2231:2236] CHIP:TOO: DeviceType: 88 - [1657278053.767937][2231:2236] CHIP:TOO: } - [1657278053.767976][2231:2236] CHIP:TOO: FabricIndex: 1 - [1657278053.768006][2231:2236] CHIP:TOO: } - [1657278053.768136][2231:2236] CHIP:EM: Sending Standalone Ack for MessageCounter:257683535 on exchange 36353i - [1657278053.768226][2231:2236] CHIP:IN: Prepared secure message 0xffffb14f6958 to 0x0000000000000001 (1) of type 0x10 and protocolId (0, 0) on exchange 36353i with MessageCounter:185472810. - [1657278053.768279][2231:2236] CHIP:IN: Sending encryp - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "2", + Subjects: [111, 222, 333, 444], + Targets: + [ + { Cluster: 11, Endpoint: 22, DeviceType: null }, + { Cluster: 33, Endpoint: null, DeviceType: 44 }, + ], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: [555, 666, 777, 888], + Targets: + [ + { Cluster: 55, Endpoint: 66, DeviceType: null }, + { Cluster: 77, Endpoint: null, DeviceType: 88 }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 3 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: View (1) - AuthMode field: CASE (2) Subjects field: null Targets field: + "Step 10:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 3 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + View (1) AuthMode field: CASE (2) Subjects field: null Targets field: [{Cluster: 11, Endpoint: 22}, {Cluster: 33, DeviceType: 44}] 3.struct Privilege field: Operate (3) AuthMode field: Group (3) Subjects field: null Targets field: [{Cluster: 55, Endpoint: 66}, {Cluster: 77, DeviceType: 88}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": null, "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": null, "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]' 1 0 - On TH1(Chiptool) , Verify that the status is success when writing the AccessControl cluster ACL attribute with 3 elements - - [1657541707.114348][3004:3009] CHIP:DMG: { - [1657541707.114393][3004:3009] CHIP:DMG: AttributeStatusIBs = - [1657541707.114467][3004:3009] CHIP:DMG: [ - [1657541707.114526][3004:3009] CHIP:DMG: AttributeStatusIB = - [1657541707.114591][3004:3009] CHIP:DMG: { - [1657541707.114653][3004:3009] CHIP:DMG: AttributePathIB = - [1657541707.114729][3004:3009] CHIP:DMG: { - [1657541707.114821][3004:3009] CHIP:DMG: Endpoint = 0x0, - [1657541707.114911][3004:3009] CHIP:DMG: Cluster = 0x1f, - [1657541707.114989][3004:3009] CHIP:DMG: Attribute = 0x0000_0000, - [1657541707.115066][3004:3009] CHIP:DMG: } - [1657541707.115150][3004:3009] CHIP:DMG: - [1657541707.115221][3004:3009] CHIP:DMG: StatusIB = - [1657541707.115297][3004:3009] CHIP:DMG: { - [1657541707.115371][3004:3009] CHIP:DMG: status = 0x00 (SUCCESS), - [1657541707.115447][3004:3009] CHIP:DMG: }, - [1657541707.115521][3004:3009] CHIP:DMG: - [1657541707.115587][3004:3009] CHIP:DMG: }, - [1657541707.115680][3004:3009] CHIP:DMG: - [1657541707.115739][3004:3009] CHIP:DMG: AttributeStatusIB = - [1657541707.115807][3004:3009] CHIP:DMG: { - [1657541707.115868][3004:3009] CHIP:DMG: AttributePathIB = - [1657541707.115939][3004:3009] CHIP:DMG: { - [1657541707.116024][3004:3009] CHIP:DMG: Endpoint = 0x0, - [1657541707.116104][3004:3009] CHIP:DMG: Cluster = 0x1f, - [1657541707.116192][3004:3009] CHIP:DMG: Attribute = 0x0000_0000, - [1657541707.116270][3004:3009] CHIP:DMG: ListIndex = Null, - [1657541707.116352][3004:3009] CHIP:DMG: } - [1657541707.116433][3004:3009] CHIP:DMG: - [1657541707.116513][3004:3009] CHIP:DMG: StatusIB = - [1657541707.116585][3004:3009] CHIP:DMG: { - [1657541707.116662][3004:3009] CHIP:DMG: status = 0x00 (SUCCESS), - [1657541707.116737][3004:3009] CHIP:DMG: }, - [1657541707.116809][3004:3009] CHIP:DMG: - [1657541707.116869][3004:3009] CHIP:DMG: }, - [1657541707.116998][3004:3009] CHIP:DMG: - [1657541707.117058][3004:3009] CHIP:DMG: AttributeStatusIB = - [1657541707.117123][3004:3009] CHIP:DMG: { - [1657541707.117184][3004:3009] CHIP:DMG: AttributePathIB = - [1657541707.117256][3004:3009] CHIP:DMG: { - [1657541707.117330][3004:3009] CHIP:DMG: Endpoint = 0x0, - [1657541707.117409][3004:3009] CHIP:DMG: Cluster = 0x1f, - [1657541707.117489][3004:3009] CHIP:DMG: Attribute = 0x0000_0000, - [1657541707.117566][3004:3009] CHIP:DMG: ListIndex = Null, - [1657541707.117648][3004:3009] CHIP:DMG: } - [1657541707.117729][3004:3009] CHIP:DMG: - [1657541707.117799][3004:3009] CHIP:DMG: StatusIB = - [1657541707.117873][3004:3009] CHIP:DMG: { - [1657541707.117946][3004:3009] CHIP:DMG: status = 0x00 (SUCCESS), - [1657541707.118019][3004:3009] CHIP:DMG: }, - [1657541707.118092][3004:3009] CHIP:DMG: - [1657541707.118157][3004:3009] CHIP:DMG: }, - [1657541707.118240][3004:3009] CHIP:DMG: - [1657541707.118298][3004:3009] CHIP:DMG: AttributeStatusIB = - [1657541707.118362][3004:3009] CHIP:DMG: { - [1657541707.118423][3004:3009] CHIP:DMG: AttributePathIB = - [1657541707.118494][3004:3009] CHIP:DMG: { - [1657541707.118567][3004:3009] CHIP:DMG: Endpoint = 0x0, - [1657541707.118646][3004:3009] CHIP:DMG: Cluster = 0x1f, - [1657541707.118723][3004:3009] CHIP:DMG: Attribute = 0x0000_0000, - [1657541707.118807][3004:3009] CHIP:DMG: ListIndex = Null, - [1657541707.118882][3004:3009] CHIP:DMG: } - [1657541707.118963][3004:3009] CHIP:DMG: - [1657541707.119033][3004:3009] CHIP:DMG: StatusIB = - [1657541707.119108][3004:3009] CHIP:DMG: { - [1657541707.119182][3004:3009] CHIP:DMG: status = 0x00 (SUCCESS), - [1657541707.119255][3004:3009] CHIP:DMG: }, - [1657541707.119330][3004:3009] CHIP:DMG: - [1657541707.119391][3004:3009] CHIP:DMG: }, - [1657541707.119462][3004:3009] CHIP:DMG: - [1657541707.119518][3004:3009] CHIP:DMG: ], - [1657541707.119614][3004:3009] CHIP:DMG: - [1657541707.119672][3004:3009] CHIP:DMG: InteractionModelRevision = 1 - [1657541707.119729][3004:3009] CHIP:DMG: } - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "2", + Subjects: null, + Targets: + [ + { Cluster: 11, Endpoint: 22, DeviceType: null }, + { Cluster: 33, Endpoint: null, DeviceType: 44 }, + ], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: null, + Targets: + [ + { Cluster: 55, Endpoint: 66, DeviceType: null }, + { Cluster: 77, Endpoint: null, DeviceType: 88 }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 11:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 3 elements - - [1657278352.938811][2258:2263] CHIP:DMG: - [1657278352.938840][2258:2263] CHIP:DMG: }, - [1657278352.938877][2258:2263] CHIP:DMG: - [1657278352.938902][2258:2263] CHIP:DMG: ], - [1657278352.938961][2258:2263] CHIP:DMG: - [1657278352.938987][2258:2263] CHIP:DMG: SuppressResponse = true, - [1657278352.939013][2258:2263] CHIP:DMG: InteractionModelRevision = 1 - [1657278352.939038][2258:2263] CHIP:DMG: } - [1657278352.939574][2258:2263] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 48629797 - [1657278352.939666][2258:2263] CHIP:TOO: ACL: 3 entries - [1657278352.939725][2258:2263] CHIP:TOO: [1]: { - [1657278352.939765][2258:2263] CHIP:TOO: Privilege: 5 - [1657278352.939790][2258:2263] CHIP:TOO: AuthMode: 2 - [1657278352.939818][2258:2263] CHIP:TOO: Subjects: 1 entries - [1657278352.939849][2258:2263] CHIP:TOO: [1]: 112233 - [1657278352.939876][2258:2263] CHIP:TOO: Targets: null - [1657278352.939900][2258:2263] CHIP:TOO: FabricIndex: 1 - [1657278352.939924][2258:2263] CHIP:TOO: } - [1657278352.939961][2258:2263] CHIP:TOO: [2]: { - [1657278352.939986][2258:2263] CHIP:TOO: Privilege: 1 - [1657278352.940009][2258:2263] CHIP:TOO: AuthMode: 2 - [1657278352.940033][2258:2263] CHIP:TOO: Subjects: null - [1657278352.940063][2258:2263] CHIP:TOO: Targets: 2 entries - [1657278352.940115][2258:2263] CHIP:TOO: [1]: { - [1657278352.940142][2258:2263] CHIP:TOO: Cluster: 11 - [1657278352.940166][2258:2263] CHIP:TOO: Endpoint: 22 - [1657278352.940190][2258:2263] CHIP:TOO: DeviceType: null - [1657278352.940213][2258:2263] CHIP:TOO: } - [1657278352.940243][2258:2263] CHIP:TOO: [2]: { - [1657278352.940268][2258:2263] CHIP:TOO: Cluster: 33 - [1657278352.940292][2258:2263] CHIP:TOO: Endpoint: null - [1657278352.940315][2258:2263] CHIP:TOO: DeviceType: 44 - [1657278352.940338][2258:2263] CHIP:TOO: } - [1657278352.940364][2258:2263] CHIP:TOO: FabricIndex: 1 - [1657278352.940387][2258:2263] CHIP:TOO: } - [1657278352.940423][2258:2263] CHIP:TOO: [3]: { - [1657278352.940447][2258:2263] CHIP:TOO: Privilege: 3 - [1657278352.940471][2258:2263] CHIP:TOO: AuthMode: 3 - [1657278352.940495][2258:2263] CHIP:TOO: Subjects: null - [1657278352.940524][2258:2263] CHIP:TOO: Targets: 2 entries - [1657278352.940557][2258:2263] CHIP:TOO: [1]: { - [1657278352.940582][2258:2263] CHIP:TOO: Cluster: 55 - [1657278352.940605][2258:2263] CHIP:TOO: Endpoint: 66 - [1657278352.940629][2258:2263] CHIP:TOO: DeviceType: null - [1657278352.940652][2258:2263] CHIP:TOO: } - [1657278352.940682][2258:2263] CHIP:TOO: [2]: { - [1657278352.940707][2258:2263] CHIP:TOO: Cluster: 77 - [1657278352.940730][2258:2263] CHIP:TOO: Endpoint: null - [1657278352.940754][2258:2263] CHIP:TOO: DeviceType: 88 - [1657278352.940778][2258:2263] CHIP:TOO: } - [1657278352.940803][2258:2263] CHIP:TOO: FabricIndex: 1 - [1657278352.940827][2258:2263] CHIP:TOO: } - [1657278352.940927][2258:2263] CHIP:EM: Sending Standalone Ack for MessageCounter:24324095 on exchange 31403i - [1657278352.941010][2258:2263] CHIP:IN: Prepared secure message 0xffff8 - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "2", + Subjects: null, + Targets: + [ + { Cluster: 11, Endpoint: 22, DeviceType: null }, + { Cluster: 33, Endpoint: null, DeviceType: 44 }, + ], + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: null, + Targets: + [ + { Cluster: 55, Endpoint: 66, DeviceType: null }, + { Cluster: 77, Endpoint: null, DeviceType: 88 }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 3 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: View (1) - AuthMode field: CASE (2) Subjects field: [111, 222, 333, 444] Targets - field: null 3.struct Privilege field: Operate (3) AuthMode field: - Group (3) Subjects field: [555, 666, 777, 888] Targets field: null" + "Step 12:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 3 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + View (1) AuthMode field: CASE (2) Subjects field: [111, 222, 333, 444] + Targets field: null 3.struct Privilege field: Operate (3) AuthMode + field: Group (3) Subjects field: [555, 666, 777, 888] Targets field: + null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 1, "authMode": 2, "subjects": [111, 222, 333, 444], "targets": null}, - { "privilege": 3, "authMode": 3, "subjects": [555, 666, 777, 888], "targets": null}]' 1 0 - On TH1(Chiptool) , Verify that the status is success when writing the AccessControl cluster ACL attribute with 3 elements with Target as Null. - - [1657542060.230268][3398:3403] CHIP:DMG: { - [1657542060.230322][3398:3403] CHIP:DMG: AttributeStatusIBs = - [1657542060.230396][3398:3403] CHIP:DMG: [ - [1657542060.230456][3398:3403] CHIP:DMG: AttributeStatusIB = - [1657542060.230522][3398:3403] CHIP:DMG: { - [1657542060.230585][3398:3403] CHIP:DMG: AttributePathIB = - [1657542060.230662][3398:3403] CHIP:DMG: { - [1657542060.230740][3398:3403] CHIP:DMG: Endpoint = 0x0, - [1657542060.230830][3398:3403] CHIP:DMG: Cluster = 0x1f, - [1657542060.230911][3398:3403] CHIP:DMG: Attribute = 0x0000_0000, - [1657542060.230985][3398:3403] CHIP:DMG: } - [1657542060.231068][3398:3403] CHIP:DMG: - [1657542060.231139][3398:3403] CHIP:DMG: StatusIB = - [1657542060.231216][3398:3403] CHIP:DMG: { - [1657542060.231291][3398:3403] CHIP:DMG: status = 0x00 (SUCCESS), - [1657542060.231367][3398:3403] CHIP:DMG: }, - [1657542060.231437][3398:3403] CHIP:DMG: - [1657542060.231498][3398:3403] CHIP:DMG: }, - [1657542060.231583][3398:3403] CHIP:DMG: - [1657542060.231642][3398:3403] CHIP:DMG: AttributeStatusIB = - [1657542060.231706][3398:3403] CHIP:DMG: { - [1657542060.231767][3398:3403] CHIP:DMG: AttributePathIB = - [1657542060.231839][3398:3403] CHIP:DMG: { - [1657542060.231914][3398:3403] CHIP:DMG: Endpoint = 0x0, - [1657542060.232002][3398:3403] CHIP:DMG: Cluster = 0x1f, - [1657542060.232081][3398:3403] CHIP:DMG: Attribute = 0x0000_0000, - [1657542060.232160][3398:3403] CHIP:DMG: ListIndex = Null, - [1657542060.232243][3398:3403] CHIP:DMG: } - [1657542060.232325][3398:3403] CHIP:DMG: - [1657542060.232395][3398:3403] CHIP:DMG: StatusIB = - [1657542060.232468][3398:3403] CHIP:DMG: { - [1657542060.232543][3398:3403] CHIP:DMG: status = 0x00 (SUCCESS), - [1657542060.232624][3398:3403] CHIP:DMG: }, - [1657542060.232695][3398:3403] CHIP:DMG: - [1657542060.232757][3398:3403] CHIP:DMG: }, - [1657542060.232843][3398:3403] CHIP:DMG: - [1657542060.232987][3398:3403] CHIP:DMG: AttributeStatusIB = - [1657542060.233057][3398:3403] CHIP:DMG: { - [1657542060.233120][3398:3403] CHIP:DMG: AttributePathIB = - [1657542060.233192][3398:3403] CHIP:DMG: { - [1657542060.233270][3398:3403] CHIP:DMG: Endpoint = 0x0, - [1657542060.233353][3398:3403] CHIP:DMG: Cluster = 0x1f, - [1657542060.233437][3398:3403] CHIP:DMG: Attribute = 0x0000_0000, - [1657542060.233515][3398:3403] CHIP:DMG: ListIndex = Null, - [1657542060.233590][3398:3403] CHIP:DMG: } - [1657542060.233673][3398:3403] CHIP:DMG: - [1657542060.233744][3398:3403] CHIP:DMG: StatusIB = - [1657542060.233818][3398:3403] CHIP:DMG: { - [1657542060.233892][3398:3403] CHIP:DMG: status = 0x00 (SUCCESS), - [1657542060.233967][3398:3403] CHIP:DMG: }, - [1657542060.234041][3398:3403] CHIP:DMG: - [1657542060.234102][3398:3403] CHIP:DMG: }, - [1657542060.234188][3398:3403] CHIP:DMG: - [1657542060.234248][3398:3403] CHIP:DMG: AttributeStatusIB = - [1657542060.234313][3398:3403] CHIP:DMG: { - [1657542060.234375][3398:3403] CHIP:DMG: AttributePathIB = - [1657542060.234448][3398:3403] CHIP:DMG: { - [1657542060.234520][3398:3403] CHIP:DMG: Endpoint = 0x0, - [1657542060.234594][3398:3403] CHIP:DMG: Cluster = 0x1f, - [1657542060.234680][3398:3403] CHIP:DMG: Attribute = 0x0000_0000, - [1657542060.234758][3398:3403] CHIP:DMG: ListIndex = Null, - [1657542060.234831][3398:3403] CHIP:DMG: } - [1657542060.234912][3398:3403] CHIP:DMG: - [1657542060.234982][3398:3403] CHIP:DMG: StatusIB = - [1657542060.235054][3398:3403] CHIP:DMG: { - [1657542060.235124][3398:3403] CHIP:DMG: status = 0x00 (SUCCESS), - [1657542060.235197][3398:3403] CHIP:DMG: }, - [1657542060.235269][3398:3403] CHIP:DMG: - [1657542060.235330][3398:3403] CHIP:DMG: }, - [1657542060.235402][3398:3403] CHIP:DMG: - [1657542060.235574][3398:3403] CHIP:DMG: ], - [1657542060.235679][3398:3403] CHIP:DMG: - [1657542060.235739][3398:3403] CHIP:DMG: InteractionModelRevision = 1 - [1657542060.235796][3398:3403] CHIP:DMG: } - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "2", + Subjects: [111, 222, 333, 444], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: [555, 666, 777, 888], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 13:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 3 elements with Target as null - [1656656511.643560][2994:2999] CHIP:DMG: - [1656656511.643593][2994:2999] CHIP:DMG: SuppressResponse = true, - [1656656511.643626][2994:2999] CHIP:DMG: InteractionModelRevision = 1 - [1656656511.643660][2994:2999] CHIP:DMG: } - [1656656511.644242][2994:2999] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 3780432418 - [1656656511.644370][2994:2999] CHIP:TOO: ACL: 3 entries - [1656656511.644443][2994:2999] CHIP:TOO: [1]: { - [1656656511.644494][2994:2999] CHIP:TOO: Privilege: 5 - [1656656511.644527][2994:2999] CHIP:TOO: AuthMode: 2 - [1656656511.644562][2994:2999] CHIP:TOO: Subjects: 1 entries - [1656656511.644601][2994:2999] CHIP:TOO: [1]: 112233 - [1656656511.644636][2994:2999] CHIP:TOO: Targets: null - [1656656511.644667][2994:2999] CHIP:TOO: FabricIndex: 1 - [1656656511.644697][2994:2999] CHIP:TOO: } - [1656656511.644741][2994:2999] CHIP:TOO: [2]: { - [1656656511.644773][2994:2999] CHIP:TOO: Privilege: 1 - [1656656511.644804][2994:2999] CHIP:TOO: AuthMode: 2 - [1656656511.644841][2994:2999] CHIP:TOO: Subjects: 4 entries - [1656656511.644875][2994:2999] CHIP:TOO: [1]: 111 - [1656656511.644909][2994:2999] CHIP:TOO: [2]: 222 - [1656656511.644943][2994:2999] CHIP:TOO: [3]: 333 - [1656656511.644976][2994:2999] CHIP:TOO: [4]: 444 - [1656656511.645008][2994:2999] CHIP:TOO: Targets: null - [1656656511.645039][2994:2999] CHIP:TOO: FabricIndex: 1 - [1656656511.645068][2994:2999] CHIP:TOO: } - [1656656511.645110][2994:2999] CHIP:TOO: [3]: { - [1656656511.645142][2994:2999] CHIP:TOO: Privilege: 3 - [1656656511.645172][2994:2999] CHIP:TOO: AuthMode: 3 - [1656656511.645208][2994:2999] CHIP:TOO: Subjects: 4 entries - [1656656511.645243][2994:2999] CHIP:TOO: [1]: 555 - [1656656511.645277][2994:2999] CHIP:TOO: [2]: 666 - [1656656511.645310][2994:2999] CHIP:TOO: [3]: 777 - [1656656511.645343][2994:2999] CHIP:TOO: [4]: 888 - [1656656511.645410][2994:2999] CHIP:TOO: Targets: null - [1656656511.645444][2994:2999] CHIP:TOO: FabricIndex: 1 - [1656656511.645473][2994:2999] CHIP:TOO: } - [1656656511.645588][2994:2999] CHIP:EM: Sending Standalone Ack for MessageCounter:40566460 on exchange 2764i - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "1", + AuthMode: "2", + Subjects: [111, 222, 333, 444], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: [555, 666, 777, 888], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: Group (3) Subjects field: null Targets field: null" + "Step 14:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: Group (3) Subjects field: null Targets + field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 3, "subjects": null, "targets": null}]' 1 0 - On TH1(Chiptool) , Verify that the status is success when writing the AccessControl cluster ACL attribute with 2 elements - - [1656507141.628453][3224:3229] CHIP:DMG: WriteResponseMessage = - [1656507141.628515][3224:3229] CHIP:DMG: { - [1656507141.628569][3224:3229] CHIP:DMG: AttributeStatusIBs = - [1656507141.628644][3224:3229] CHIP:DMG: [ - [1656507141.628705][3224:3229] CHIP:DMG: AttributeStatusIB = - [1656507141.628772][3224:3229] CHIP:DMG: { - [1656507141.628835][3224:3229] CHIP:DMG: AttributePathIB = - [1656507141.628912][3224:3229] CHIP:DMG: { - [1656507141.628990][3224:3229] CHIP:DMG: Endpoint = 0x0, - [1656507141.629075][3224:3229] CHIP:DMG: Cluster = 0x1f, - [1656507141.629156][3224:3229] CHIP:DMG: Attribute = 0x0000_0000, - [1656507141.629239][3224:3229] CHIP:DMG: } - [1656507141.629323][3224:3229] CHIP:DMG: - [1656507141.629395][3224:3229] CHIP:DMG: StatusIB = - [1656507141.629469][3224:3229] CHIP:DMG: { - [1656507141.629546][3224:3229] CHIP:DMG: status = 0x00 (SUCCESS), - [1656507141.629620][3224:3229] CHIP:DMG: }, - [1656507141.629741][3224:3229] CHIP:DMG: - [1656507141.629807][3224:3229] CHIP:DMG: }, - [1656507141.629893][3224:3229] CHIP:DMG: - [1656507141.629953][3224:3229] CHIP:DMG: AttributeStatusIB = - [1656507141.630023][3224:3229] CHIP:DMG: { - [1656507141.630085][3224:3229] CHIP:DMG: AttributePathIB = - [1656507141.630159][3224:3229] CHIP:DMG: { - [1656507141.630235][3224:3229] CHIP:DMG: Endpoint = 0x0, - [1656507141.630322][3224:3229] CHIP:DMG: Cluster = 0x1f, - [1656507141.630405][3224:3229] CHIP:DMG: Attribute = 0x0000_0000, - [1656507141.630485][3224:3229] CHIP:DMG: ListIndex = Null, - [1656507141.630560][3224:3229] CHIP:DMG: } - [1656507141.630643][3224:3229] CHIP:DMG: - [1656507141.630717][3224:3229] CHIP:DMG: StatusIB = - [1656507141.630790][3224:3229] CHIP:DMG: { - [1656507141.630863][3224:3229] CHIP:DMG: status = 0x00 (SUCCESS), - [1656507141.630939][3224:3229] CHIP:DMG: }, - [1656507141.631014][3224:3229] CHIP:DMG: - [1656507141.631080][3224:3229] CHIP:DMG: }, - [1656507141.631167][3224:3229] CHIP:DMG: - [1656507141.631227][3224:3229] CHIP:DMG: AttributeStatusIB = - [1656507141.631291][3224:3229] CHIP:DMG: { - [1656507141.631353][3224:3229] CHIP:DMG: AttributePathIB = - [1656507141.631426][3224:3229] CHIP:DMG: { - [1656507141.631501][3224:3229] CHIP:DMG: Endpoint = 0x0, - [1656507141.631584][3224:3229] CHIP:DMG: Cluster = 0x1f, - [1656507141.631664][3224:3229] CHIP:DMG: Attribute = 0x0000_0000, - [1656507141.631742][3224:3229] CHIP:DMG: ListIndex = Null, - [1656507141.631824][3224:3229] CHIP:DMG: } - [1656507141.631906][3224:3229] CHIP:DMG: - [1656507141.631978][3224:3229] CHIP:DMG: StatusIB = - [1656507141.632050][3224:3229] CHIP:DMG: { - [1656507141.632125][3224:3229] CHIP:DMG: status = 0x00 (SUCCESS), - [1656507141.632201][3224:3229] CHIP:DMG: }, - [1656507141.632275][3224:3229] CHIP:DMG: - [1656507141.632342][3224:3229] CHIP:DMG: }, - [1656507141.632413][3224:3229] CHIP:DMG: - [1656507141.632472][3224:3229] CHIP:DMG: ], - [1656507141.632560][3224:3229] CHIP:DMG: - [1656507141.632619][3224:3229] CHIP:DMG: InteractionModelRevision = 1 - [1656507141.632677][3224:3229] CHIP:DMG: } - [1656507141.632967][3224:3229] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1656507141.633086][3224:3229] CHIP:EM: Sending Standalone Ack for MessageCounter:55155306 on exchange 54804i - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 15:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 2 elements with Subject and Target as null - - [1656507318.740283][3241:3246] CHIP:DMG: ], - [1656507318.740346][3241:3246] CHIP:DMG: - [1656507318.740383][3241:3246] CHIP:DMG: SuppressResponse = true, - [1656507318.740420][3241:3246] CHIP:DMG: InteractionModelRevision = 1 - [1656507318.740454][3241:3246] CHIP:DMG: } - [1656507318.740920][3241:3246] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 3101344021 - [1656507318.741009][3241:3246] CHIP:TOO: ACL: 2 entries - [1656507318.741086][3241:3246] CHIP:TOO: [1]: { - [1656507318.741142][3241:3246] CHIP:TOO: Privilege: 5 - [1656507318.741177][3241:3246] CHIP:TOO: AuthMode: 2 - [1656507318.741216][3241:3246] CHIP:TOO: Subjects: 1 entries - [1656507318.741258][3241:3246] CHIP:TOO: [1]: 112233 - [1656507318.741296][3241:3246] CHIP:TOO: Targets: null - [1656507318.741331][3241:3246] CHIP:TOO: FabricIndex: 1 - [1656507318.741363][3241:3246] CHIP:TOO: } - [1656507318.741408][3241:3246] CHIP:TOO: [2]: { - [1656507318.741442][3241:3246] CHIP:TOO: Privilege: 3 - [1656507318.741475][3241:3246] CHIP:TOO: AuthMode: 3 - [1656507318.741508][3241:3246] CHIP:TOO: Subjects: null - [1656507318.741540][3241:3246] CHIP:TOO: Targets: null - [1656507318.741573][3241:3246] CHIP:TOO: FabricIndex: 1 - [1656507318.741605][3241:3246] CHIP:TOO: } - [1656507318.741742][3241:3246] CHIP:EM: Sending Standalone Ack for MessageCounter:173222401 on exchange 19903i - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "3", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: ProxyView - (2) AuthMode field: CASE (2) Subjects field: null Targets field: null" + "Step 16:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + ProxyView (2) AuthMode field: CASE (2) Subjects field: null Targets + field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 2, "authMode": 2, "subjects": null, "targets": null}]' 1 0 - On TH1(Chiptool), Verify that the status is Success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements as Subject and Target as null - [1656507439.868495][3249:3254] CHIP:DMG: WriteClient moving to [ResponseRe] - [1656507439.868612][3249:3254] CHIP:DMG: WriteResponseMessage = - [1656507439.868671][3249:3254] CHIP:DMG: { - [1656507439.868725][3249:3254] CHIP:DMG: AttributeStatusIBs = - [1656507439.868800][3249:3254] CHIP:DMG: [ - [1656507439.868860][3249:3254] CHIP:DMG: AttributeStatusIB = - [1656507439.868926][3249:3254] CHIP:DMG: { - [1656507439.868988][3249:3254] CHIP:DMG: AttributePathIB = - [1656507439.869069][3249:3254] CHIP:DMG: { - [1656507439.869147][3249:3254] CHIP:DMG: Endpoint = 0x0, - [1656507439.869230][3249:3254] CHIP:DMG: Cluster = 0x1f, - [1656507439.869311][3249:3254] CHIP:DMG: Attribute = 0x0000_0000, - [1656507439.869387][3249:3254] CHIP:DMG: } - [1656507439.869470][3249:3254] CHIP:DMG: - [1656507439.869546][3249:3254] CHIP:DMG: StatusIB = - [1656507439.869620][3249:3254] CHIP:DMG: { - [1656507439.869765][3249:3254] CHIP:DMG: status = 0x00 (SUCCESS), - [1656507439.869846][3249:3254] CHIP:DMG: }, - [1656507439.869924][3249:3254] CHIP:DMG: - [1656507439.869992][3249:3254] CHIP:DMG: }, - [1656507439.870082][3249:3254] CHIP:DMG: - [1656507439.870141][3249:3254] CHIP:DMG: AttributeStatusIB = - [1656507439.870211][3249:3254] CHIP:DMG: { - [1656507439.870277][3249:3254] CHIP:DMG: AttributePathIB = - [1656507439.870352][3249:3254] CHIP:DMG: { - [1656507439.870427][3249:3254] CHIP:DMG: Endpoint = 0x0, - [1656507439.870507][3249:3254] CHIP:DMG: Cluster = 0x1f, - [1656507439.870588][3249:3254] CHIP:DMG: Attribute = 0x0000_0000, - [1656507439.870667][3249:3254] CHIP:DMG: ListIndex = Null, - [1656507439.870742][3249:3254] CHIP:DMG: } - [1656507439.870827][3249:3254] CHIP:DMG: - [1656507439.870902][3249:3254] CHIP:DMG: StatusIB = - [1656507439.870975][3249:3254] CHIP:DMG: { - [1656507439.871048][3249:3254] CHIP:DMG: status = 0x00 (SUCCESS), - [1656507439.871131][3249:3254] CHIP:DMG: }, - [1656507439.871204][3249:3254] CHIP:DMG: - [1656507439.871269][3249:3254] CHIP:DMG: }, - [1656507439.871354][3249:3254] CHIP:DMG: - [1656507439.871413][3249:3254] CHIP:DMG: AttributeStatusIB = - [1656507439.871477][3249:3254] CHIP:DMG: { - [1656507439.871538][3249:3254] CHIP:DMG: AttributePathIB = - [1656507439.871610][3249:3254] CHIP:DMG: { - [1656507439.871693][3249:3254] CHIP:DMG: Endpoint = 0x0, - [1656507439.871780][3249:3254] CHIP:DMG: Cluster = 0x1f, - [1656507439.871956][3249:3254] CHIP:DMG: Attribute = 0x0000_0000, - [1656507439.872045][3249:3254] CHIP:DMG: ListIndex = Null, - [1656507439.872125][3249:3254] CHIP:DMG: } - [1656507439.872208][3249:3254] CHIP:DMG: - [1656507439.872278][3249:3254] CHIP:DMG: StatusIB = - [1656507439.872359][3249:3254] CHIP:DMG: { - [1656507439.872441][3249:3254] CHIP:DMG: status = 0x00 (SUCCESS), - [1656507439.872523][3249:3254] CHIP:DMG: }, - [1656507439.872598][3249:3254] CHIP:DMG: - [1656507439.872664][3249:3254] CHIP:DMG: }, - [1656507439.872739][3249:3254] CHIP:DMG: - [1656507439.872798][3249:3254] CHIP:DMG: ], - [1656507439.872886][3249:3254] CHIP:DMG: - [1656507439.872945][3249:3254] CHIP:DMG: InteractionModelRevision = 1 - [1656507439.873001][3249:3254] CHIP:DMG: } - [1656507439.873288][3249:3254] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "2", + AuthMode: "2", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 17:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - - On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 2 elements with Subject and Target as null - [1656507517.730614][3261:3266] CHIP:DMG: - [1656507517.730654][3261:3266] CHIP:DMG: SuppressResponse = true, - [1656507517.730695][3261:3266] CHIP:DMG: InteractionModelRevision = 1 - [1656507517.730733][3261:3266] CHIP:DMG: } - [1656507517.731236][3261:3266] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 3101344024 - [1656507517.731328][3261:3266] CHIP:TOO: ACL: 2 entries - [1656507517.731414][3261:3266] CHIP:TOO: [1]: { - [1656507517.731474][3261:3266] CHIP:TOO: Privilege: 5 - [1656507517.731513][3261:3266] CHIP:TOO: AuthMode: 2 - [1656507517.731555][3261:3266] CHIP:TOO: Subjects: 1 entries - [1656507517.731601][3261:3266] CHIP:TOO: [1]: 112233 - [1656507517.731643][3261:3266] CHIP:TOO: Targets: null - [1656507517.731680][3261:3266] CHIP:TOO: FabricIndex: 1 - [1656507517.731715][3261:3266] CHIP:TOO: } - [1656507517.731764][3261:3266] CHIP:TOO: [2]: { - [1656507517.731802][3261:3266] CHIP:TOO: Privilege: 2 - [1656507517.731838][3261:3266] CHIP:TOO: AuthMode: 2 - [1656507517.731874][3261:3266] CHIP:TOO: Subjects: null - [1656507517.731909][3261:3266] CHIP:TOO: Targets: null - [1656507517.731945][3261:3266] CHIP:TOO: FabricIndex: 1 - [1656507517.731980][3261:3266] CHIP:TOO: } - [1656507517.732099][3261:3266] CHIP:EM: Sending Standalone Ack for MessageCounter:72796495 on exchange 36236i - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "2", + AuthMode: "2", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster + "Step 18:TH1 reads DUT AccessControl cluster SubjectsPerAccessControlEntry attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read subjects-per-access-control-entry 1 0 - - On TH1(Chiptool), verify with value 4 or greater as subjects-per-access-control-entry , value is stored as MAXSUBJECTS - - [1656657490.002372][3078:3083] CHIP:DMG: - [1656657490.002408][3078:3083] CHIP:DMG: ], - [1656657490.002452][3078:3083] CHIP:DMG: - [1656657490.002489][3078:3083] CHIP:DMG: SuppressResponse = true, - [1656657490.002527][3078:3083] CHIP:DMG: InteractionModelRevision = 1 - [1656657490.002562][3078:3083] CHIP:DMG: } - [1656657490.002742][3078:3083] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0002 DataVersion: 3780432421 - [1656657490.002820][3078:3083] CHIP:TOO: SubjectsPerAccessControlEntry: 4 - [1656657490.002920][3078:3083] CHIP:EM: Sending Standalone Ack for MessageCounter:9586938 on exchange 51487i - [1656657490.003004][3078:3083] CHIP:IN: Prepared secure message 0xffff8e7cd958 to 0x0000000000000001 (1) of type 0x10 and protocolId (0, 0) on exchange 51487i with MessageCounter:235451132. - disabled: true + command: "readAttribute" + attribute: "SubjectsPerAccessControlEntry" + response: + saveAs: MAXSUBJECTS + #Issue https://github.com/project-chip/connectedhomeip/issues/16719 - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: list of MAXSUBJECTS random - node IDs (stored as SUBJECTS) Targets field: null" - PICS: ACL.S.A0000 + "Step 19:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: list of + MAXSUBJECTS random node IDs (stored as SUBJECTS) Targets field: null" + PICS: ACL.S.A0000 && PICS_SKIP_SAMPLE_APP verification: | ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects":[33,44,55,66] , "targets": null}]' 1 0 On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements as Subject as SUBJECTS and Target as null @@ -1128,10 +643,18 @@ tests: [1657542321.147625][3461:3466] CHIP:DMG: InteractionModelRevision = 1 [1657542321.147663][3461:3466] CHIP:DMG: } [1657542321.147865][3461:3466] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" - PICS: ACL.S.A0000 + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + #Issue https://github.com/project-chip/connectedhomeip/issues/16719 + - label: "Step 20:TH1 reads AccessControl cluster ACL attribute" + PICS: ACL.S.A0000 && PICS_SKIP_SAMPLE_APP verification: | ./chip-tool accesscontrol read acl 1 0 @@ -1164,144 +687,86 @@ tests: [1656928460.993113][4255:4260] CHIP:TOO: } [1656928460.993204][4255:4260] CHIP:EM: Sending Standalone Ack for MessageCounter:154962728 on exchange 64378i [1656928460.993291][4255:4260] CHIP:IN: Prepared secure message 0xffffad69f958 to 0x0000000000000001 (1) o - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: [CAT1, CAT1, CAT3, CAT4] - Targets field: null" + "Step 21:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: [CAT1, CAT2, + CAT3, CAT4] Targets field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects":[65520,65521,65522,65523] , "targets": null}]' 1 0 - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Subjects as CAT Values and Target as null - [1656509348.174135][3403:3408] CHIP:DMG: WriteClient moving to [ResponseRe] - [1656509348.174227][3403:3408] CHIP:DMG: WriteResponseMessage = - [1656509348.174272][3403:3408] CHIP:DMG: { - [1656509348.174312][3403:3408] CHIP:DMG: AttributeStatusIBs = - [1656509348.174367][3403:3408] CHIP:DMG: [ - [1656509348.174412][3403:3408] CHIP:DMG: AttributeStatusIB = - [1656509348.174462][3403:3408] CHIP:DMG: { - [1656509348.174509][3403:3408] CHIP:DMG: AttributePathIB = - [1656509348.174566][3403:3408] CHIP:DMG: { - [1656509348.174623][3403:3408] CHIP:DMG: Endpoint = 0x0, - [1656509348.174685][3403:3408] CHIP:DMG: Cluster = 0x1f, - [1656509348.174746][3403:3408] CHIP:DMG: Attribute = 0x0000_0000, - [1656509348.174808][3403:3408] CHIP:DMG: } - [1656509348.174870][3403:3408] CHIP:DMG: - [1656509348.174924][3403:3408] CHIP:DMG: StatusIB = - [1656509348.174979][3403:3408] CHIP:DMG: { - [1656509348.175037][3403:3408] CHIP:DMG: status = 0x00 (SUCCESS), - [1656509348.175093][3403:3408] CHIP:DMG: }, - [1656509348.175150][3403:3408] CHIP:DMG: - [1656509348.175200][3403:3408] CHIP:DMG: }, - [1656509348.175265][3403:3408] CHIP:DMG: - [1656509348.175309][3403:3408] CHIP:DMG: AttributeStatusIB = - [1656509348.175357][3403:3408] CHIP:DMG: { - [1656509348.175403][3403:3408] CHIP:DMG: AttributePathIB = - [1656509348.175457][3403:3408] CHIP:DMG: { - [1656509348.175514][3403:3408] CHIP:DMG: Endpoint = 0x0, - [1656509348.175580][3403:3408] CHIP:DMG: Cluster = 0x1f, - [1656509348.175642][3403:3408] CHIP:DMG: Attribute = 0x0000_0000, - [1656509348.175701][3403:3408] CHIP:DMG: ListIndex = Null, - [1656509348.175758][3403:3408] CHIP:DMG: } - [1656509348.175818][3403:3408] CHIP:DMG: - [1656509348.175871][3403:3408] CHIP:DMG: StatusIB = - [1656509348.175925][3403:3408] CHIP:DMG: { - [1656509348.175981][3403:3408] CHIP:DMG: status = 0x00 (SUCCESS), - [1656509348.176038][3403:3408] CHIP:DMG: }, - [1656509348.176093][3403:3408] CHIP:DMG: - [1656509348.176143][3403:3408] CHIP:DMG: }, - [1656509348.176252][3403:3408] CHIP:DMG: - [1656509348.176299][3403:3408] CHIP:DMG: AttributeStatusIB = - [1656509348.176353][3403:3408] CHIP:DMG: { - [1656509348.176399][3403:3408] CHIP:DMG: AttributePathIB = - [1656509348.176454][3403:3408] CHIP:DMG: { - [1656509348.176511][3403:3408] CHIP:DMG: Endpoint = 0x0, - [1656509348.176568][3403:3408] CHIP:DMG: Cluster = 0x1f, - [1656509348.176628][3403:3408] CHIP:DMG: Attribute = 0x0000_0000, - [1656509348.176692][3403:3408] CHIP:DMG: ListIndex = Null, - [1656509348.176749][3403:3408] CHIP:DMG: } - [1656509348.176810][3403:3408] CHIP:DMG: - [1656509348.176863][3403:3408] CHIP:DMG: StatusIB = - [1656509348.176917][3403:3408] CHIP:DMG: { - [1656509348.176973][3403:3408] CHIP:DMG: status = 0x00 (SUCCESS), - [1656509348.177033][3403:3408] CHIP:DMG: }, - [1656509348.177088][3403:3408] CHIP:DMG: - [1656509348.177138][3403:3408] CHIP:DMG: }, - [1656509348.177191][3403:3408] CHIP:DMG: - [1656509348.177235][3403:3408] CHIP:DMG: ], - [1656509348.177299][3403:3408] CHIP:DMG: - [1656509348.177344][3403:3408] CHIP:DMG: InteractionModelRevision = 1 - [1656509348.177387][3403:3408] CHIP:DMG: } - [1656509348.177603][3403:3408] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1656509348.177721][3403:3408] CHIP:EM: Sending Standalone Ack for MessageCounter:77826894 on exchange 45755i - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: [CAT1, CAT2, CAT3, CAT4], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 22:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - - On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 2 elements with Subjects as CAT Values and Target as null - [1656509471.738046][3416:3421] CHIP:DMG: - [1656509471.738082][3416:3421] CHIP:DMG: SuppressResponse = true, - [1656509471.738120][3416:3421] CHIP:DMG: InteractionModelRevision = 1 - [1656509471.738154][3416:3421] CHIP:DMG: } - [1656509471.738644][3416:3421] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 3101344046 - [1656509471.738735][3416:3421] CHIP:TOO: ACL: 2 entries - [1656509471.738812][3416:3421] CHIP:TOO: [1]: { - [1656509471.738867][3416:3421] CHIP:TOO: Privilege: 5 - [1656509471.738901][3416:3421] CHIP:TOO: AuthMode: 2 - [1656509471.738940][3416:3421] CHIP:TOO: Subjects: 1 entries - [1656509471.738980][3416:3421] CHIP:TOO: [1]: 112233 - [1656509471.739018][3416:3421] CHIP:TOO: Targets: null - [1656509471.739051][3416:3421] CHIP:TOO: FabricIndex: 1 - [1656509471.739083][3416:3421] CHIP:TOO: } - [1656509471.739130][3416:3421] CHIP:TOO: [2]: { - [1656509471.739164][3416:3421] CHIP:TOO: Privilege: 3 - [1656509471.739197][3416:3421] CHIP:TOO: AuthMode: 2 - [1656509471.739235][3416:3421] CHIP:TOO: Subjects: 4 entries - [1656509471.739273][3416:3421] CHIP:TOO: [1]: 65520 - [1656509471.739310][3416:3421] CHIP:TOO: [2]: 65521 - [1656509471.739346][3416:3421] CHIP:TOO: [3]: 65522 - [1656509471.739382][3416:3421] CHIP:TOO: [4]: 65523 - [1656509471.739417][3416:3421] CHIP:TOO: Targets: null - [1656509471.739450][3416:3421] CHIP:TOO: FabricIndex: 1 - [1656509471.739482][3416:3421] CHIP:TOO: } - [1656509471.739596][3416:3421] CHIP:EM: Sending Standalone Ack for MessageCounter:158465651 on exchange 5515i - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: [CAT1, CAT2, CAT3, CAT4], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster - TargetsPerAccessControlEntry attribute" + "Step 23:TH1 reads AccessControl cluster TargetsPerAccessControlEntry + attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read targets-per-access-control-entry 1 0 - On TH1(Chiptool), verify with value 3 or greater as Targets-per-access-control-entry ,value is stored as MAXTARGETS - [1656509737.166763][3434:3439] CHIP:DMG: - [1656509737.166786][3434:3439] CHIP:DMG: ], - [1656509737.166816][3434:3439] CHIP:DMG: - [1656509737.166842][3434:3439] CHIP:DMG: SuppressResponse = true, - [1656509737.166867][3434:3439] CHIP:DMG: InteractionModelRevision = 1 - [1656509737.166890][3434:3439] CHIP:DMG: } - [1656509737.167026][3434:3439] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0003 DataVersion: 3101344046 - [1656509737.167092][3434:3439] CHIP:TOO: TargetsPerAccessControlEntry: 3 - [1656509737.167174][3434:3439] CHIP:EM: Sending Standalone Ack for MessageCounter:259106833 on exchange 24633i - [1656509737.167253][3434:3439] CHIP:IN: Prepared secure message 0xffffb8c9c958 to 0x0000000000000001 (1) of type 0x - disabled: true + command: "readAttribute" + attribute: "TargetsPerAccessControlEntry" + response: + saveAs: TargetsPerAccessControlEntry + #Need if support : https://github.com/project-chip/connectedhomeip/issues/16719 - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field:null Targets field: list of - MAXTARGETS targets {Cluster: random} (stored as TARGETS)" - PICS: ACL.S.A0000 + "Step 24:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field:null Targets + field: list of MAXTARGETS targets {Cluster: random} (stored as + TARGETS)" + PICS: ACL.S.A0000 && PICS_SKIP_SAMPLE_APP verification: | ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 40, "endpoint": null, "deviceType": null },{ "cluster": 28, "endpoint": null, "deviceType": null }]}]' 1 0 @@ -1379,10 +844,18 @@ tests: [1662015973.914183][3126:3132] CHIP:DMG: Cluster = 0x1f, [1662015973.914228][3126:3132] CHIP:DMG: Attribute = 0x0000_0000, [1662015973.914270][3126:3132] CHIP:DMG: ListIndex = Null, - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" - PICS: ACL.S.A0000 + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + #Issue : https://github.com/project-chip/connectedhomeip/issues/16719 + - label: "Step 25:TH1 reads AccessControl cluster ACL attribute" + PICS: ACL.S.A0000 && PICS_SKIP_SAMPLE_APP verification: | ./chip-tool accesscontrol read acl 1 0 On TH1(Chiptool) , Verify that the AccessControlEntryStruct contains 2 elements with Subjects as null and and Target as TARGETS @@ -1412,1324 +885,560 @@ tests: [1662016086.502223][3138:3143] CHIP:TOO: DeviceType: null [1662016086.502247][3138:3143] CHIP:TOO: } [1662016086.502273][3138:3143] CHIP:TOO: FabricIndex: 1 - disabled: true + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster - AccessControlEntriesPerFabric attribute" + "Step 26:TH1 reads AccessControl cluster AccessControlEntriesPerFabric + attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read access-control-entries-per-fabric 1 0 - On TH1(Chiptool), verify with value 3 or greater as AccessControlEntriesPerFabric,value is stored as MAXENTRIES - - [1656594850.964909][4043:4048] CHIP:DMG: AttributeReportIBs = - [1656594850.964954][4043:4048] CHIP:DMG: [ - [1656594850.964991][4043:4048] CHIP:DMG: AttributeReportIB = - [1656594850.965038][4043:4048] CHIP:DMG: { - [1656594850.965076][4043:4048] CHIP:DMG: AttributeDataIB = - [1656594850.965129][4043:4048] CHIP:DMG: { - [1656594850.965177][4043:4048] CHIP:DMG: DataVersion = 0x182902e1, - [1656594850.965223][4043:4048] CHIP:DMG: AttributePathIB = - [1656594850.965273][4043:4048] CHIP:DMG: { - [1656594850.965321][4043:4048] CHIP:DMG: Endpoint = 0x0, - [1656594850.965373][4043:4048] CHIP:DMG: Cluster = 0x1f, - [1656594850.965420][4043:4048] CHIP:DMG: Attribute = 0x0000_0004, - [1656594850.965474][4043:4048] CHIP:DMG: } - [1656594850.965529][4043:4048] CHIP:DMG: - [1656594850.965581][4043:4048] CHIP:DMG: Data = 3, - [1656594850.965631][4043:4048] CHIP:DMG: }, - [1656594850.965677][4043:4048] CHIP:DMG: - [1656594850.965714][4043:4048] CHIP:DMG: }, - [1656594850.965759][4043:4048] CHIP:DMG: - [1656594850.965794][4043:4048] CHIP:DMG: ], - [1656594850.965838][4043:4048] CHIP:DMG: - [1656594850.965875][4043:4048] CHIP:DMG: SuppressResponse = true, - [1656594850.965913][4043:4048] CHIP:DMG: InteractionModelRevision = 1 - [1656594850.965947][4043:4048] CHIP:DMG: } - [1656594850.966125][4043:4048] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0004 DataVersion: 405340897 - [1656594850.966204][4043:4048] CHIP:TOO: AccessControlEntriesPerFabric: 3 - [1656594850.966302][4043:4048] CHIP:EM: Sending Standalone Ack for MessageCounter:202038954 on exchange 11588i - [1656594850.966383][4043:4048] CHIP:IN: Prepared secure message 0xffffaa7cd958 to 0x0000000000000001 (1) of type 0x10 - disabled: true + command: "readAttribute" + attribute: "AccessControlEntriesPerFabric" + response: + saveAs: MAXENTRIES - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing MAXENTRIES elements - 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) - Subjects field: [N1] Targets field: null 2.struct Privilege field: - Operate (3) AuthMode field: CASE (2) Subjects field: null Targets - field: null subsequent elements same as second element" + "Step 27:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing + MAXENTRIES elements 1.struct Privilege field: Administer (5) AuthMode + field: CASE (2) Subjects field: [N1] Targets field: null 2.struct + Privilege field: Operate (3) AuthMode field: CASE (2) Subjects field: + null Targets field: null subsequent elements same as second element" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": null, "targets":null}, - { "privilege": 3, "authMode": 2, "subjects": null, "targets":null}]' 1 0 - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing MAXENTRIES elements - - [1657617362.022161][8840:8845] CHIP:DMG: WriteResponseMessage = - [1657617362.022190][8840:8845] CHIP:DMG: { - [1657617362.022216][8840:8845] CHIP:DMG: AttributeStatusIBs = - [1657617362.022249][8840:8845] CHIP:DMG: [ - [1657617362.022275][8840:8845] CHIP:DMG: AttributeStatusIB = - [1657617362.022308][8840:8845] CHIP:DMG: { - [1657617362.022352][8840:8845] CHIP:DMG: AttributePathIB = - [1657617362.022413][8840:8845] CHIP:DMG: { - [1657617362.022442][8840:8845] CHIP:DMG: Endpoint = 0x0, - [1657617362.022479][8840:8845] CHIP:DMG: Cluster = 0x1f, - [1657617362.022514][8840:8845] CHIP:DMG: Attribute = 0x0000_0000, - [1657617362.022550][8840:8845] CHIP:DMG: } - [1657617362.022587][8840:8845] CHIP:DMG: - [1657617362.022618][8840:8845] CHIP:DMG: StatusIB = - [1657617362.022655][8840:8845] CHIP:DMG: { - [1657617362.022687][8840:8845] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617362.022722][8840:8845] CHIP:DMG: }, - [1657617362.022754][8840:8845] CHIP:DMG: - [1657617362.022784][8840:8845] CHIP:DMG: }, - [1657617362.022821][8840:8845] CHIP:DMG: - [1657617362.022846][8840:8845] CHIP:DMG: AttributeStatusIB = - [1657617362.022874][8840:8845] CHIP:DMG: { - [1657617362.022900][8840:8845] CHIP:DMG: AttributePathIB = - [1657617362.022931][8840:8845] CHIP:DMG: { - [1657617362.022967][8840:8845] CHIP:DMG: Endpoint = 0x0, - [1657617362.023003][8840:8845] CHIP:DMG: Cluster = 0x1f, - [1657617362.023041][8840:8845] CHIP:DMG: Attribute = 0x0000_0000, - [1657617362.023075][8840:8845] CHIP:DMG: ListIndex = Null, - [1657617362.023106][8840:8845] CHIP:DMG: } - [1657617362.023141][8840:8845] CHIP:DMG: - [1657617362.023173][8840:8845] CHIP:DMG: StatusIB = - [1657617362.023203][8840:8845] CHIP:DMG: { - [1657617362.023239][8840:8845] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617362.023271][8840:8845] CHIP:DMG: }, - [1657617362.023302][8840:8845] CHIP:DMG: - [1657617362.023328][8840:8845] CHIP:DMG: }, - [1657617362.023364][8840:8845] CHIP:DMG: - [1657617362.023389][8840:8845] CHIP:DMG: AttributeStatusIB = - [1657617362.023416][8840:8845] CHIP:DMG: { - [1657617362.023443][8840:8845] CHIP:DMG: AttributePathIB = - [1657617362.023473][8840:8845] CHIP:DMG: { - [1657617362.023506][8840:8845] CHIP:DMG: Endpoint = 0x0, - [1657617362.023539][8840:8845] CHIP:DMG: Cluster = 0x1f, - [1657617362.023574][8840:8845] CHIP:DMG: Attribute = 0x0000_0000, - [1657617362.023606][8840:8845] CHIP:DMG: ListIndex = Null, - [1657617362.023641][8840:8845] CHIP:DMG: } - [1657617362.023677][8840:8845] CHIP:DMG: - [1657617362.023707][8840:8845] CHIP:DMG: StatusIB = - [1657617362.023738][8840:8845] CHIP:DMG: { - [1657617362.023769][8840:8845] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617362.023801][8840:8845] CHIP:DMG: }, - [1657617362.023833][8840:8845] CHIP:DMG: - [1657617362.023859][8840:8845] CHIP:DMG: }, - [1657617362.023896][8840:8845] CHIP:DMG: - [1657617362.023920][8840:8845] CHIP:DMG: AttributeStatusIB = - [1657617362.023948][8840:8845] CHIP:DMG: { - [1657617362.023974][8840:8845] CHIP:DMG: AttributePathIB = - [1657617362.024004][8840:8845] CHIP:DMG: { - [1657617362.024037][8840:8845] CHIP:DMG: Endpoint = 0x0, - [1657617362.024071][8840:8845] CHIP:DMG: Cluster = 0x1f, - [1657617362.024108][8840:8845] CHIP:DMG: Attribute = 0x0000_0000, - [1657617362.024141][8840:8845] CHIP:DMG: ListIndex = Null, - [1657617362.024175][8840:8845] CHIP:DMG: } - [1657617362.024211][8840:8845] CHIP:DMG: - [1657617362.024241][8840:8845] CHIP:DMG: StatusIB = - [1657617362.024272][8840:8845] CHIP:DMG: { - [1657617362.024304][8840:8845] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617362.024336][8840:8845] CHIP:DMG: }, - [1657617362.024367][8840:8845] CHIP:DMG: - [1657617362.024393][8840:8845] CHIP:DMG: }, - [1657617362.024423][8840:8845] CHIP:DMG: - [1657617362.024447][8840:8845] CHIP:DMG: ], - [1657617362.024489][8840:8845] CHIP:DMG: - [1657617362.024514][8840:8845] CHIP:DMG: InteractionModelRevision = 1 - [1657617362.024538][8840:8845] CHIP:DMG: } - [1657617362.024703][8840:8845] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + + - label: "Step 28:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool) , Verify that the AccessControlEntryStruct containing MAXENTRIES elements - [1657543165.385093][3592:3597] CHIP:DMG: } - [1657543165.385508][3592:3597] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 3549245812 - [1657543165.385586][3592:3597] CHIP:TOO: ACL: 3 entries - [1662014580.521093][2979:2984] CHIP:TOO: ACL: 3 entries - [1662014580.521143][2979:2984] CHIP:TOO: [1]: { - [1662014580.523697][2979:2984] CHIP:TOO: Privilege: 5 - [1662014580.523728][2979:2984] CHIP:TOO: AuthMode: 2 - [1662014580.523754][2979:2984] CHIP:TOO: Subjects: 1 entries - [1662014580.523781][2979:2984] CHIP:TOO: [1]: 112233 - [1662014580.523803][2979:2984] CHIP:TOO: Targets: null - [1662014580.523823][2979:2984] CHIP:TOO: FabricIndex: 1 - [1662014580.523842][2979:2984] CHIP:TOO: } - [1662014580.523870][2979:2984] CHIP:TOO: [2]: { - [1662014580.523891][2979:2984] CHIP:TOO: Privilege: 3 - [1662014580.523910][2979:2984] CHIP:TOO: AuthMode: 2 - [1662014580.523930][2979:2984] CHIP:TOO: Subjects: null - [1662014580.523948][2979:2984] CHIP:TOO: Targets: null - [1662014580.523967][2979:2984] CHIP:TOO: FabricIndex: 1 - [1662014580.523985][2979:2984] CHIP:TOO: } - [1662014580.524010][2979:2984] CHIP:TOO: [3]: { - [1662014580.524030][2979:2984] CHIP:TOO: Privilege: 3 - [1662014580.524049][2979:2984] CHIP:TOO: AuthMode: 2 - [1662014580.524068][2979:2984] CHIP:TOO: Subjects: null - [1662014580.524086][2979:2984] CHIP:TOO: Targets: null - [1662014580.524105][2979:2984] CHIP:TOO: FabricIndex: 1 - [1662014580.524124][2979:2984] CHIP:TOO: } - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: PASE (1) Subjects field: null Targets field: null" + "Step 29:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: PASE (1) Subjects field: null Targets + field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{"privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 1, "subjects": null, "targets":null}]' 1 0 - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path with PASE Authmode - [1658475475.310438][3113:3119] CHIP:DMG: { - [1658475475.310466][3113:3119] CHIP:DMG: AttributeStatusIBs = - [1658475475.310500][3113:3119] CHIP:DMG: [ - [1658475475.310530][3113:3119] CHIP:DMG: AttributeStatusIB = - [1658475475.310564][3113:3119] CHIP:DMG: { - [1658475475.310634][3113:3119] CHIP:DMG: AttributePathIB = - [1658475475.310677][3113:3119] CHIP:DMG: { - [1658475475.310718][3113:3119] CHIP:DMG: Endpoint = 0x0, - [1658475475.310764][3113:3119] CHIP:DMG: Cluster = 0x1f, - [1658475475.310811][3113:3119] CHIP:DMG: Attribute = 0x0000_0000, - [1658475475.310855][3113:3119] CHIP:DMG: } - [1658475475.310898][3113:3119] CHIP:DMG: - [1658475475.310934][3113:3119] CHIP:DMG: StatusIB = - [1658475475.310973][3113:3119] CHIP:DMG: { - [1658475475.311012][3113:3119] CHIP:DMG: status = 0x00 (SUCCESS), - [1658475475.311054][3113:3119] CHIP:DMG: }, - [1658475475.311091][3113:3119] CHIP:DMG: - [1658475475.311125][3113:3119] CHIP:DMG: }, - [1658475475.311167][3113:3119] CHIP:DMG: - [1658475475.311197][3113:3119] CHIP:DMG: AttributeStatusIB = - [1658475475.311229][3113:3119] CHIP:DMG: { - [1658475475.311260][3113:3119] CHIP:DMG: AttributePathIB = - [1658475475.311297][3113:3119] CHIP:DMG: { - [1658475475.311335][3113:3119] CHIP:DMG: Endpoint = 0x0, - [1658475475.311375][3113:3119] CHIP:DMG: Cluster = 0x1f, - [1658475475.311416][3113:3119] CHIP:DMG: Attribute = 0x0000_0000, - [1658475475.311456][3113:3119] CHIP:DMG: ListIndex = Null, - [1658475475.311494][3113:3119] CHIP:DMG: } - [1658475475.311535][3113:3119] CHIP:DMG: - [1658475475.311571][3113:3119] CHIP:DMG: StatusIB = - [1658475475.311608][3113:3119] CHIP:DMG: { - [1658475475.311645][3113:3119] CHIP:DMG: status = 0x00 (SUCCESS), - [1658475475.311687][3113:3119] CHIP:DMG: }, - [1658475475.311724][3113:3119] CHIP:DMG: - [1658475475.311755][3113:3119] CHIP:DMG: }, - [1658475475.311798][3113:3119] CHIP:DMG: - [1658475475.311828][3113:3119] CHIP:DMG: AttributeStatusIB = - [1658475475.311860][3113:3119] CHIP:DMG: { - [1658475475.311891][3113:3119] CHIP:DMG: AttributePathIB = - [1658475475.311927][3113:3119] CHIP:DMG: { - [1658475475.311966][3113:3119] CHIP:DMG: Endpoint = 0x0, - [1658475475.312006][3113:3119] CHIP:DMG: Cluster = 0x1f, - [1658475475.312046][3113:3119] CHIP:DMG: Attribute = 0x0000_0000, - [1658475475.312089][3113:3119] CHIP:DMG: ListIndex = Null, - [1658475475.312127][3113:3119] CHIP:DMG: } - [1658475475.312168][3113:3119] CHIP:DMG: - [1658475475.312205][3113:3119] CHIP:DMG: StatusIB = - [1658475475.312246][3113:3119] CHIP:DMG: { - [1658475475.312285][3113:3119] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658475475.312326][3113:3119] CHIP:DMG: }, - [1658475475.312363][3113:3119] CHIP:DMG: - [1658475475.312397][3113:3119] CHIP:DMG: }, - [1658475475.312432][3113:3119] CHIP:DMG: - [1658475475.312461][3113:3119] CHIP:DMG: ], - [1658475475.312506][3113:3119] CHIP:DMG: - [1658475475.312535][3113:3119] CHIP:DMG: InteractionModelRevision = 1 - [1658475475.312563][3113:3119] CHIP:DMG: } - [1658475475.312720][3113:3119] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658475475.312759][3113:3119] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - [1658475475.312828][3113:3119] CHIP:EM: Sending Standalone Ack for MessageCounter:57486291 on exchange 52295i - [1658475475.312917][3113:3119] CHIP:IN: Prepared secure message 0xffffa3ffd9e8 to 0x0000000000000001 (1) of type 0x10 and protocolId (0, 0) on exchange 52295i with MessageCounter:34853551. - [1658475475.312965][3113:3119] CHIP:IN: Sending encrypted msg 0xffffa3ffd9e8 with MessageCounter:34853551 to 0x0000000000000001 (1) at monotonic time: 00000000004484A6 msec - [1658475475.313213][3113:3119] CHIP:EM: Flushed pending ack for MessageCounter:57486291 on exchange 52295i - [1658475475.313471][3113:3113] CHIP:CTL: Shutting down the commissioner - [1658475475.313509][3113:3113] CHIP:CTL: Stopping commissioning discovery over DNS-SD - [1658475475.313539][3113:3113] CHIP:CTL: Shutting down the controller - [1658475475.313577][3113:3113] CHIP:IN: Expiring all sessions for fabric 0x1!! - [1658475475.313606][3113:3113] CHIP:IN: SecureSession[0xffff9c001930]: MarkForEviction Type:2 LSID:22794 - [1658475475.313634][3113:3113] CHIP:SC: SecureSession[0xffff9c001930]: Moving from state "kActive" --> "kPendingEviction" - [1658475475.313662][3113:3113] CHIP:IN: SecureSession[0xffff9c001930]: Released - Type:2 LSID:22794 - [1658475475.313694][3113:3113] CHIP:FP: Forgetting fabric 0x1 - [1658475475.313734][3113:3113] CHIP:TS: Pending Last Known Good Time: 2022-07-21T06:51:50 - [1658475475.313959][3113:3113] CHIP:TS: Previous Last Known Good Time: 2022-07-21T06:51:50 - [1658475475.313992][3113:3113] CHIP:TS: Reverted Last Known Good Time to previous value - [1658475475.314043][3113:3113] CHIP:CTL: Shutting down the commissioner - [1658475475.314071][3113:3113] CHIP:CTL: Stopping commissioning discovery over DNS-SD - [1658475475.314098][3113:3113] CHIP:CTL: Shutting down the controller - [1658475475.314122][3113:3113] CHIP:IN: Expiring all sessions for fabric 0x2!! - [1658475475.314148][3113:3113] CHIP:FP: Forgetting fabric 0x2 - [1658475475.314177][3113:3113] CHIP:TS: Pending Last Known Good Time: 2022-07-21T06:51:50 - [1658475475.314323][3113:3113] CHIP:TS: Previous Last Known Good Time: 2022-07-21T06:51:50 - [1658475475.314352][3113:3113] CHIP:TS: Reverted Last Known Good Time to previous value - [1658475475.314390][3113:3113] CHIP:CTL: Shutting down the commissioner - [1658475475.314417][3113:3113] CHIP:CTL: Stopping commissioning discovery over DNS-SD - [1658475475.314442][3113:3113] CHIP:CTL: Shutting down the controller - [1658475475.314467][3113:3113] CHIP:IN: Expiring all sessions for fabric 0x3!! - [1658475475.314491][3113:3113] CHIP:FP: Forgetting fabric 0x3 - [1658475475.314520][3113:3113] CHIP:TS: Pending Last Known Good Time: 2022-07-21T06:51:50 - [1658475475.314694][3113:3113] CHIP:TS: Previous Last Known Good Time: 2022-07-21T06:51:50 - [1658475475.314722][3113:3113] CHIP:TS: Reverted Last Known Good Time to previous value - [1658475475.314760][3113:3113] CHIP:CTL: Shutting down the commissioner - [1658475475.314785][3113:3113] CHIP:CTL: Stopping commissioning discovery over DNS-SD - [1658475475.314809][3113:3113] CHIP:CTL: Shutting down the controller - [1658475475.314832][3113:3113] CHIP:CTL: Shutting down the System State, this will teardown the CHIP Stack - [1658475475.315885][3113:3113] CHIP:DMG: IM WH moving to [Uninitialized] - [1658475475.315927][3113:3113] CHIP:DMG: IM WH moving to [Uninitialized] - [1658475475.315951][3113:3113] CHIP:DMG: IM WH moving to [Uninitialized] - [1658475475.315973][3113:3113] CHIP:DMG: IM WH moving to [Uninitialized] - [1658475475.315998][3113:3113] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet - [1658475475.316077][3113:3113] CHIP:BLE: BleConnectionDelegate::CancelConnection is not implemented. - [1658475475.316389][3113:3113] CHIP:DL: writing settings to file (/tmp/chip_counters.ini-TP5HmB) - [1658475475.317146][3113:3113] CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini) - [1658475475.317216][3113:3113] CHIP:DL: NVS set: chip-counters/total-operational-hours = 0 (0x0) - [1658475475.317246][3113:3113] CHIP:DL: Inet Layer shutdown - [1658475475.317271][3113:3113] CHIP:DL: BLE shutdown - [1658475475.317295][3113:3113] CHIP:DL: System Layer shutdown - [1658475475.317425][3113:3113] CHIP:TOO: Run command failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "1", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR + + - label: "Step 30:TH1 reads AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - On TH1(Chiptool) , Verify Successfully that acl attribute with value is list of AccessControlEntryStruct containing 1 element - [1656914601.250655][3267:3272] CHIP:DMG: ], - [1656914601.250709][3267:3272] CHIP:DMG: - [1656914601.250746][3267:3272] CHIP:DMG: SuppressResponse = true, - [1656914601.250783][3267:3272] CHIP:DMG: InteractionModelRevision = 1 - [1656914601.250817][3267:3272] CHIP:DMG: } - [1656914601.251160][3267:3272] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 2291440622 - [1656914601.251237][3267:3272] CHIP:TOO: ACL: 1 entries - [1656914601.251316][3267:3272] CHIP:TOO: [1]: { - [1656914601.251373][3267:3272] CHIP:TOO: Privilege: 5 - [1656914601.251409][3267:3272] CHIP:TOO: AuthMode: 2 - [1656914601.251450][3267:3272] CHIP:TOO: Subjects: 1 entries - [1656914601.251493][3267:3272] CHIP:TOO: [1]: 112233 - [1656914601.251530][3267:3272] CHIP:TOO: Targets: null - [1656914601.251566][3267:3272] CHIP:TOO: FabricIndex: 1 - [1656914601.251600][3267:3272] CHIP:TOO: } - [1656914601.251781][3267:3272] CHIP:EM: Sending Standalone Ack for MessageCounter:251291751 on exchange 59687i - [1656914601.251874][3267:3272] CHIP:IN: Prepared secure message 0xffffb5b3d958 to 0x0000000000000001 (1) of type - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Administer - (5) AuthMode field: Group (3) Subjects field: null Targets field: null" + "Step 31:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + Administer (5) AuthMode field: Group (3) Subjects field: null Targets + field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 5, "authMode": 3, "subjects": null, "targets":null}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to Administer Privilege with Group AuthMode - [1658475916.602576][3151:3156] CHIP:DMG: WriteResponseMessage = - [1658475916.602649][3151:3156] CHIP:DMG: { - [1658475916.602684][3151:3156] CHIP:DMG: AttributeStatusIBs = - [1658475916.602747][3151:3156] CHIP:DMG: [ - [1658475916.602783][3151:3156] CHIP:DMG: AttributeStatusIB = - [1658475916.602841][3151:3156] CHIP:DMG: { - [1658475916.602881][3151:3156] CHIP:DMG: AttributePathIB = - [1658475916.602942][3151:3156] CHIP:DMG: { - [1658475916.603005][3151:3156] CHIP:DMG: Endpoint = 0x0, - [1658475916.603055][3151:3156] CHIP:DMG: Cluster = 0x1f, - [1658475916.603117][3151:3156] CHIP:DMG: Attribute = 0x0000_0000, - [1658475916.603176][3151:3156] CHIP:DMG: } - [1658475916.603232][3151:3156] CHIP:DMG: - [1658475916.603290][3151:3156] CHIP:DMG: StatusIB = - [1658475916.603352][3151:3156] CHIP:DMG: { - [1658475916.603399][3151:3156] CHIP:DMG: status = 0x00 (SUCCESS), - [1658475916.603460][3151:3156] CHIP:DMG: }, - [1658475916.603511][3151:3156] CHIP:DMG: - [1658475916.603563][3151:3156] CHIP:DMG: }, - [1658475916.603626][3151:3156] CHIP:DMG: - [1658475916.603664][3151:3156] CHIP:DMG: AttributeStatusIB = - [1658475916.603716][3151:3156] CHIP:DMG: { - [1658475916.603754][3151:3156] CHIP:DMG: AttributePathIB = - [1658475916.603812][3151:3156] CHIP:DMG: { - [1658475916.603859][3151:3156] CHIP:DMG: Endpoint = 0x0, - [1658475916.603925][3151:3156] CHIP:DMG: Cluster = 0x1f, - [1658475916.603974][3151:3156] CHIP:DMG: Attribute = 0x0000_0000, - [1658475916.604021][3151:3156] CHIP:DMG: ListIndex = Null, - [1658475916.604066][3151:3156] CHIP:DMG: } - [1658475916.604115][3151:3156] CHIP:DMG: - [1658475916.604163][3151:3156] CHIP:DMG: StatusIB = - [1658475916.604211][3151:3156] CHIP:DMG: { - [1658475916.604257][3151:3156] CHIP:DMG: status = 0x00 (SUCCESS), - [1658475916.604303][3151:3156] CHIP:DMG: }, - [1658475916.604346][3151:3156] CHIP:DMG: - [1658475916.604386][3151:3156] CHIP:DMG: }, - [1658475916.604437][3151:3156] CHIP:DMG: - [1658475916.604472][3151:3156] CHIP:DMG: AttributeStatusIB = - [1658475916.604511][3151:3156] CHIP:DMG: { - [1658475916.604548][3151:3156] CHIP:DMG: AttributePathIB = - [1658475916.604591][3151:3156] CHIP:DMG: { - [1658475916.604637][3151:3156] CHIP:DMG: Endpoint = 0x0, - [1658475916.604685][3151:3156] CHIP:DMG: Cluster = 0x1f, - [1658475916.604733][3151:3156] CHIP:DMG: Attribute = 0x0000_0000, - [1658475916.604780][3151:3156] CHIP:DMG: ListIndex = Null, - [1658475916.604825][3151:3156] CHIP:DMG: } - [1658475916.604873][3151:3156] CHIP:DMG: - [1658475916.604916][3151:3156] CHIP:DMG: StatusIB = - [1658475916.604960][3151:3156] CHIP:DMG: { - [1658475916.605009][3151:3156] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658475916.605056][3151:3156] CHIP:DMG: }, - [1658475916.605101][3151:3156] CHIP:DMG: - [1658475916.605138][3151:3156] CHIP:DMG: }, - [1658475916.605180][3151:3156] CHIP:DMG: - [1658475916.605215][3151:3156] CHIP:DMG: ], - [1658475916.605267][3151:3156] CHIP:DMG: - [1658475916.605301][3151:3156] CHIP:DMG: InteractionModelRevision = 1 - [1658475916.605336][3151:3156] CHIP:DMG: } - [1658475916.605522][3151:3156] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658475916.605569][3151:3156] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - [1658475916.605802][3151:3156] CHIP:EM: Sending Sta - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "5", + AuthMode: "3", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: invalid - value (not 1-5) AuthMode field: CASE (2) Subjects field: null Targets - field: null" + "Step 32:TH1 writes DUT Endpoint 0 AccessControl cluster ACL + attribute, value is list of AccessControlEntryStruct containing 2 + elements 1.struct Privilege field: Administer (5) AuthMode field: CASE + (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: + invalid value (not 1-5) AuthMode field: CASE (2) Subjects field: null + Targets field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 6, "authMode": 2, "subjects": null, "targets":null}]' 1 0 - - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid privilege . - - [1658476127.774933][3171:3176] CHIP:EM: Removed CHIP MessageCounter:240294498 from RetransTable on exchange 6954i - [1658476127.775074][3171:3176] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658476127.775143][3171:3176] CHIP:DMG: WriteResponseMessage = - [1658476127.775178][3171:3176] CHIP:DMG: { - [1658476127.775205][3171:3176] CHIP:DMG: AttributeStatusIBs = - [1658476127.775249][3171:3176] CHIP:DMG: [ - [1658476127.775279][3171:3176] CHIP:DMG: AttributeStatusIB = - [1658476127.775313][3171:3176] CHIP:DMG: { - [1658476127.775345][3171:3176] CHIP:DMG: AttributePathIB = - [1658476127.775384][3171:3176] CHIP:DMG: { - [1658476127.775425][3171:3176] CHIP:DMG: Endpoint = 0x0, - [1658476127.775466][3171:3176] CHIP:DMG: Cluster = 0x1f, - [1658476127.775507][3171:3176] CHIP:DMG: Attribute = 0x0000_0000, - [1658476127.775549][3171:3176] CHIP:DMG: } - [1658476127.775591][3171:3176] CHIP:DMG: - [1658476127.775627][3171:3176] CHIP:DMG: StatusIB = - [1658476127.775666][3171:3176] CHIP:DMG: { - [1658476127.775704][3171:3176] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476127.775745][3171:3176] CHIP:DMG: }, - [1658476127.775782][3171:3176] CHIP:DMG: - [1658476127.775816][3171:3176] CHIP:DMG: }, - [1658476127.775858][3171:3176] CHIP:DMG: - [1658476127.775887][3171:3176] CHIP:DMG: AttributeStatusIB = - [1658476127.775919][3171:3176] CHIP:DMG: { - [1658476127.775950][3171:3176] CHIP:DMG: AttributePathIB = - [1658476127.775986][3171:3176] CHIP:DMG: { - [1658476127.776025][3171:3176] CHIP:DMG: Endpoint = 0x0, - [1658476127.776069][3171:3176] CHIP:DMG: Cluster = 0x1f, - [1658476127.776113][3171:3176] CHIP:DMG: Attribute = 0x0000_0000, - [1658476127.776156][3171:3176] CHIP:DMG: ListIndex = Null, - [1658476127.776193][3171:3176] CHIP:DMG: } - [1658476127.776234][3171:3176] CHIP:DMG: - [1658476127.776270][3171:3176] CHIP:DMG: StatusIB = - [1658476127.776306][3171:3176] CHIP:DMG: { - [1658476127.776345][3171:3176] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476127.776383][3171:3176] CHIP:DMG: }, - [1658476127.776420][3171:3176] CHIP:DMG: - [1658476127.776451][3171:3176] CHIP:DMG: }, - [1658476127.776494][3171:3176] CHIP:DMG: - [1658476127.776523][3171:3176] CHIP:DMG: AttributeStatusIB = - [1658476127.776558][3171:3176] CHIP:DMG: { - [1658476127.776589][3171:3176] CHIP:DMG: AttributePathIB = - [1658476127.776625][3171:3176] CHIP:DMG: { - [1658476127.776664][3171:3176] CHIP:DMG: Endpoint = 0x0, - [1658476127.776705][3171:3176] CHIP:DMG: Cluster = 0x1f, - [1658476127.776746][3171:3176] CHIP:DMG: Attribute = 0x0000_0000, - [1658476127.776785][3171:3176] CHIP:DMG: ListIndex = Null, - [1658476127.776823][3171:3176] CHIP:DMG: } - [1658476127.776864][3171:3176] CHIP:DMG: - [1658476127.776900][3171:3176] CHIP:DMG: StatusIB = - [1658476127.776937][3171:3176] CHIP:DMG: { - [1658476127.776974][3171:3176] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658476127.777013][3171:3176] CHIP:DMG: }, - [1658476127.777054][3171:3176] CHIP:DMG: - [1658476127.777088][3171:3176] CHIP:DMG: }, - [1658476127.777123][3171:3176] CHIP:DMG: - [1658476127.777152][3171:3176] CHIP:DMG: ], - [1658476127.777197][3171:3176] CHIP:DMG: - [1658476127.777226][3171:3176] CHIP:DMG: InteractionModelRevision = 1 - [1658476127.777255][3171:3176] CHIP:DMG: } - [1658476127.777405][3171:3176] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658476127.777446][3171:3176] CHIP:TOO: Response Failu - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "6", + AuthMode: "3", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: invalid value (not 1-3) Subjects field: null Targets - field: null" + "Step 33:TH1 writes AccessControl cluster ACL attribute, value is list + of AccessControlEntryStruct containing 2 elements" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 4, "subjects": null, "targets":null}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Authmode . - [1658476412.664216][3192:3197] CHIP:DMG: WriteResponseMessage = - [1658476412.664247][3192:3197] CHIP:DMG: { - [1658476412.664275][3192:3197] CHIP:DMG: AttributeStatusIBs = - [1658476412.664313][3192:3197] CHIP:DMG: [ - [1658476412.664342][3192:3197] CHIP:DMG: AttributeStatusIB = - [1658476412.664376][3192:3197] CHIP:DMG: { - [1658476412.664408][3192:3197] CHIP:DMG: AttributePathIB = - [1658476412.664448][3192:3197] CHIP:DMG: { - [1658476412.664487][3192:3197] CHIP:DMG: Endpoint = 0x0, - [1658476412.664529][3192:3197] CHIP:DMG: Cluster = 0x1f, - [1658476412.664570][3192:3197] CHIP:DMG: Attribute = 0x0000_0000, - [1658476412.664608][3192:3197] CHIP:DMG: } - [1658476412.664651][3192:3197] CHIP:DMG: - [1658476412.664690][3192:3197] CHIP:DMG: StatusIB = - [1658476412.664728][3192:3197] CHIP:DMG: { - [1658476412.664765][3192:3197] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476412.664804][3192:3197] CHIP:DMG: }, - [1658476412.664841][3192:3197] CHIP:DMG: - [1658476412.664872][3192:3197] CHIP:DMG: }, - [1658476412.664914][3192:3197] CHIP:DMG: - [1658476412.664943][3192:3197] CHIP:DMG: AttributeStatusIB = - [1658476412.664975][3192:3197] CHIP:DMG: { - [1658476412.665005][3192:3197] CHIP:DMG: AttributePathIB = - [1658476412.665041][3192:3197] CHIP:DMG: { - [1658476412.665079][3192:3197] CHIP:DMG: Endpoint = 0x0, - [1658476412.665118][3192:3197] CHIP:DMG: Cluster = 0x1f, - [1658476412.665159][3192:3197] CHIP:DMG: Attribute = 0x0000_0000, - [1658476412.665198][3192:3197] CHIP:DMG: ListIndex = Null, - [1658476412.665236][3192:3197] CHIP:DMG: } - [1658476412.665276][3192:3197] CHIP:DMG: - [1658476412.665311][3192:3197] CHIP:DMG: StatusIB = - [1658476412.665347][3192:3197] CHIP:DMG: { - [1658476412.665384][3192:3197] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476412.665421][3192:3197] CHIP:DMG: }, - [1658476412.665458][3192:3197] CHIP:DMG: - [1658476412.665491][3192:3197] CHIP:DMG: }, - [1658476412.665532][3192:3197] CHIP:DMG: - [1658476412.665561][3192:3197] CHIP:DMG: AttributeStatusIB = - [1658476412.665593][3192:3197] CHIP:DMG: { - [1658476412.665624][3192:3197] CHIP:DMG: AttributePathIB = - [1658476412.665659][3192:3197] CHIP:DMG: { - [1658476412.665776][3192:3197] CHIP:DMG: Endpoint = 0x0, - [1658476412.665819][3192:3197] CHIP:DMG: Cluster = 0x1f, - [1658476412.665860][3192:3197] CHIP:DMG: Attribute = 0x0000_0000, - [1658476412.665899][3192:3197] CHIP:DMG: ListIndex = Null, - [1658476412.665938][3192:3197] CHIP:DMG: } - [1658476412.665980][3192:3197] CHIP:DMG: - [1658476412.666015][3192:3197] CHIP:DMG: StatusIB = - [1658476412.666051][3192:3197] CHIP:DMG: { - [1658476412.666088][3192:3197] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658476412.666130][3192:3197] CHIP:DMG: }, - [1658476412.666167][3192:3197] CHIP:DMG: - [1658476412.666197][3192:3197] CHIP:DMG: }, - [1658476412.666232][3192:3197] CHIP:DMG: - [1658476412.666260][3192:3197] CHIP:DMG: ], - [1658476412.666304][3192:3197] CHIP:DMG: - [1658476412.666332][3192:3197] CHIP:DMG: InteractionModelRevision = 1 - [1658476412.666361][3192:3197] CHIP:DMG: } - [1658476412.666509][3192:3197] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658476412.666548][3192:3197] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - [1658476412.666640][3192:3197] CHIP:EM: Sending Standalone Ack for MessageCounter:222498029 on exchange 30870i - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "6", + AuthMode: "4", + Subjects: null, + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: [0] Targets field: null" + "Step 34:TH1 writes AccessControl cluster ACL attribute, value is list + of AccessControlEntryStruct containing 2 elements" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [0], "targets":null}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Subject field . - [1658476622.665126][3229:3234] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658476622.665195][3229:3234] CHIP:DMG: WriteResponseMessage = - [1658476622.665225][3229:3234] CHIP:DMG: { - [1658476622.665254][3229:3234] CHIP:DMG: AttributeStatusIBs = - [1658476622.665291][3229:3234] CHIP:DMG: [ - [1658476622.665318][3229:3234] CHIP:DMG: AttributeStatusIB = - [1658476622.665353][3229:3234] CHIP:DMG: { - [1658476622.665390][3229:3234] CHIP:DMG: AttributePathIB = - [1658476622.665428][3229:3234] CHIP:DMG: { - [1658476622.665472][3229:3234] CHIP:DMG: Endpoint = 0x0, - [1658476622.665517][3229:3234] CHIP:DMG: Cluster = 0x1f, - [1658476622.665562][3229:3234] CHIP:DMG: Attribute = 0x0000_0000, - [1658476622.665604][3229:3234] CHIP:DMG: } - [1658476622.665652][3229:3234] CHIP:DMG: - [1658476622.665692][3229:3234] CHIP:DMG: StatusIB = - [1658476622.665734][3229:3234] CHIP:DMG: { - [1658476622.665776][3229:3234] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476622.665821][3229:3234] CHIP:DMG: }, - [1658476622.665863][3229:3234] CHIP:DMG: - [1658476622.665902][3229:3234] CHIP:DMG: }, - [1658476622.665953][3229:3234] CHIP:DMG: - [1658476622.665985][3229:3234] CHIP:DMG: AttributeStatusIB = - [1658476622.666023][3229:3234] CHIP:DMG: { - [1658476622.666060][3229:3234] CHIP:DMG: AttributePathIB = - [1658476622.666100][3229:3234] CHIP:DMG: { - [1658476622.666144][3229:3234] CHIP:DMG: Endpoint = 0x0, - [1658476622.666192][3229:3234] CHIP:DMG: Cluster = 0x1f, - [1658476622.666236][3229:3234] CHIP:DMG: Attribute = 0x0000_0000, - [1658476622.666280][3229:3234] CHIP:DMG: ListIndex = Null, - [1658476622.666321][3229:3234] CHIP:DMG: } - [1658476622.666366][3229:3234] CHIP:DMG: - [1658476622.666410][3229:3234] CHIP:DMG: StatusIB = - [1658476622.666450][3229:3234] CHIP:DMG: { - [1658476622.666491][3229:3234] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476622.666533][3229:3234] CHIP:DMG: }, - [1658476622.666574][3229:3234] CHIP:DMG: - [1658476622.666631][3229:3234] CHIP:DMG: }, - [1658476622.666686][3229:3234] CHIP:DMG: - [1658476622.666717][3229:3234] CHIP:DMG: AttributeStatusIB = - [1658476622.666755][3229:3234] CHIP:DMG: { - [1658476622.666787][3229:3234] CHIP:DMG: AttributePathIB = - [1658476622.666816][3229:3234] CHIP:DMG: { - [1658476622.666847][3229:3234] CHIP:DMG: Endpoint = 0x0, - [1658476622.666932][3229:3234] CHIP:DMG: Cluster = 0x1f, - [1658476622.666970][3229:3234] CHIP:DMG: Attribute = 0x0000_0000, - [1658476622.667004][3229:3234] CHIP:DMG: ListIndex = Null, - [1658476622.667035][3229:3234] CHIP:DMG: } - [1658476622.667068][3229:3234] CHIP:DMG: - [1658476622.667097][3229:3234] CHIP:DMG: StatusIB = - [1658476622.667127][3229:3234] CHIP:DMG: { - [1658476622.667157][3229:3234] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658476622.667188][3229:3234] CHIP:DMG: }, - [1658476622.667220][3229:3234] CHIP:DMG: - [1658476622.667246][3229:3234] CHIP:DMG: }, - [1658476622.667276][3229:3234] CHIP:DMG: - [1658476622.667301][3229:3234] CHIP:DMG: ], - [1658476622.667338][3229:3234] CHIP:DMG: - [1658476622.667361][3229:3234] CHIP:DMG: InteractionModelRevision = 1 - [1658476622.667384][3229:3234] CHIP:DMG: } - [1658476622.667510][3229:3234] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: [0], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: [0xFFFFFFFFFFFFFFFF] Targets - field: null" + "Step 35:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: + [0xFFFFFFFFFFFFFFFF] Targets field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [18446744073709551615], "targets":null}]' 1 0 - - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Subject field . - 1658476861.356730][3250:3255] CHIP:DMG: { - [1658476861.356767][3250:3255] CHIP:DMG: AttributeStatusIBs = - [1658476861.356813][3250:3255] CHIP:DMG: [ - [1658476861.356839][3250:3255] CHIP:DMG: AttributeStatusIB = - [1658476861.356870][3250:3255] CHIP:DMG: { - [1658476861.356898][3250:3255] CHIP:DMG: AttributePathIB = - [1658476861.356985][3250:3255] CHIP:DMG: { - [1658476861.357021][3250:3255] CHIP:DMG: Endpoint = 0x0, - [1658476861.357056][3250:3255] CHIP:DMG: Cluster = 0x1f, - [1658476861.357091][3250:3255] CHIP:DMG: Attribute = 0x0000_0000, - [1658476861.357123][3250:3255] CHIP:DMG: } - [1658476861.357159][3250:3255] CHIP:DMG: - [1658476861.357191][3250:3255] CHIP:DMG: StatusIB = - [1658476861.357225][3250:3255] CHIP:DMG: { - [1658476861.357257][3250:3255] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476861.357290][3250:3255] CHIP:DMG: }, - [1658476861.357326][3250:3255] CHIP:DMG: - [1658476861.357354][3250:3255] CHIP:DMG: }, - [1658476861.357391][3250:3255] CHIP:DMG: - [1658476861.357417][3250:3255] CHIP:DMG: AttributeStatusIB = - [1658476861.357444][3250:3255] CHIP:DMG: { - [1658476861.357470][3250:3255] CHIP:DMG: AttributePathIB = - [1658476861.357501][3250:3255] CHIP:DMG: { - [1658476861.357534][3250:3255] CHIP:DMG: Endpoint = 0x0, - [1658476861.357569][3250:3255] CHIP:DMG: Cluster = 0x1f, - [1658476861.357604][3250:3255] CHIP:DMG: Attribute = 0x0000_0000, - [1658476861.357640][3250:3255] CHIP:DMG: ListIndex = Null, - [1658476861.357672][3250:3255] CHIP:DMG: } - [1658476861.357708][3250:3255] CHIP:DMG: - [1658476861.357738][3250:3255] CHIP:DMG: StatusIB = - [1658476861.357769][3250:3255] CHIP:DMG: { - [1658476861.357801][3250:3255] CHIP:DMG: status = 0x00 (SUCCESS), - [1658476861.357833][3250:3255] CHIP:DMG: }, - [1658476861.357866][3250:3255] CHIP:DMG: - [1658476861.357894][3250:3255] CHIP:DMG: }, - [1658476861.357932][3250:3255] CHIP:DMG: - [1658476861.357957][3250:3255] CHIP:DMG: AttributeStatusIB = - [1658476861.357984][3250:3255] CHIP:DMG: { - [1658476861.358011][3250:3255] CHIP:DMG: AttributePathIB = - [1658476861.358041][3250:3255] CHIP:DMG: { - [1658476861.358073][3250:3255] CHIP:DMG: Endpoint = 0x0, - [1658476861.358108][3250:3255] CHIP:DMG: Cluster = 0x1f, - [1658476861.358142][3250:3255] CHIP:DMG: Attribute = 0x0000_0000, - [1658476861.358175][3250:3255] CHIP:DMG: ListIndex = Null, - [1658476861.358207][3250:3255] CHIP:DMG: } - [1658476861.358241][3250:3255] CHIP:DMG: - [1658476861.358272][3250:3255] CHIP:DMG: StatusIB = - [1658476861.358303][3250:3255] CHIP:DMG: { - [1658476861.358336][3250:3255] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658476861.358368][3250:3255] CHIP:DMG: }, - [1658476861.358399][3250:3255] CHIP:DMG: - [1658476861.358427][3250:3255] CHIP:DMG: }, - [1658476861.358457][3250:3255] CHIP:DMG: - [1658476861.358482][3250:3255] CHIP:DMG: ], - [1658476861.358519][3250:3255] CHIP:DMG: - [1658476861.358544][3250:3255] CHIP:DMG: InteractionModelRevision = 1 - [1658476861.358568][3250:3255] CHIP:DMG: } - [1658476861.358726][3250:3255] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658476861.358763][3250:3255] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: ["18446744073709551615"], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: [0xFFFFFFFD00000000] Targets - field: null" + "Step 36:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: + [0xFFFFFFFD00000000] Targets field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [18446744060824649728], "targets": null}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Subject field . - 8477037.056167][3264:3269] CHIP:DMG: { - [1658477037.056200][3264:3269] CHIP:DMG: AttributePathIB = - [1658477037.056238][3264:3269] CHIP:DMG: { - [1658477037.056282][3264:3269] CHIP:DMG: Endpoint = 0x0, - [1658477037.056324][3264:3269] CHIP:DMG: Cluster = 0x1f, - [1658477037.056368][3264:3269] CHIP:DMG: Attribute = 0x0000_0000, - [1658477037.056405][3264:3269] CHIP:DMG: } - [1658477037.056448][3264:3269] CHIP:DMG: - [1658477037.056486][3264:3269] CHIP:DMG: StatusIB = - [1658477037.056529][3264:3269] CHIP:DMG: { - [1658477037.056568][3264:3269] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477037.056609][3264:3269] CHIP:DMG: }, - [1658477037.056646][3264:3269] CHIP:DMG: - [1658477037.056680][3264:3269] CHIP:DMG: }, - [1658477037.056723][3264:3269] CHIP:DMG: - [1658477037.056753][3264:3269] CHIP:DMG: AttributeStatusIB = - [1658477037.056787][3264:3269] CHIP:DMG: { - [1658477037.056823][3264:3269] CHIP:DMG: AttributePathIB = - [1658477037.056860][3264:3269] CHIP:DMG: { - [1658477037.056898][3264:3269] CHIP:DMG: Endpoint = 0x0, - [1658477037.056940][3264:3269] CHIP:DMG: Cluster = 0x1f, - [1658477037.056985][3264:3269] CHIP:DMG: Attribute = 0x0000_0000, - [1658477037.057024][3264:3269] CHIP:DMG: ListIndex = Null, - [1658477037.057062][3264:3269] CHIP:DMG: } - [1658477037.057102][3264:3269] CHIP:DMG: - [1658477037.057143][3264:3269] CHIP:DMG: StatusIB = - [1658477037.057183][3264:3269] CHIP:DMG: { - [1658477037.057225][3264:3269] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477037.057264][3264:3269] CHIP:DMG: }, - [1658477037.057303][3264:3269] CHIP:DMG: - [1658477037.057336][3264:3269] CHIP:DMG: }, - [1658477037.057381][3264:3269] CHIP:DMG: - [1658477037.057411][3264:3269] CHIP:DMG: AttributeStatusIB = - [1658477037.057443][3264:3269] CHIP:DMG: { - [1658477037.057474][3264:3269] CHIP:DMG: AttributePathIB = - [1658477037.057511][3264:3269] CHIP:DMG: { - [1658477037.057549][3264:3269] CHIP:DMG: Endpoint = 0x0, - [1658477037.057589][3264:3269] CHIP:DMG: Cluster = 0x1f, - [1658477037.057629][3264:3269] CHIP:DMG: Attribute = 0x0000_0000, - [1658477037.057668][3264:3269] CHIP:DMG: ListIndex = Null, - [1658477037.057706][3264:3269] CHIP:DMG: } - [1658477037.057746][3264:3269] CHIP:DMG: - [1658477037.057782][3264:3269] CHIP:DMG: StatusIB = - [1658477037.057819][3264:3269] CHIP:DMG: { - [1658477037.057857][3264:3269] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658477037.057899][3264:3269] CHIP:DMG: }, - [1658477037.057936][3264:3269] CHIP:DMG: - [1658477037.057969][3264:3269] CHIP:DMG: }, - [1658477037.058005][3264:3269] CHIP:DMG: - [1658477037.058033][3264:3269] CHIP:DMG: ], - [1658477037.058078][3264:3269] CHIP:DMG: - [1658477037.058107][3264:3269] CHIP:DMG: InteractionModelRevision = 1 - [1658477037.058135][3264:3269] CHIP:DMG: } - [1658477037.058295][3264:3269] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658477037.058334][3264:3269] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - [1658477037.058400][3264:3269] CHIP:EM: Sending Standalone Ack for MessageCounter:171679528 on exchange 41642i - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: ["18446744060824649728"], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements struct + "Step 37:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements struct Privilege field: Administer (5) AuthMode field: CASE (2) Subjects field: [N1] Targets field: null struct Privilege field: Operate (3) AuthMode field: CASE (2) Subjects field: [0xFFFFFFFFFFFF0000] Targets field: null" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [18446744073709486080], "targets":null}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Subject field . - 658477229.869987][3634:3640] CHIP:EM: Removed CHIP MessageCounter:189477251 from RetransTable on exchange 22058i - [1658477229.870031][3634:3640] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658477229.870093][3634:3640] CHIP:DMG: WriteResponseMessage = - [1658477229.870124][3634:3640] CHIP:DMG: { - [1658477229.870146][3634:3640] CHIP:DMG: AttributeStatusIBs = - [1658477229.870177][3634:3640] CHIP:DMG: [ - [1658477229.870201][3634:3640] CHIP:DMG: AttributeStatusIB = - [1658477229.870232][3634:3640] CHIP:DMG: { - [1658477229.870262][3634:3640] CHIP:DMG: AttributePathIB = - [1658477229.870299][3634:3640] CHIP:DMG: { - [1658477229.870336][3634:3640] CHIP:DMG: Endpoint = 0x0, - [1658477229.870373][3634:3640] CHIP:DMG: Cluster = 0x1f, - [1658477229.870407][3634:3640] CHIP:DMG: Attribute = 0x0000_0000, - [1658477229.870442][3634:3640] CHIP:DMG: } - [1658477229.870481][3634:3640] CHIP:DMG: - [1658477229.870517][3634:3640] CHIP:DMG: StatusIB = - [1658477229.870552][3634:3640] CHIP:DMG: { - [1658477229.870623][3634:3640] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477229.870658][3634:3640] CHIP:DMG: }, - [1658477229.870689][3634:3640] CHIP:DMG: - [1658477229.870716][3634:3640] CHIP:DMG: }, - [1658477229.870756][3634:3640] CHIP:DMG: - [1658477229.870780][3634:3640] CHIP:DMG: AttributeStatusIB = - [1658477229.870809][3634:3640] CHIP:DMG: { - [1658477229.870836][3634:3640] CHIP:DMG: AttributePathIB = - [1658477229.870871][3634:3640] CHIP:DMG: { - [1658477229.870906][3634:3640] CHIP:DMG: Endpoint = 0x0, - [1658477229.870943][3634:3640] CHIP:DMG: Cluster = 0x1f, - [1658477229.870979][3634:3640] CHIP:DMG: Attribute = 0x0000_0000, - [1658477229.871014][3634:3640] CHIP:DMG: ListIndex = Null, - [1658477229.871048][3634:3640] CHIP:DMG: } - [1658477229.871086][3634:3640] CHIP:DMG: - [1658477229.871121][3634:3640] CHIP:DMG: StatusIB = - [1658477229.871156][3634:3640] CHIP:DMG: { - [1658477229.871191][3634:3640] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477229.871226][3634:3640] CHIP:DMG: }, - [1658477229.871260][3634:3640] CHIP:DMG: - [1658477229.871287][3634:3640] CHIP:DMG: }, - [1658477229.871324][3634:3640] CHIP:DMG: - [1658477229.871348][3634:3640] CHIP:DMG: AttributeStatusIB = - [1658477229.871376][3634:3640] CHIP:DMG: { - [1658477229.871404][3634:3640] CHIP:DMG: AttributePathIB = - [1658477229.871436][3634:3640] CHIP:DMG: { - [1658477229.871471][3634:3640] CHIP:DMG: Endpoint = 0x0, - [1658477229.871507][3634:3640] CHIP:DMG: Cluster = 0x1f, - [1658477229.871543][3634:3640] CHIP:DMG: Attribute = 0x0000_0000, - [1658477229.871578][3634:3640] CHIP:DMG: ListIndex = Null, - [1658477229.871611][3634:3640] CHIP:DMG: } - [1658477229.871648][3634:3640] CHIP:DMG: - [1658477229.871681][3634:3640] CHIP:DMG: StatusIB = - [1658477229.871711][3634:3640] CHIP:DMG: { - [1658477229.871746][3634:3640] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658477229.871778][3634:3640] CHIP:DMG: }, - [1658477229.871809][3634:3640] CHIP:DMG: - [1658477229.871836][3634:3640] CHIP:DMG: }, - [1658477229.871866][3634:3640] CHIP:DMG: - [1658477229.871889][3634:3640] CHIP:DMG: ], - [1658477229.871925][3634:3640] CHIP:DMG: - [1658477229.871949][3634:3640] CHIP:DMG: InteractionModelRevision = 1 - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: ["18446744073709486080"], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: null Targets field: [{}]" + "Step 38:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: null Targets + field: [{}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": null }]}]' 1 0 - - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Target field . - 1658477371.966712][3679:3684] CHIP:EM: Removed CHIP MessageCounter:138419251 from RetransTable on exchange 40076i - [1658477371.966756][3679:3684] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658477371.966830][3679:3684] CHIP:DMG: WriteResponseMessage = - [1658477371.966860][3679:3684] CHIP:DMG: { - [1658477371.966885][3679:3684] CHIP:DMG: AttributeStatusIBs = - [1658477371.966923][3679:3684] CHIP:DMG: [ - [1658477371.966959][3679:3684] CHIP:DMG: AttributeStatusIB = - [1658477371.967002][3679:3684] CHIP:DMG: { - [1658477371.967043][3679:3684] CHIP:DMG: AttributePathIB = - [1658477371.967092][3679:3684] CHIP:DMG: { - [1658477371.967135][3679:3684] CHIP:DMG: Endpoint = 0x0, - [1658477371.967185][3679:3684] CHIP:DMG: Cluster = 0x1f, - [1658477371.967230][3679:3684] CHIP:DMG: Attribute = 0x0000_0000, - [1658477371.967271][3679:3684] CHIP:DMG: } - [1658477371.967317][3679:3684] CHIP:DMG: - [1658477371.967358][3679:3684] CHIP:DMG: StatusIB = - [1658477371.967400][3679:3684] CHIP:DMG: { - [1658477371.967443][3679:3684] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477371.967484][3679:3684] CHIP:DMG: }, - [1658477371.967525][3679:3684] CHIP:DMG: - [1658477371.967560][3679:3684] CHIP:DMG: }, - [1658477371.967607][3679:3684] CHIP:DMG: - [1658477371.967639][3679:3684] CHIP:DMG: AttributeStatusIB = - [1658477371.967676][3679:3684] CHIP:DMG: { - [1658477371.967709][3679:3684] CHIP:DMG: AttributePathIB = - [1658477371.967741][3679:3684] CHIP:DMG: { - [1658477371.967774][3679:3684] CHIP:DMG: Endpoint = 0x0, - [1658477371.967818][3679:3684] CHIP:DMG: Cluster = 0x1f, - [1658477371.967862][3679:3684] CHIP:DMG: Attribute = 0x0000_0000, - [1658477371.967898][3679:3684] CHIP:DMG: ListIndex = Null, - [1658477371.967930][3679:3684] CHIP:DMG: } - [1658477371.967966][3679:3684] CHIP:DMG: - [1658477371.968000][3679:3684] CHIP:DMG: StatusIB = - [1658477371.968035][3679:3684] CHIP:DMG: { - [1658477371.968069][3679:3684] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477371.968101][3679:3684] CHIP:DMG: }, - [1658477371.968133][3679:3684] CHIP:DMG: - [1658477371.968159][3679:3684] CHIP:DMG: }, - [1658477371.968195][3679:3684] CHIP:DMG: - [1658477371.968220][3679:3684] CHIP:DMG: AttributeStatusIB = - [1658477371.968247][3679:3684] CHIP:DMG: { - [1658477371.968274][3679:3684] CHIP:DMG: AttributePathIB = - [1658477371.968305][3679:3684] CHIP:DMG: { - [1658477371.968338][3679:3684] CHIP:DMG: Endpoint = 0x0, - [1658477371.968372][3679:3684] CHIP:DMG: Cluster = 0x1f, - [1658477371.968406][3679:3684] CHIP:DMG: Attribute = 0x0000_0000, - [1658477371.968440][3679:3684] CHIP:DMG: ListIndex = Null, - [1658477371.968472][3679:3684] CHIP:DMG: } - [1658477371.968506][3679:3684] CHIP:DMG: - [1658477371.968541][3679:3684] CHIP:DMG: StatusIB = - [1658477371.968573][3679:3684] CHIP:DMG: { - [1658477371.968604][3679:3684] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658477371.968637][3679:3684] CHIP:DMG: }, - [1658477371.968668][3679:3684] CHIP:DMG: - [1658477371.968696][3679:3684] CHIP:DMG: }, - [1658477371.968726][3679:3684] CHIP:DMG: - [1658477371.968751][3679:3684] CHIP:DMG: ], - [1658477371.968789][3679:3684] CHIP:DMG: - [1658477371.968814][3679:3684] CHIP:DMG: InteractionModelRevision = 1 - [1658477371.968838][3679:3684] CHIP:DMG: } - [1658477371.968974][3679:3684] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: + [{ Cluster: null, Endpoint: null, DeviceType: null }], + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: null Targets field: - [{Cluster: 0xFFFFFFFF}]" + "Step 39:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: null Targets + field: [{Cluster: 0xFFFFFFFF}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 4294967295, "endpoint": null, "deviceType": null }]}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Target field . - [1657617852.177018][8933:8938] CHIP:DMG: WriteResponseMessage = - [1657617852.177055][8933:8938] CHIP:DMG: { - [1657617852.177086][8933:8938] CHIP:DMG: AttributeStatusIBs = - [1657617852.177130][8933:8938] CHIP:DMG: [ - [1657617852.177163][8933:8938] CHIP:DMG: AttributeStatusIB = - [1657617852.177204][8933:8938] CHIP:DMG: { - [1657617852.177243][8933:8938] CHIP:DMG: AttributePathIB = - [1657617852.177284][8933:8938] CHIP:DMG: { - [1657617852.177329][8933:8938] CHIP:DMG: Endpoint = 0x0, - [1657617852.177375][8933:8938] CHIP:DMG: Cluster = 0x1f, - [1657617852.177418][8933:8938] CHIP:DMG: Attribute = 0x0000_0000, - [1657617852.177464][8933:8938] CHIP:DMG: } - [1657617852.177514][8933:8938] CHIP:DMG: - [1657617852.177558][8933:8938] CHIP:DMG: StatusIB = - [1657617852.177604][8933:8938] CHIP:DMG: { - [1657617852.177649][8933:8938] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617852.177692][8933:8938] CHIP:DMG: }, - [1657617852.177732][8933:8938] CHIP:DMG: - [1657617852.177765][8933:8938] CHIP:DMG: }, - [1657617852.177811][8933:8938] CHIP:DMG: - [1657617852.177843][8933:8938] CHIP:DMG: AttributeStatusIB = - [1657617852.177877][8933:8938] CHIP:DMG: { - [1657617852.177911][8933:8938] CHIP:DMG: AttributePathIB = - [1657617852.177950][8933:8938] CHIP:DMG: { - [1657617852.177996][8933:8938] CHIP:DMG: Endpoint = 0x0, - [1657617852.178042][8933:8938] CHIP:DMG: Cluster = 0x1f, - [1657617852.178090][8933:8938] CHIP:DMG: Attribute = 0x0000_0000, - [1657617852.178133][8933:8938] CHIP:DMG: ListIndex = Null, - [1657617852.178173][8933:8938] CHIP:DMG: } - [1657617852.178217][8933:8938] CHIP:DMG: - [1657617852.178261][8933:8938] CHIP:DMG: StatusIB = - [1657617852.178301][8933:8938] CHIP:DMG: { - [1657617852.178340][8933:8938] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617852.178414][8933:8938] CHIP:DMG: }, - [1657617852.178457][8933:8938] CHIP:DMG: - [1657617852.178489][8933:8938] CHIP:DMG: }, - [1657617852.178535][8933:8938] CHIP:DMG: - [1657617852.178566][8933:8938] CHIP:DMG: AttributeStatusIB = - [1657617852.178601][8933:8938] CHIP:DMG: { - [1657617852.178634][8933:8938] CHIP:DMG: AttributePathIB = - [1657617852.178673][8933:8938] CHIP:DMG: { - [1657617852.178715][8933:8938] CHIP:DMG: Endpoint = 0x0, - [1657617852.178758][8933:8938] CHIP:DMG: Cluster = 0x1f, - [1657617852.178801][8933:8938] CHIP:DMG: Attribute = 0x0000_0000, - [1657617852.178847][8933:8938] CHIP:DMG: ListIndex = Null, - [1657617852.178888][8933:8938] CHIP:DMG: } - [1657617852.178932][8933:8938] CHIP:DMG: - [1657617852.178971][8933:8938] CHIP:DMG: StatusIB = - [1657617852.179010][8933:8938] CHIP:DMG: { - [1657617852.179053][8933:8938] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1657617852.179094][8933:8938] CHIP:DMG: }, - [1657617852.179135][8933:8938] CHIP:DMG: - [1657617852.179168][8933:8938] CHIP:DMG: }, - [1657617852.179206][8933:8938] CHIP:DMG: - [1657617852.179237][8933:8938] CHIP:DMG: ], - [1657617852.179284][8933:8938] CHIP:DMG: - [1657617852.179315][8933:8938] CHIP:DMG: InteractionModelRevision = 1 - [1657617852.179346][8933:8938] CHIP:DMG: } - [1657617852.179509][8933:8938] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1657617852.179550][8933:8938] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: + [ + { + Cluster: 4294967295, + Endpoint: null, + DeviceType: null, + }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1. + "Step 40:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements 1. struct Privilege field: Administer (5) AuthMode field: CASE (2) Subjects field: [N1] Targets field: null 2. struct Privilege field: Operate (3) AuthMode field: CASE (2) Subjects field: null Targets field: [{Endpoint: 65535}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 65535, "deviceType": null }]}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Target field . - [1657617920.044059][8948:8953] CHIP:DMG: { - [1657617920.044085][8948:8953] CHIP:DMG: AttributeStatusIBs = - [1657617920.044120][8948:8953] CHIP:DMG: [ - [1657617920.044148][8948:8953] CHIP:DMG: AttributeStatusIB = - [1657617920.044181][8948:8953] CHIP:DMG: { - [1657617920.044211][8948:8953] CHIP:DMG: AttributePathIB = - [1657617920.044251][8948:8953] CHIP:DMG: { - [1657617920.044288][8948:8953] CHIP:DMG: Endpoint = 0x0, - [1657617920.044327][8948:8953] CHIP:DMG: Cluster = 0x1f, - [1657617920.044365][8948:8953] CHIP:DMG: Attribute = 0x0000_0000, - [1657617920.044401][8948:8953] CHIP:DMG: } - [1657617920.044440][8948:8953] CHIP:DMG: - [1657617920.044475][8948:8953] CHIP:DMG: StatusIB = - [1657617920.044512][8948:8953] CHIP:DMG: { - [1657617920.044548][8948:8953] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617920.044585][8948:8953] CHIP:DMG: }, - [1657617920.044625][8948:8953] CHIP:DMG: - [1657617920.044656][8948:8953] CHIP:DMG: }, - [1657617920.044697][8948:8953] CHIP:DMG: - [1657617920.044725][8948:8953] CHIP:DMG: AttributeStatusIB = - [1657617920.044755][8948:8953] CHIP:DMG: { - [1657617920.044784][8948:8953] CHIP:DMG: AttributePathIB = - [1657617920.044818][8948:8953] CHIP:DMG: { - [1657617920.044857][8948:8953] CHIP:DMG: Endpoint = 0x0, - [1657617920.044895][8948:8953] CHIP:DMG: Cluster = 0x1f, - [1657617920.044934][8948:8953] CHIP:DMG: Attribute = 0x0000_0000, - [1657617920.044975][8948:8953] CHIP:DMG: ListIndex = Null, - [1657617920.045010][8948:8953] CHIP:DMG: } - [1657617920.045049][8948:8953] CHIP:DMG: - [1657617920.045084][8948:8953] CHIP:DMG: StatusIB = - [1657617920.045118][8948:8953] CHIP:DMG: { - [1657617920.045158][8948:8953] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617920.045193][8948:8953] CHIP:DMG: }, - [1657617920.045229][8948:8953] CHIP:DMG: - [1657617920.045258][8948:8953] CHIP:DMG: }, - [1657617920.045298][8948:8953] CHIP:DMG: - [1657617920.045326][8948:8953] CHIP:DMG: AttributeStatusIB = - [1657617920.045356][8948:8953] CHIP:DMG: { - [1657617920.045385][8948:8953] CHIP:DMG: AttributePathIB = - [1657617920.045419][8948:8953] CHIP:DMG: { - [1657617920.045455][8948:8953] CHIP:DMG: Endpoint = 0x0, - [1657617920.045493][8948:8953] CHIP:DMG: Cluster = 0x1f, - [1657617920.045531][8948:8953] CHIP:DMG: Attribute = 0x0000_0000, - [1657617920.045567][8948:8953] CHIP:DMG: ListIndex = Null, - [1657617920.045602][8948:8953] CHIP:DMG: } - [1657617920.045642][8948:8953] CHIP:DMG: - [1657617920.045675][8948:8953] CHIP:DMG: StatusIB = - [1657617920.045711][8948:8953] CHIP:DMG: { - [1657617920.045745][8948:8953] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1657617920.045781][8948:8953] CHIP:DMG: }, - [1657617920.045815][8948:8953] CHIP:DMG: - [1657617920.045846][8948:8953] CHIP:DMG: }, - [1657617920.045880][8948:8953] CHIP:DMG: - [1657617920.045907][8948:8953] CHIP:DMG: ], - [1657617920.045948][8948:8953] CHIP:DMG: - [1657617920.045976][8948:8953] CHIP:DMG: InteractionModelRevision = 1 - [1657617920.046002][8948:8953] CHIP:DMG: } - [1657617920.046147][8948:8953] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1657617920.046184][8948:8953] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: + [ + { + Cluster: null, + Endpoint: 65535, + DeviceType: null, + }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: null Targets field: - [{DeviceType: 0xFFFFFFFF}]" + "Step 41:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: null Targets + field: [{DeviceType: 0xFFFFFFFF}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": 4294967295 }]}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Target field . - - - - [1657617920.044059][8948:8953] CHIP:DMG: { - [1657617920.044085][8948:8953] CHIP:DMG: AttributeStatusIBs = - [1657617920.044120][8948:8953] CHIP:DMG: [ - [1657617920.044148][8948:8953] CHIP:DMG: AttributeStatusIB = - [1657617920.044181][8948:8953] CHIP:DMG: { - [1657617920.044211][8948:8953] CHIP:DMG: AttributePathIB = - [1657617920.044251][8948:8953] CHIP:DMG: { - [1657617920.044288][8948:8953] CHIP:DMG: Endpoint = 0x0, - [1657617920.044327][8948:8953] CHIP:DMG: Cluster = 0x1f, - [1657617920.044365][8948:8953] CHIP:DMG: Attribute = 0x0000_0000, - [1657617920.044401][8948:8953] CHIP:DMG: } - [1657617920.044440][8948:8953] CHIP:DMG: - [1657617920.044475][8948:8953] CHIP:DMG: StatusIB = - [1657617920.044512][8948:8953] CHIP:DMG: { - [1657617920.044548][8948:8953] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617920.044585][8948:8953] CHIP:DMG: }, - [1657617920.044625][8948:8953] CHIP:DMG: - [1657617920.044656][8948:8953] CHIP:DMG: }, - [1657617920.044697][8948:8953] CHIP:DMG: - [1657617920.044725][8948:8953] CHIP:DMG: AttributeStatusIB = - [1657617920.044755][8948:8953] CHIP:DMG: { - [1657617920.044784][8948:8953] CHIP:DMG: AttributePathIB = - [1657617920.044818][8948:8953] CHIP:DMG: { - [1657617920.044857][8948:8953] CHIP:DMG: Endpoint = 0x0, - [1657617920.044895][8948:8953] CHIP:DMG: Cluster = 0x1f, - [1657617920.044934][8948:8953] CHIP:DMG: Attribute = 0x0000_0000, - [1657617920.044975][8948:8953] CHIP:DMG: ListIndex = Null, - [1657617920.045010][8948:8953] CHIP:DMG: } - [1657617920.045049][8948:8953] CHIP:DMG: - [1657617920.045084][8948:8953] CHIP:DMG: StatusIB = - [1657617920.045118][8948:8953] CHIP:DMG: { - [1657617920.045158][8948:8953] CHIP:DMG: status = 0x00 (SUCCESS), - [1657617920.045193][8948:8953] CHIP:DMG: }, - [1657617920.045229][8948:8953] CHIP:DMG: - [1657617920.045258][8948:8953] CHIP:DMG: }, - [1657617920.045298][8948:8953] CHIP:DMG: - [1657617920.045326][8948:8953] CHIP:DMG: AttributeStatusIB = - [1657617920.045356][8948:8953] CHIP:DMG: { - [1657617920.045385][8948:8953] CHIP:DMG: AttributePathIB = - [1657617920.045419][8948:8953] CHIP:DMG: { - [1657617920.045455][8948:8953] CHIP:DMG: Endpoint = 0x0, - [1657617920.045493][8948:8953] CHIP:DMG: Cluster = 0x1f, - [1657617920.045531][8948:8953] CHIP:DMG: Attribute = 0x0000_0000, - [1657617920.045567][8948:8953] CHIP:DMG: ListIndex = Null, - [1657617920.045602][8948:8953] CHIP:DMG: } - [1657617920.045642][8948:8953] CHIP:DMG: - [1657617920.045675][8948:8953] CHIP:DMG: StatusIB = - [1657617920.045711][8948:8953] CHIP:DMG: { - [1657617920.045745][8948:8953] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1657617920.045781][8948:8953] CHIP:DMG: }, - [1657617920.045815][8948:8953] CHIP:DMG: - [1657617920.045846][8948:8953] CHIP:DMG: }, - [1657617920.045880][8948:8953] CHIP:DMG: - [1657617920.045907][8948:8953] CHIP:DMG: ], - [1657617920.045948][8948:8953] CHIP:DMG: - [1657617920.045976][8948:8953] CHIP:DMG: InteractionModelRevision = 1 - [1657617920.046002][8948:8953] CHIP:DMG: } - [1657617920.046147][8948:8953] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1657617920.046184][8948:8953] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: + [ + { + Cluster: null, + Endpoint: null, + DeviceType: 4294967295, + }, + ], + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: null Targets field: - [{Endpoint: 22, DeviceType: 33}]" + "Step 42:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: null Targets + field: [{Endpoint: 22, DeviceType: 33}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 22, "deviceType": 33 }]}]' 1 0 - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Target field with both Endpoint and DeviceType fields present - [1658477583.616961][3701:3706] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658477583.617072][3701:3706] CHIP:DMG: WriteResponseMessage = - [1658477583.617120][3701:3706] CHIP:DMG: { - [1658477583.617143][3701:3706] CHIP:DMG: AttributeStatusIBs = - [1658477583.617174][3701:3706] CHIP:DMG: [ - [1658477583.617199][3701:3706] CHIP:DMG: AttributeStatusIB = - [1658477583.617244][3701:3706] CHIP:DMG: { - [1658477583.617282][3701:3706] CHIP:DMG: AttributePathIB = - [1658477583.617329][3701:3706] CHIP:DMG: { - [1658477583.617376][3701:3706] CHIP:DMG: Endpoint = 0x0, - [1658477583.617421][3701:3706] CHIP:DMG: Cluster = 0x1f, - [1658477583.617468][3701:3706] CHIP:DMG: Attribute = 0x0000_0000, - [1658477583.617510][3701:3706] CHIP:DMG: } - [1658477583.617560][3701:3706] CHIP:DMG: - [1658477583.617604][3701:3706] CHIP:DMG: StatusIB = - [1658477583.617639][3701:3706] CHIP:DMG: { - [1658477583.617683][3701:3706] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477583.617730][3701:3706] CHIP:DMG: }, - [1658477583.617773][3701:3706] CHIP:DMG: - [1658477583.617803][3701:3706] CHIP:DMG: }, - [1658477583.617848][3701:3706] CHIP:DMG: - [1658477583.617874][3701:3706] CHIP:DMG: AttributeStatusIB = - [1658477583.617903][3701:3706] CHIP:DMG: { - [1658477583.617934][3701:3706] CHIP:DMG: AttributePathIB = - [1658477583.617966][3701:3706] CHIP:DMG: { - [1658477583.618011][3701:3706] CHIP:DMG: Endpoint = 0x0, - [1658477583.618059][3701:3706] CHIP:DMG: Cluster = 0x1f, - [1658477583.618108][3701:3706] CHIP:DMG: Attribute = 0x0000_0000, - [1658477583.618156][3701:3706] CHIP:DMG: ListIndex = Null, - [1658477583.618201][3701:3706] CHIP:DMG: } - [1658477583.618249][3701:3706] CHIP:DMG: - [1658477583.618292][3701:3706] CHIP:DMG: StatusIB = - [1658477583.618325][3701:3706] CHIP:DMG: { - [1658477583.618369][3701:3706] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477583.618401][3701:3706] CHIP:DMG: }, - [1658477583.618432][3701:3706] CHIP:DMG: - [1658477583.618459][3701:3706] CHIP:DMG: }, - [1658477583.618504][3701:3706] CHIP:DMG: - [1658477583.618530][3701:3706] CHIP:DMG: AttributeStatusIB = - [1658477583.618558][3701:3706] CHIP:DMG: { - [1658477583.618627][3701:3706] CHIP:DMG: AttributePathIB = - [1658477583.618664][3701:3706] CHIP:DMG: { - [1658477583.618707][3701:3706] CHIP:DMG: Endpoint = 0x0, - [1658477583.618755][3701:3706] CHIP:DMG: Cluster = 0x1f, - [1658477583.618804][3701:3706] CHIP:DMG: Attribute = 0x0000_0000, - [1658477583.618851][3701:3706] CHIP:DMG: ListIndex = Null, - [1658477583.618897][3701:3706] CHIP:DMG: } - [1658477583.618947][3701:3706] CHIP:DMG: - [1658477583.618990][3701:3706] CHIP:DMG: StatusIB = - [1658477583.619034][3701:3706] CHIP:DMG: { - [1658477583.619078][3701:3706] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658477583.619124][3701:3706] CHIP:DMG: }, - [1658477583.619167][3701:3706] CHIP:DMG: - [1658477583.619196][3701:3706] CHIP:DMG: }, - [1658477583.619235][3701:3706] CHIP:DMG: - [1658477583.619261][3701:3706] CHIP:DMG: ], - [1658477583.619297][3701:3706] CHIP:DMG: - [1658477583.619321][3701:3706] CHIP:DMG: InteractionModelRevision = 1 - [1658477583.619346][3701:3706] CHIP:DMG: } - [1658477583.619476][3701:3706] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658477583.619510][3701:3706] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - [1658477583.619575][3701:3706] CHIP:EM: Sending Standalone Ack for MessageCounter:77176256 on exchange 29384i - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: + [{ Cluster: null, Endpoint: 22, DeviceType: 33 }], + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is list of AccessControlEntryStruct containing 2 elements 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null 2.struct Privilege field: Operate (3) - AuthMode field: CASE (2) Subjects field: null Targets field: - [{Cluster: 11, Endpoint: 22, DeviceType: 33}]" + "Step 43:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is list of AccessControlEntryStruct containing 2 elements + 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) + Subjects field: [N1] Targets field: null 2.struct Privilege field: + Operate (3) AuthMode field: CASE (2) Subjects field: null Targets + field: [{Cluster: 11, Endpoint: 22, DeviceType: 33}]" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": 33 }]}]' 1 0 - - - On TH1(Chiptool), Verify that the status is success when writing the AccessControl cluster ACL attribute with a value is list of AccessControlEntryStruct containing 2 elements with Success for first element path and CONSTRAINT_ERROR (0x87) for Second element path due to invalid Target field - [1658477662.415412][3710:3715] CHIP:EM: Removed CHIP MessageCounter:35384027 from RetransTable on exchange 6953i - [1658477662.415452][3710:3715] CHIP:DMG: WriteClient moving to [ResponseRe] - [1658477662.415535][3710:3715] CHIP:DMG: WriteResponseMessage = - [1658477662.415563][3710:3715] CHIP:DMG: { - [1658477662.415582][3710:3715] CHIP:DMG: AttributeStatusIBs = - [1658477662.415609][3710:3715] CHIP:DMG: [ - [1658477662.415629][3710:3715] CHIP:DMG: AttributeStatusIB = - [1658477662.415662][3710:3715] CHIP:DMG: { - [1658477662.415692][3710:3715] CHIP:DMG: AttributePathIB = - [1658477662.415727][3710:3715] CHIP:DMG: { - [1658477662.415779][3710:3715] CHIP:DMG: Endpoint = 0x0, - [1658477662.415845][3710:3715] CHIP:DMG: Cluster = 0x1f, - [1658477662.415895][3710:3715] CHIP:DMG: Attribute = 0x0000_0000, - [1658477662.415942][3710:3715] CHIP:DMG: } - [1658477662.415994][3710:3715] CHIP:DMG: - [1658477662.416051][3710:3715] CHIP:DMG: StatusIB = - [1658477662.416097][3710:3715] CHIP:DMG: { - [1658477662.416150][3710:3715] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477662.416205][3710:3715] CHIP:DMG: }, - [1658477662.416239][3710:3715] CHIP:DMG: - [1658477662.416275][3710:3715] CHIP:DMG: }, - [1658477662.416323][3710:3715] CHIP:DMG: - [1658477662.416348][3710:3715] CHIP:DMG: AttributeStatusIB = - [1658477662.416385][3710:3715] CHIP:DMG: { - [1658477662.416414][3710:3715] CHIP:DMG: AttributePathIB = - [1658477662.416454][3710:3715] CHIP:DMG: { - [1658477662.416487][3710:3715] CHIP:DMG: Endpoint = 0x0, - [1658477662.416533][3710:3715] CHIP:DMG: Cluster = 0x1f, - [1658477662.416580][3710:3715] CHIP:DMG: Attribute = 0x0000_0000, - [1658477662.416615][3710:3715] CHIP:DMG: ListIndex = Null, - [1658477662.416658][3710:3715] CHIP:DMG: } - [1658477662.416702][3710:3715] CHIP:DMG: - [1658477662.416736][3710:3715] CHIP:DMG: StatusIB = - [1658477662.416779][3710:3715] CHIP:DMG: { - [1658477662.416820][3710:3715] CHIP:DMG: status = 0x00 (SUCCESS), - [1658477662.416855][3710:3715] CHIP:DMG: }, - [1658477662.416893][3710:3715] CHIP:DMG: - [1658477662.416920][3710:3715] CHIP:DMG: }, - [1658477662.416965][3710:3715] CHIP:DMG: - [1658477662.416990][3710:3715] CHIP:DMG: AttributeStatusIB = - [1658477662.417028][3710:3715] CHIP:DMG: { - [1658477662.417056][3710:3715] CHIP:DMG: AttributePathIB = - [1658477662.417098][3710:3715] CHIP:DMG: { - [1658477662.417141][3710:3715] CHIP:DMG: Endpoint = 0x0, - [1658477662.417176][3710:3715] CHIP:DMG: Cluster = 0x1f, - [1658477662.417221][3710:3715] CHIP:DMG: Attribute = 0x0000_0000, - [1658477662.417266][3710:3715] CHIP:DMG: ListIndex = Null, - [1658477662.417300][3710:3715] CHIP:DMG: } - [1658477662.417334][3710:3715] CHIP:DMG: - [1658477662.417367][3710:3715] CHIP:DMG: StatusIB = - [1658477662.417400][3710:3715] CHIP:DMG: { - [1658477662.417435][3710:3715] CHIP:DMG: status = 0x87 (CONSTRAINT_ERROR), - [1658477662.417468][3710:3715] CHIP:DMG: }, - [1658477662.417501][3710:3715] CHIP:DMG: - [1658477662.417528][3710:3715] CHIP:DMG: }, - [1658477662.417559][3710:3715] CHIP:DMG: - [1658477662.417582][3710:3715] CHIP:DMG: ], - [1658477662.417618][3710:3715] CHIP:DMG: - [1658477662.417641][3710:3715] CHIP:DMG: InteractionModelRevision = 1 - [1658477662.417664][3710:3715] CHIP:DMG: } - [1658477662.417794][3710:3715] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1658477662.417828][3710:3715] CHIP:TOO: Response Failure: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) - [1658477662.417896][3710:3715] CHIP:EM: Sending Standalone Ack for MessageCounter:43630190 on exchange 6953i - [1658477662.417987][3710:3715] CHIP:IN: Prepared secure message 0xffff82fdd9e8 to 0x0000000000000001 (1) of type 0x10 and prot - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + { + Privilege: "3", + AuthMode: "2", + Subjects: null, + Targets: [{ Cluster: 11, Endpoint: 22, DeviceType: 33 }], + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: CONSTRAINT_ERROR - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value - is an empty list" + "Step 44:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute + value is an empty list" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl '[]' 1 0 - On TH1(Chiptool), Verify that the status is success for acl attribute value is an empty list since all ACL entries removed - RetransTable on exchange 43997i - [1660632377.411062][3241:3246] CHIP:DMG: WriteClient moving to [ResponseRe] - [1660632377.411111][3241:3246] CHIP:DMG: WriteResponseMessage = - [1660632377.411137][3241:3246] CHIP:DMG: { - [1660632377.411159][3241:3246] CHIP:DMG: AttributeStatusIBs = - [1660632377.411190][3241:3246] CHIP:DMG: [ - [1660632377.411215][3241:3246] CHIP:DMG: AttributeStatusIB = - [1660632377.411248][3241:3246] CHIP:DMG: { - [1660632377.411277][3241:3246] CHIP:DMG: AttributePathIB = - [1660632377.411313][3241:3246] CHIP:DMG: { - [1660632377.411350][3241:3246] CHIP:DMG: Endpoint = 0x0, - [1660632377.411388][3241:3246] CHIP:DMG: Cluster = 0x1f, - [1660632377.411423][3241:3246] CHIP:DMG: Attribute = 0x0000_0000, - [1660632377.411456][3241:3246] CHIP:DMG: } - [1660632377.411496][3241:3246] CHIP:DMG: - [1660632377.411528][3241:3246] CHIP:DMG: StatusIB = - [1660632377.411563][3241:3246] CHIP:DMG: { - [1660632377.411596][3241:3246] CHIP:DMG: status = 0x00 (SUCCESS), - [1660632377.411628][3241:3246] CHIP:DMG: }, - [1660632377.411687][3241:3246] CHIP:DMG: - [1660632377.411717][3241:3246] CHIP:DMG: }, - [1660632377.411748][3241:3246] CHIP:DMG: - [1660632377.411775][3241:3246] CHIP:DMG: ], - [1660632377.411804][3241:3246] CHIP:DMG: - [1660632377.411828][3241:3246] CHIP:DMG: InteractionModelRevision = 1 - [1660632377.411851][3241:3246] CHIP:DMG: } - [1660632377.411922][3241:3246] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1660632377.411986][3241:3246] CHIP:EM: Sending Standalone Ack for MessageCounter:259751171 on exchange 43997i - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: [] diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml index cd5ef68b9291c3..59e09a8dd7010f 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml @@ -13,258 +13,164 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 3.2.7. [TC-ACL-2.7] Extension multi-fabric +name: 133.2.3. [TC-ACL-2.7] Extension attribute PICS: - ACL.S config: nodeId: 0x12344321 - cluster: "Basic Information" + cluster: "Access Control" endpoint: 0 + nodeId2: + type: node_id + defaultValue: 0xCAFE + TH1CommissionerNodeId: + type: node_id + defaultValue: 112233 + TH2CommissionerNodeId: + type: node_id + defaultValue: 112233 + payload: + type: char_string + defaultValue: "MT:-24J0AFN00KA0648G00" + D_OK_EMPTY: + type: octet_string + defaultValue: "hex:1718" + D_OK_SINGLE: + type: octet_string + defaultValue: "hex:17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" tests: - - label: "Pre-Conditions" - verification: | - 1.N1 is the node ID of TH1 - - 2.N2 is the node ID of TH2 - - 2.D_OK_EMPTY: "1718" which is an octstr of length 2 containing valid TLV: - - - top-level anonymous list (empty) - - 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: - - - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form - disabled: true - - - label: "TH1 commissions DUT using admin node ID N1" - verification: | - DUT - sudo ./chip-all-clusters-app --wifi - - TH1 - ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 - disabled: true + - label: "Step 1:Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId - label: - "TH1 reads DUT Endpoint 0 OperationalCredentials cluster - CurrentFabricIndex attribute" - verification: | - ./chip-tool operationalcredentials read current-fabric-index 1 0 - - On TH1(Chiptool), verify CurrentFabricIndex attribute of operationalCredential cluster as 1 - - [1657186774.908634][10846:10851] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0005 DataVersion: 3161849734 - [1657186774.911149][10846:10851] CHIP:TOO: CurrentFabricIndex: 1 - disabled: true + "Step 2:TH1 reads OperationalCredentials cluster CurrentFabricIndex + attribute" + command: "readAttribute" + cluster: "Operational Credentials" + attribute: "CurrentFabricIndex" + response: + saveAs: TH1FabricIndex - label: - "TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin - node ID N2" - verification: | - Open a commissioning window On TH1(Chiptool)using below command - - ./chip-tool pairing open-commissioning-window 1 1 400 2000 3841 - - [1657186324.710951][10820:10825] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 - [1657186324.710980][10820:10825] CHIP:CTL: Successfully opened pairing window On TH(Chiptool)e device - [1657186324.711048][10820:10825] CHIP:CTL: Manual pairing code: [36253605617] - [1657186324.711108][10820:10825] CHIP:CTL: SetupQRCode: [MT:-24J0IRV01A7TB7E700] - - - Commission TH2(Chiptool) to DUT using manualcode generated in TH1 using open commission window - - ./chip-tool pairing code 2 36253605617 --commissioner-name beta --commissioner-nodeid 223344 - [1657186359.584672][3509:3514] CHIP:CTL: Successfully finished commissioning step "Cleanup" - [1657186359.584743][3509:3514] CHIP:TOO: Device commissioning completed with success - disabled: true + "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT + using admin node ID N2" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + + - label: "Step 4:TH2 starts a commissioning process with DUT" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" + arguments: + values: + - name: "nodeId" + value: nodeId2 + - name: "payload" + value: payload + + - label: "DUT is commissioned by TH2 on Fabric ID2 " + identity: "beta" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId2 - label: - "TH2 reads DUT Endpoint 0 OperationalCredentials cluster - CurrentFabricIndex attribute" - verification: | - ./chip-tool operationalcredentials read current-fabric-index 2 0 --commissioner-name beta --commissioner-nodeid 223344 - - On TH2(Chiptool), verify CurrentFabricIndex attribute of operationalCredential cluster as 2 - [1657186956.724761][3910:3915] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0005 DataVersion: 3161849734 - [1657186956.731658][3910:3915] CHIP:TOO: CurrentFabricIndex: 2 - disabled: true + "Step 5:TH2 reads OperationalCredentials cluster CurrentFabricIndex + attribute" + identity: "beta" + command: "readAttribute" + cluster: "Operational Credentials" + attribute: "CurrentFabricIndex" + response: + saveAs: TH2FabricIndex - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster Extension attribute, - value is list of AccessControlExtensionStruct containing 1 element - 1.struct .Data field: D_OK_EMPTY 1718" + "Step 6:TH1 writes DUT Endpoint 0 AccessControl cluster Extension + attribute, value is list of AccessControlExtensionStruct containing 1 + element" PICS: ACL.S.A0001 - verification: | - ./chip-tool accesscontrol write extension '[{"data":"1718"}]' 1 0 - - On TH1(Chiptool),Verify Successfully to extension attribute list containg one element . - - - 657893593.975649][4116:4121] CHIP:DMG: { - [1657893593.975678][4116:4121] CHIP:DMG: AttributePathIB = - [1657893593.975718][4116:4121] CHIP:DMG: { - [1657893593.975755][4116:4121] CHIP:DMG: Endpoint = 0x0, - [1657893593.975797][4116:4121] CHIP:DMG: Cluster = 0x1f, - [1657893593.975835][4116:4121] CHIP:DMG: Attribute = 0x0000_0001, - [1657893593.975871][4116:4121] CHIP:DMG: } - [1657893593.975910][4116:4121] CHIP:DMG: - [1657893593.975944][4116:4121] CHIP:DMG: StatusIB = - [1657893593.975980][4116:4121] CHIP:DMG: { - [1657893593.976015][4116:4121] CHIP:DMG: status = 0x00 (SUCCESS), - [1657893593.976054][4116:4121] CHIP:DMG: }, - [1657893593.976088][4116:4121] CHIP:DMG: - [1657893593.976119][4116:4121] CHIP:DMG: }, - [1657893593.976161][4116:4121] CHIP:DMG: - [1657893593.976188][4116:4121] CHIP:DMG: AttributeStatusIB = - [1657893593.976220][4116:4121] CHIP:DMG: { - [1657893593.976248][4116:4121] CHIP:DMG: AttributePathIB = - [1657893593.976281][4116:4121] CHIP:DMG: { - [1657893593.976316][4116:4121] CHIP:DMG: Endpoint = 0x0, - [1657893593.976354][4116:4121] CHIP:DMG: Cluster = 0x1f, - [1657893593.976395][4116:4121] CHIP:DMG: Attribute = 0x0000_0001, - [1657893593.976434][4116:4121] CHIP:DMG: ListIndex = Null, - [1657893593.976469][4116:4121] CHIP:DMG: } - [1657893593.976507][4116:4121] CHIP:DMG: - [1657893593.976541][4116:4121] CHIP:DMG: StatusIB = - [1657893593.976574][4116:4121] CHIP:DMG: { - [1657893593.976610][4116:4121] CHIP:DMG: status = 0x00 (SUCCESS), - [1657893593.976645][4116:4121] CHIP:DMG: }, - [1657893593.976678][4116:4121] CHIP:DMG: - [1657893593.976709][4116:4121] CHIP:DMG: }, - [1657893593.976744][4116:4121] CHIP:DMG: - [1657893593.976771][4116:4121] CHIP:DMG: ], - [1657893593.976808][4116:4121] CHIP:DMG: - [1657893593.976835][4116:4121] CHIP:D - disabled: true + command: "writeAttribute" + attribute: "Extension" + arguments: + value: [{ Data: D_OK_EMPTY, FabricIndex: TH1FabricIndex }] - label: - "TH2 writes DUT Endpoint 0 AccessControl cluster Extension attribute - value is list of AccessControlExtensionStruct containing 1 element - 1.struct Data field: D_OK_SINGLE - 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" + "Step 7:TH2 writes DUT Endpoint 0 AccessControl cluster Extension + attribute, value is list of AccessControlExtensionStruct containing 1 + element" PICS: ACL.S.A0001 - verification: | - ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 2 0 --commissioner-name beta --commissioner-nodeid 223344 + identity: "beta" + command: "writeAttribute" + attribute: "Extension" + arguments: + value: [{ Data: D_OK_SINGLE, FabricIndex: TH2FabricIndex }] - On TH2(Chiptool),Verify Successfully to extension attribute list containg one element . - 1657894672.479983][2433:2438] CHIP:DMG: WriteClient moving to [ResponseRe] - [1657894672.480057][2433:2438] CHIP:DMG: WriteResponseMessage = - [1657894672.480092][2433:2438] CHIP:DMG: { - [1657894672.480124][2433:2438] CHIP:DMG: AttributeStatusIBs = - [1657894672.480175][2433:2438] CHIP:DMG: [ - [1657894672.480211][2433:2438] CHIP:DMG: AttributeStatusIB = - [1657894672.480251][2433:2438] CHIP:DMG: { - [1657894672.480288][2433:2438] CHIP:DMG: AttributePathIB = - [1657894672.480333][2433:2438] CHIP:DMG: { - [1657894672.480379][2433:2438] CHIP:DMG: Endpoint = 0x0, - [1657894672.480427][2433:2438] CHIP:DMG: Cluster = 0x1f, - [1657894672.480476][2433:2438] CHIP:DMG: Attribute = 0x0000_0001, - [1657894672.480521][2433:2438] CHIP:DMG: } - [1657894672.480570][2433:2438] CHIP:DMG: - [1657894672.480612][2433:2438] CHIP:DMG: StatusIB = - [1657894672.480657][2433:2438] CHIP:DMG: { - [1657894672.480700][2433:2438] CHIP:DMG: status = 0x00 (SUCCESS), - [1657894672.480745][2433:2438] CHIP:DMG: }, - [1657894672.480789][2433:2438] CHIP:DMG: - [1657894672.480826][2433:2438] CHIP:DMG: }, - [1657894672.480877][2433:2438] CHIP:DMG: - [1657894672.480911][2433:2438] CHIP:DMG: AttributeStatusIB = - [1657894672.480949][2433:2438] CHIP:DMG: { - [1657894672.480986][2433:2438] CHIP:DMG: AttributePathIB = - [1657894672.481028][2433:2438] CHIP:DMG: { - [1657894672.481072][2433:2438] CHIP:DMG: Endpoint = 0x0, - [1657894672.481120][2433:2438] CHIP:DMG: Cluster = 0x1f, - [1657894672.481168][2433:2438] CHIP:DMG: Attribute = 0x0000_0001, - [1657894672.481214][2433:2438] CHIP:DMG: ListIndex = Null, - [1657894672.481258][2433:2438] CHIP:DMG: } - [1657894672.481306][2433:2438] CHIP:DMG: - [1657894672.481347][2433:2438] CHIP:DMG: StatusIB = - [1657894672.481390][2433:2438] CHIP:DMG: { - [1657894672.481433][2433:2438] CHIP:DMG: status = 0x00 (SUCCESS), - [1657894672.481482][2433:2438] CHIP:DMG: }, - [1657894672.481526][2433:2438] CHIP:DMG: - [1657894672.481562][2433:2438] CHIP:DMG: }, - [1657894672.481605][2433:2438] CHIP:DMG: - [1657894672.481639][2433:2438] CHIP:DMG: ], - [1657894672.481686][2433:2438] CHIP:DMG: - [1657894672.481720][2433:2438] CHIP:DMG: InteractionModelRevision = 1 - [1657894672.481754][2433:2438] CHIP:DMG: } - disabled: true - - - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster Extension attribute" + - label: "Step 8:TH1 reads AccessControl cluster Extension attribute" PICS: ACL.S.A0001 - verification: | - ./chip-tool accesscontrol read extension 1 0 - On TH1(Chiptool) ,verify AccessControlExtensionStruct containing 1 element, and MUST NOT contain an element with FabricIndex F2 - - [1657187433.621369][10890:10895] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0001 DataVersion: 3415499944 - [1657187433.621422][10890:10895] CHIP:TOO: Extension: 1 entries - [1657187433.621470][10890:10895] CHIP:TOO: [1]: { - [1657187433.621498][10890:10895] CHIP:TOO: Data: 1718 - [1657187433.621534][10890:10895] CHIP:TOO: FabricIndex: 1 - [1657187433.621557][10890:10895] CHIP:TOO: } - disabled: true + command: "readAttribute" + attribute: "Extension" + response: + value: [{ Data: D_OK_EMPTY, FabricIndex: TH1FabricIndex }] - - label: - "TH2 reads DUT Endpoint 0 AccessControl cluster Extension attribute" + - label: "Step 9:TH2 reads AccessControl cluster Extension attribute" PICS: ACL.S.A0001 - verification: | - ./chip-tool accesscontrol read extension 2 0 --commissioner-name beta --commissioner-nodeid 223344 - - On TH2(Chiptool), Verify AccessControlExtensionStruct containing 1 element, and MUST NOT contain an element with FabricIndex F1 - [1658327214.683199][2749:2754] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0001 DataVersion: 2953114587 - [1658327214.683283][2749:2754] CHIP:TOO: Extension: 1 entries - [1658327214.683348][2749:2754] CHIP:TOO: [1]: { - [1658327214.683388][2749:2754] CHIP:TOO: Data: 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018 - [1658327214.683423][2749:2754] CHIP:TOO: FabricIndex: 2 - [1658327214.683454][2749:2754] CHIP:TOO: } - disabled: true + identity: "beta" + command: "readAttribute" + attribute: "Extension" + response: + value: [{ Data: D_OK_SINGLE, FabricIndex: TH2FabricIndex }] - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster + "Step 10:TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlExtensionChanged event" PICS: ACL.S.E01 - verification: | - ./chip-tool accesscontrol read-event access-control-extension-changed 1 0 - On TH1(Chiptool) , Verify AccessControlExtensionChanged containing 1 element, and MUST NOT contain an element with FabricIndex F2 - - [1658327494.282263][2810:2815] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Event 0x0000_0001 - [1658327494.282295][2810:2815] CHIP:TOO: Event number: 5 - [1658327494.282319][2810:2815] CHIP:TOO: Priority: Info - [1658327494.282342][2810:2815] CHIP:TOO: Timestamp: 4621721 - [1658327494.282458][2810:2815] CHIP:TOO: AccessControlExtensionChanged: { - [1658327494.282497][2810:2815] CHIP:TOO: AdminNodeID: 112233 - [1658327494.282524][2810:2815] CHIP:TOO: AdminPasscodeID: null - [1658327494.282551][2810:2815] CHIP:TOO: ChangeType: 1 - [1658327494.282576][2810:2815] CHIP:TOO: LatestValue: { - [1658327494.282633][2810:2815] CHIP:TOO: Data: 1718 - [1658327494.282660][2810:2815] CHIP:TOO: FabricIndex: 1 - [1658327494.282684][2810:2815] CHIP:TOO: } - [1658327494.282709][2810:2815] CHIP:TOO: AdminFabricIndex: 1 - [1658327494.282733][2810:2815] CHIP:TOO: } - disabled: true + command: "readEvent" + event: "AccessControlExtensionChanged" + response: + value: + [ + { + AdminNodeID: TH1CommissionerNodeId, + AdminPasscodeID: null, + ChangeType: 1, + LatestValue: + { Data: D_OK_EMPTY, FabricIndex: TH1FabricIndex }, + }, + FabricIndex: TH1FabricIndex, + ] - label: - "TH2 reads DUT Endpoint 0 AccessControl cluster + "Step 11:TH2 reads DUT Endpoint 0 AccessControl cluster AccessControlExtensionChanged event" PICS: ACL.S.E01 - verification: | - ./chip-tool accesscontrol read-event access-control-extension-changed 2 0 --commissioner-name beta --commissioner-nodeid 223344 - On TH2(Chiptool) , Verify AccessControlExtensionChanged containing 1 element, and MUST NOT contain an element with FabricIndex F1 - [1663242753.957097][4264:4270] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Event 0x0000_0001 - [1663242753.957400][4264:4270] CHIP:TOO: Event number: 8 - [1663242753.957459][4264:4270] CHIP:TOO: Priority: Info - [1663242753.957507][4264:4270] CHIP:TOO: Timestamp: 20785045 - [1663242753.957708][4264:4270] CHIP:TOO: AccessControlExtensionChanged: { - [1663242753.957801][4264:4270] CHIP:TOO: AdminNodeID: 223344 - [1663242753.957867][4264:4270] CHIP:TOO: AdminPasscodeID: null - [1663242753.957931][4264:4270] CHIP:TOO: ChangeType: 1 - [1663242753.957991][4264:4270] CHIP:TOO: LatestValue: { - [1663242753.958055][4264:4270] CHIP:TOO: Data: 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018 - [1663242753.958118][4264:4270] CHIP:TOO: FabricIndex: 2 - [1663242753.958183][4264:4270] CHIP:TOO: } - disabled: true + identity: "beta" + command: "readEvent" + event: "AccessControlExtensionChanged" + response: + value: + [ + { + AdminNodeID: TH2CommissionerNodeId, + AdminPasscodeID: null, + ChangeType: 1, + LatestValue: + { Data: D_OK_SINGLE, FabricIndex: TH2FabricIndex }, + }, + FabricIndex: TH2FabricIndex, + ] diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml index 0b0fee2eaa325c..3a573717b5a751 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml @@ -13,439 +13,150 @@ # 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: 129.2.9. [TC-ACL-2.9] Cluster access +name: 133.2.3. [TC-ACL-2.9] Extension attribute PICS: - ACL.S config: nodeId: 0x12344321 - cluster: "Basic Information" + cluster: "Access Control" endpoint: 0 + nodeId2: + type: node_id + defaultValue: 0xCAFE + CommissionerNodeId: + type: node_id + defaultValue: 112233 + payload: + type: char_string + defaultValue: "MT:-24J0AFN00KA0648G00" # This value needs to be generated automatically tests: - - label: "Pre-Conditions" - verification: | - N1 is the node ID of TH1 - disabled: true + - label: "Step 1:Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId - - label: "TH1 commissions DUT using admin node ID N1" - verification: | - DUT - sudo ./chip-all-clusters-app --wifi - - TH1 - ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 - disabled: true + - label: + "TH1 reads OperationalCredentials cluster CurrentFabricIndex attribute" + command: "readAttribute" + cluster: "Operational Credentials" + attribute: "CurrentFabricIndex" + response: + saveAs: CurrentFabricIndex - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 1 element struct - Privilege field: Manage (4) AuthMode field: CASE (2) Subjects field: - [N1] Targets field: null" + "Step 2:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 4, "authMode": 2, "subjects": [112233], "targets": null}]" 1 0 - On TH1(Chiptool), verify AccessControl cluster ACL attribute, value is list of AccessControlEntryStruct containing 1 element + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "4", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] - [1656589077.991761][3452:3457] CHIP:DMG: WriteClient moving to [ResponseRe] - [1656589077.991838][3452:3457] CHIP:DMG: WriteResponseMessage = - [1656589077.991879][3452:3457] CHIP:DMG: { - [1656589077.991914][3452:3457] CHIP:DMG: AttributeStatusIBs = - [1656589077.991964][3452:3457] CHIP:DMG: [ - [1656589077.992003][3452:3457] CHIP:DMG: AttributeStatusIB = - [1656589077.992047][3452:3457] CHIP:DMG: { - [1656589077.992090][3452:3457] CHIP:DMG: AttributePathIB = - [1656589077.992146][3452:3457] CHIP:DMG: { - [1656589077.992198][3452:3457] CHIP:DMG: Endpoint = 0x0, - [1656589077.992253][3452:3457] CHIP:DMG: Cluster = 0x1f, - [1656589077.992307][3452:3457] CHIP:DMG: Attribute = 0x0000_0000, - [1656589077.992361][3452:3457] CHIP:DMG: } - [1656589077.992416][3452:3457] CHIP:DMG: - [1656589077.992465][3452:3457] CHIP:DMG: StatusIB = - [1656589077.992516][3452:3457] CHIP:DMG: { - [1656589077.992565][3452:3457] CHIP:DMG: status = 0x00 (SUCCESS), - [1656589077.992642][3452:3457] CHIP:DMG: }, - [1656589077.992695][3452:3457] CHIP:DMG: - [1656589077.992736][3452:3457] CHIP:DMG: }, - [1656589077.992794][3452:3457] CHIP:DMG: - [1656589077.992833][3452:3457] CHIP:DMG: AttributeStatusIB = - [1656589077.992879][3452:3457] CHIP:DMG: { - [1656589077.992920][3452:3457] CHIP:DMG: AttributePathIB = - [1656589077.992968][3452:3457] CHIP:DMG: { - [1656589077.993018][3452:3457] CHIP:DMG: Endpoint = 0x0, - [1656589077.993076][3452:3457] CHIP:DMG: Cluster = 0x1f, - [1656589077.993130][3452:3457] CHIP:DMG: Attribute = 0x0000_0000, - [1656589077.993184][3452:3457] CHIP:DMG: ListIndex = Null, - [1656589077.993234][3452:3457] CHIP:DMG: } - [1656589077.993288][3452:3457] CHIP:DMG: - [1656589077.993335][3452:3457] CHIP:DMG: StatusIB = - [1656589077.993382][3452:3457] CHIP:DMG: { - [1656589077.993431][3452:3457] CHIP:DMG: status = 0x00 (SUCCESS), - [1656589077.993480][3452:3457] CHIP:DMG: }, - [1656589077.993530][3452:3457] CHIP:DMG: - [1656589077.993571][3452:3457] CHIP:DMG: }, - [1656589077.993619][3452:3457] CHIP:DMG: - [1656589077.993657][3452:3457] CHIP:DMG: ], - [1656589077.993710][3452:3457] CHIP:DMG: - [1656589077.993749][3452:3457] CHIP:DMG: InteractionModelRevision = 1 - [1656589077.993787][3452:3457] CHIP:DMG: } - [1656589077.993938][3452:3457] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1656589077.994024][3452:3457] CHIP:EM: Sending Standalone Ack for MessageCounter:54734971 on exchange 46491i - disabled: true - - - label: "TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" + - label: + "Step 3:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol read acl 1 0 - - On TH1(Chiptool), verify AccessControl cluster ACL attribute Returns UNSUPPORTED_ACCESS (0x7e) - [1656589294.730359][3469:3474] CHIP:DMG: ReportDataMessage = - [1656589294.730409][3469:3474] CHIP:DMG: { - [1656589294.730449][3469:3474] CHIP:DMG: AttributeReportIBs = - [1656589294.730506][3469:3474] CHIP:DMG: [ - [1656589294.730550][3469:3474] CHIP:DMG: AttributeReportIB = - [1656589294.730616][3469:3474] CHIP:DMG: { - [1656589294.730663][3469:3474] CHIP:DMG: AttributeStatusIB = - [1656589294.730719][3469:3474] CHIP:DMG: { - [1656589294.730772][3469:3474] CHIP:DMG: AttributePathIB = - [1656589294.730834][3469:3474] CHIP:DMG: { - [1656589294.730896][3469:3474] CHIP:DMG: Endpoint = 0x0, - [1656589294.730961][3469:3474] CHIP:DMG: Cluster = 0x1f, - [1656589294.731078][3469:3474] CHIP:DMG: Attribute = 0x0000_0000, - [1656589294.731174][3469:3474] CHIP:DMG: } - [1656589294.731244][3469:3474] CHIP:DMG: - [1656589294.731303][3469:3474] CHIP:DMG: StatusIB = - [1656589294.731364][3469:3474] CHIP:DMG: { - [1656589294.731424][3469:3474] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656589294.731484][3469:3474] CHIP:DMG: }, - [1656589294.731545][3469:3474] CHIP:DMG: - [1656589294.731600][3469:3474] CHIP:DMG: }, - [1656589294.731662][3469:3474] CHIP:DMG: - [1656589294.731712][3469:3474] CHIP:DMG: }, - [1656589294.731769][3469:3474] CHIP:DMG: - [1656589294.731813][3469:3474] CHIP:DMG: ], - [1656589294.731867][3469:3474] CHIP:DMG: - [1656589294.731913][3469:3474] CHIP:DMG: SuppressResponse = true, - [1656589294.731959][3469:3474] CHIP:DMG: InteractionModelRevision = 1 - [1656589294.732001][3469:3474] CHIP:DMG: } - [1656589294.732174][3469:3474] CHIP:TOO: Response Failure: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) - [1656589294.732303][3469:3474] CHIP:EM: Sending Standalone Ack for MessageCounter:239082421 on exchange 10750i - [1656589294.732405][3469:3474] CHIP:IN: Prepared secure message 0xffffa9da2958 to 0x0000000000000001 (1) - disabled: true + command: "readAttribute" + attribute: "ACL" + response: + error: UNSUPPORTED_ACCESS - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value - is list of AccessControlEntryStruct containing 1 element 1.struct - Privilege field: Administer (5) AuthMode field: CASE (2) Subjects - field: [N1] Targets field: null" + "Step 4:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute" PICS: ACL.S.A0000 - verification: | - ./chip-tool accesscontrol write acl "[{"privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}]" 1 0 - On TH1(Chiptool), verify AccessControl cluster ACL attribute, value is list of AccessControlEntryStruct containing 1 element Returns Unsupported Access - - [1656589843.696435][3518:3523] CHIP:DMG: WriteResponseMessage = - [1656589843.696471][3518:3523] CHIP:DMG: { - [1656589843.696504][3518:3523] CHIP:DMG: AttributeStatusIBs = - [1656589843.696549][3518:3523] CHIP:DMG: [ - [1656589843.696636][3518:3523] CHIP:DMG: AttributeStatusIB = - [1656589843.696685][3518:3523] CHIP:DMG: { - [1656589843.696724][3518:3523] CHIP:DMG: AttributePathIB = - [1656589843.696767][3518:3523] CHIP:DMG: { - [1656589843.696813][3518:3523] CHIP:DMG: Endpoint = 0x0, - [1656589843.696859][3518:3523] CHIP:DMG: Cluster = 0x1f, - [1656589843.696905][3518:3523] CHIP:DMG: Attribute = 0x0000_0000, - [1656589843.696951][3518:3523] CHIP:DMG: } - [1656589843.697002][3518:3523] CHIP:DMG: - [1656589843.697046][3518:3523] CHIP:DMG: StatusIB = - [1656589843.697092][3518:3523] CHIP:DMG: { - [1656589843.697137][3518:3523] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656589843.697179][3518:3523] CHIP:DMG: }, - [1656589843.697225][3518:3523] CHIP:DMG: - [1656589843.697265][3518:3523] CHIP:DMG: }, - [1656589843.697316][3518:3523] CHIP:DMG: - [1656589843.697352][3518:3523] CHIP:DMG: AttributeStatusIB = - [1656589843.697393][3518:3523] CHIP:DMG: { - [1656589843.697430][3518:3523] CHIP:DMG: AttributePathIB = - [1656589843.697473][3518:3523] CHIP:DMG: { - [1656589843.697518][3518:3523] CHIP:DMG: Endpoint = 0x0, - [1656589843.697567][3518:3523] CHIP:DMG: Cluster = 0x1f, - [1656589843.697616][3518:3523] CHIP:DMG: Attribute = 0x0000_0000, - [1656589843.697662][3518:3523] CHIP:DMG: ListIndex = Null, - [1656589843.697708][3518:3523] CHIP:DMG: } - [1656589843.697758][3518:3523] CHIP:DMG: - [1656589843.697802][3518:3523] CHIP:DMG: StatusIB = - [1656589843.697846][3518:3523] CHIP:DMG: { - [1656589843.697890][3518:3523] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656589843.697939][3518:3523] CHIP:DMG: }, - [1656589843.697985][3518:3523] CHIP:DMG: - [1656589843.698026][3518:3523] CHIP:DMG: }, - [1656589843.698071][3518:3523] CHIP:DMG: - [1656589843.698106][3518:3523] CHIP:DMG: ], - [1656589843.698154][3518:3523] CHIP:DMG: - [1656589843.698190][3518:3523] CHIP:DMG: InteractionModelRevision = 1 - [1656589843.698225][3518:3523] CHIP:DMG: } - [1656589843.698364][3518:3523] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1656589843.698409][3518:3523] CHIP:TOO: Response Failure: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) - [1656589843.698479][3518:3523] CHIP:EM: Sending Standalone Ack for MessageCounter:108024547 on exchange 43576i - disabled: true + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + Privilege: "5", + AuthMode: "2", + Subjects: [CommissionerNodeId], + Targets: null, + FabricIndex: CurrentFabricIndex, + }, + ] + response: + error: UNSUPPORTED_ACCESS - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster Extension attribute" + "Step 5:TH1 reads DUT Endpoint 0 AccessControl cluster Extension + attribute" PICS: ACL.S.A0001 - verification: | - ./chip-tool accesscontrol read extension 1 0 - On TH1(Chiptool), verify AccessControl cluster Extension attribute Returns UNSUPPORTED_ACCESS (0x7e) - [1656590048.181895][3536:3541] CHIP:DMG: ReportDataMessage = - [1656590048.181938][3536:3541] CHIP:DMG: { - [1656590048.181973][3536:3541] CHIP:DMG: AttributeReportIBs = - [1656590048.182023][3536:3541] CHIP:DMG: [ - [1656590048.182063][3536:3541] CHIP:DMG: AttributeReportIB = - [1656590048.182119][3536:3541] CHIP:DMG: { - [1656590048.182161][3536:3541] CHIP:DMG: AttributeStatusIB = - [1656590048.182210][3536:3541] CHIP:DMG: { - [1656590048.182257][3536:3541] CHIP:DMG: AttributePathIB = - [1656590048.182311][3536:3541] CHIP:DMG: { - [1656590048.182366][3536:3541] CHIP:DMG: Endpoint = 0x0, - [1656590048.182424][3536:3541] CHIP:DMG: Cluster = 0x1f, - [1656590048.182482][3536:3541] CHIP:DMG: Attribute = 0x0000_0001, - [1656590048.182540][3536:3541] CHIP:DMG: } - [1656590048.182601][3536:3541] CHIP:DMG: - [1656590048.182653][3536:3541] CHIP:DMG: StatusIB = - [1656590048.182711][3536:3541] CHIP:DMG: { - [1656590048.182766][3536:3541] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656590048.182819][3536:3541] CHIP:DMG: }, - [1656590048.182873][3536:3541] CHIP:DMG: - [1656590048.182920][3536:3541] CHIP:DMG: }, - [1656590048.182973][3536:3541] CHIP:DMG: - [1656590048.183017][3536:3541] CHIP:DMG: }, - [1656590048.183066][3536:3541] CHIP:DMG: - [1656590048.183104][3536:3541] CHIP:DMG: ], - [1656590048.183152][3536:3541] CHIP:DMG: - [1656590048.183192][3536:3541] CHIP:DMG: SuppressResponse = true, - [1656590048.183233][3536:3541] CHIP:DMG: InteractionModelRevision = 1 - [1656590048.183271][3536:3541] CHIP:DMG: } - [1656590048.183424][3536:3541] CHIP:TOO: Response Failure: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) - [1656590048.183539][3536:3541] CHIP:EM: Sending Standalone Ack for MessageCounter:5598495 on exchange 61834i - disabled: true + command: "readAttribute" + attribute: "Extension" + response: + error: UNSUPPORTED_ACCESS - label: - "TH1 writes DUT Endpoint 0 AccessControl cluster Extension attribute, - value is an empty list" + "Step 6:TH1 writes DUT Endpoint 0 AccessControl cluster Extension + attribute" PICS: ACL.S.A0001 - verification: | - ./chip-tool accesscontrol write extension [] 1 0 - On TH1(Chiptool) , Verify the Successfully with extension attribute value is an empty list which Returns - UNSUPPORTED_ACCESS (0x7e) - [1656592607.144276][3897:3903] CHIP:DMG: WriteClient moving to [ResponseRe] - [1656592607.144341][3897:3903] CHIP:DMG: WriteResponseMessage = - [1656592607.144378][3897:3903] CHIP:DMG: { - [1656592607.144410][3897:3903] CHIP:DMG: AttributeStatusIBs = - [1656592607.144463][3897:3903] CHIP:DMG: [ - [1656592607.144499][3897:3903] CHIP:DMG: AttributeStatusIB = - [1656592607.144539][3897:3903] CHIP:DMG: { - [1656592607.144576][3897:3903] CHIP:DMG: AttributePathIB = - [1656592607.144652][3897:3903] CHIP:DMG: { - [1656592607.144700][3897:3903] CHIP:DMG: Endpoint = 0x0, - [1656592607.144751][3897:3903] CHIP:DMG: Cluster = 0x1f, - [1656592607.144799][3897:3903] CHIP:DMG: Attribute = 0x0000_0001, - [1656592607.144846][3897:3903] CHIP:DMG: } - [1656592607.144897][3897:3903] CHIP:DMG: - [1656592607.144939][3897:3903] CHIP:DMG: StatusIB = - [1656592607.144986][3897:3903] CHIP:DMG: { - [1656592607.145030][3897:3903] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656592607.145080][3897:3903] CHIP:DMG: }, - disabled: true + command: "writeAttribute" + attribute: "Extension" + arguments: + value: [] + response: + error: UNSUPPORTED_ACCESS - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster + "Step 7:TH1 reads DUT Endpoint 0 AccessControl cluster SubjectsPerAccessControlEntry attribute" - PICS: ACL.S.A0002 - verification: | - ./chip-tool accesscontrol read subjects-per-access-control-entry 1 0 - On TH1(Chiptool), verify with value 4 or greater as subjects-per-access-control-entry. - - [1656592739.107798][3916:3921] CHIP:DMG: ReportDataMessage = - [1656592739.107828][3916:3921] CHIP:DMG: { - [1656592739.107850][3916:3921] CHIP:DMG: AttributeReportIBs = - [1656592739.107881][3916:3921] CHIP:DMG: [ - [1656592739.107906][3916:3921] CHIP:DMG: AttributeReportIB = - [1656592739.107938][3916:3921] CHIP:DMG: { - [1656592739.107963][3916:3921] CHIP:DMG: AttributeDataIB = - [1656592739.107998][3916:3921] CHIP:DMG: { - [1656592739.108032][3916:3921] CHIP:DMG: DataVersion = 0x182902e1, - [1656592739.108068][3916:3921] CHIP:DMG: AttributePathIB = - [1656592739.108103][3916:3921] CHIP:DMG: { - [1656592739.108137][3916:3921] CHIP:DMG: Endpoint = 0x0, - [1656592739.108177][3916:3921] CHIP:DMG: Cluster = 0x1f, - [1656592739.108216][3916:3921] CHIP:DMG: Attribute = 0x0000_0002, - [1656592739.108252][3916:3921] CHIP:DMG: } - [1656592739.108287][3916:3921] CHIP:DMG: - [1656592739.108325][3916:3921] CHIP:DMG: Data = 4, - [1656592739.108355][3916:3921] CHIP:DMG: }, - [1656592739.108388][3916:3921] CHIP:DMG: - [1656592739.108413][3916:3921] CHIP:DMG: }, - [1656592739.108443][3916:3921] CHIP:DMG: - [1656592739.108466][3916:3921] CHIP:DMG: ], - [1656592739.108496][3916:3921] CHIP:DMG: - [1656592739.108520][3916:3921] CHIP:DMG: SuppressResponse = true, - [1656592739.108545][3916:3921] CHIP:DMG: InteractionModelRevision = 1 - [1656592739.108568][3916:3921] CHIP:DMG: } - [1656592739.108729][3916:3921] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0002 DataVersion: 405340897 - [1656592739.108793][3916:3921] CHIP:TOO: SubjectsPerAccessControlEntry: 4 - [1656592739.108878][3916:3921] CHIP:EM: Sending Standalone Ack for MessageCounter:265434881 on exchange 145 - disabled: true + PICS: ACL.S.A0001 + command: "readAttribute" + attribute: "SubjectsPerAccessControlEntry" + response: + constraints: + minValue: 4 - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster + "Step 8:TH1 reads DUT Endpoint 0 AccessControl cluster TargetsPerAccessControlEntry attribute" - PICS: ACL.S.A0003 - verification: | - ./chip-tool accesscontrol read targets-per-access-control-entry 1 0 - On TH1(Chiptool), verify with value 3 or greater as TargetsPerAccessControlEntry - [1656593266.074720][3943:3948] CHIP:DMG: ReportDataMessage = - [1656593266.074748][3943:3948] CHIP:DMG: { - [1656593266.074769][3943:3948] CHIP:DMG: AttributeReportIBs = - [1656593266.074800][3943:3948] CHIP:DMG: [ - [1656593266.074824][3943:3948] CHIP:DMG: AttributeReportIB = - [1656593266.074863][3943:3948] CHIP:DMG: { - [1656593266.074889][3943:3948] CHIP:DMG: AttributeDataIB = - [1656593266.074919][3943:3948] CHIP:DMG: { - [1656593266.074950][3943:3948] CHIP:DMG: DataVersion = 0x182902e1, - [1656593266.074998][3943:3948] CHIP:DMG: AttributePathIB = - [1656593266.075037][3943:3948] CHIP:DMG: { - [1656593266.075074][3943:3948] CHIP:DMG: Endpoint = 0x0, - [1656593266.075112][3943:3948] CHIP:DMG: Cluster = 0x1f, - [1656593266.075145][3943:3948] CHIP:DMG: Attribute = 0x0000_0003, - [1656593266.075178][3943:3948] CHIP:DMG: } - [1656593266.075214][3943:3948] CHIP:DMG: - [1656593266.075246][3943:3948] CHIP:DMG: Data = 3, - [1656593266.075276][3943:3948] CHIP:DMG: }, - [1656593266.075309][3943:3948] CHIP:DMG: - [1656593266.075335][3943:3948] CHIP:DMG: }, - [1656593266.075365][3943:3948] CHIP:DMG: - [1656593266.075388][3943:3948] CHIP:DMG: ], - [1656593266.075418][3943:3948] CHIP:DMG: - [1656593266.075442][3943:3948] CHIP:DMG: SuppressResponse = true, - [1656593266.075467][3943:3948] CHIP:DMG: InteractionModelRevision = 1 - [1656593266.075491][3943:3948] CHIP:DMG: } - [1656593266.075626][3943:3948] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0003 DataVersion: 405340897 - [1656593266.075684][3943:3948] CHIP:TOO: TargetsPerAccessControlEntry: 3 - [1656593266.075758][3943:3948] CHIP:EM: Sending Standalone Ack for MessageCounter:42625412 on exchange 36195i - disabled: true + PICS: ACL.S.A0001 + command: "readAttribute" + attribute: "TargetsPerAccessControlEntry" + response: + constraints: + minValue: 3 - label: - "TH1 reads DUT Endpoint 0 AccessControl cluster + "Step 9:TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlEntriesPerFabric attribute" - PICS: ACL.S.A0004 - verification: | - ./chip-tool accesscontrol read access-control-entries-per-fabric 1 0 - - On TH1(Chiptool), verify with value 3 or greater as AccessControlEntriesPerFabric. - [1656593406.902865][3956:3961] CHIP:DMG: ReportDataMessage = - [1656593406.902902][3956:3961] CHIP:DMG: { - [1656593406.902931][3956:3961] CHIP:DMG: AttributeReportIBs = - [1656593406.902971][3956:3961] CHIP:DMG: [ - [1656593406.903004][3956:3961] CHIP:DMG: AttributeReportIB = - [1656593406.903049][3956:3961] CHIP:DMG: { - [1656593406.903087][3956:3961] CHIP:DMG: AttributeDataIB = - [1656593406.903128][3956:3961] CHIP:DMG: { - [1656593406.903173][3956:3961] CHIP:DMG: DataVersion = 0x182902e1, - [1656593406.903216][3956:3961] CHIP:DMG: AttributePathIB = - [1656593406.903259][3956:3961] CHIP:DMG: { - [1656593406.903304][3956:3961] CHIP:DMG: Endpoint = 0x0, - [1656593406.903354][3956:3961] CHIP:DMG: Cluster = 0x1f, - [1656593406.903400][3956:3961] CHIP:DMG: Attribute = 0x0000_0004, - [1656593406.903447][3956:3961] CHIP:DMG: } - [1656593406.903493][3956:3961] CHIP:DMG: - [1656593406.903539][3956:3961] CHIP:DMG: Data = 3, - [1656593406.903580][3956:3961] CHIP:DMG: }, - [1656593406.903624][3956:3961] CHIP:DMG: - [1656593406.903661][3956:3961] CHIP:DMG: }, - [1656593406.903700][3956:3961] CHIP:DMG: - [1656593406.903732][3956:3961] CHIP:DMG: ], - [1656593406.903771][3956:3961] CHIP:DMG: - [1656593406.903804][3956:3961] CHIP:DMG: SuppressResponse = true, - [1656593406.903837][3956:3961] CHIP:DMG: InteractionModelRevision = 1 - [1656593406.903868][3956:3961] CHIP:DMG: } - [1656593406.904032][3956:3961] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0004 DataVersion: 405340897 - [1656593406.904102][3956:3961] CHIP:TOO: AccessControlEntriesPerFabric: 3 - [1656593406.904200][3956:3961] CHIP:EM: Sending Standalone Ack for MessageCounter:135320969 on exchange 30343i - [1656593406.904273][3956:3961] CHIP:IN: Prepared secure message 0xffff977ed958 to 0x0000000000000001 (1) of type 0x10 and protocolId (0, 0) on exchange 30343i with MessageCounter:267106256. - disabled: true + PICS: ACL.S.A0001 + command: "readAttribute" + attribute: "AccessControlEntriesPerFabric" + response: + constraints: + minValue: 3 - label: "TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlEntryChanged event" PICS: ACL.S.E00 - verification: | - ./chip-tool accesscontrol read-event access-control-entry-changed 1 - On TH1(Chiptool), Verify AccessControl cluster AccessControlEntryChanged event Returns UNSUPPORTED_ACCESS (0x7e) - [1656593588.305232][3979:3984] CHIP:DMG: }, - [1656593588.305269][3979:3984] CHIP:DMG: - [1656593588.305299][3979:3984] CHIP:DMG: StatusIB = - [1656593588.305333][3979:3984] CHIP:DMG: { - [1656593588.305371][3979:3984] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656593588.305408][3979:3984] CHIP:DMG: }, - [1656593588.305445][3979:3984] CHIP:DMG: - [1656593588.305475][3979:3984] CHIP:DMG: }, - [1656593588.305512][3979:3984] CHIP:DMG: - [1656593588.305542][3979:3984] CHIP:DMG: }, - [1656593588.305575][3979:3984] CHIP:DMG: - [1656593588.305602][3979:3984] CHIP:DMG: ], - [1656593588.305641][3979:3984] CHIP:DMG: - [1656593588.305668][3979:3984] CHIP:DMG: SuppressResponse = true, - [1656593588.305696][3979:3984] CHIP:DMG: InteractionModelRevision = 1 - [1656593588.305721][3979:3984] CHIP:DMG: } - [1656593588.305841][3979:3984] CHIP:TOO: Response Failure: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) - [1656593588.305905][3979:3984] CHIP:TOO: Response Failure: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) - [1656593588.305969][3979:3984] CHIP:TOO: Response Failure: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) - [1656593588.306132][3979:3984] CHIP:EM: Sending Standalone Ack for MessageCounter:82107286 - disabled: true + command: "readEvent" + event: "AccessControlEntryChanged" + response: + error: UNSUPPORTED_ACCESS - label: "TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlExtensionChanged event" PICS: ACL.S.E01 - verification: | - ./chip-tool accesscontrol read-event access-control-extension-changed 1 0 - On TH1(Chiptool), verify AccessControl cluster AccessControlExtensionChanged event Returns UNSUPPORTED_ACCESS (0x7e) - [1656593726.387025][3990:3995] CHIP:DMG: - [1656593726.387048][3990:3995] CHIP:DMG: EventReportIB = - [1656593726.387078][3990:3995] CHIP:DMG: { - [1656593726.387103][3990:3995] CHIP:DMG: EventStatusIB = - [1656593726.387133][3990:3995] CHIP:DMG: { - [1656593726.387161][3990:3995] CHIP:DMG: EventPath = - [1656593726.387193][3990:3995] CHIP:DMG: { - [1656593726.387226][3990:3995] CHIP:DMG: Endpoint = 0x0, - [1656593726.387260][3990:3995] CHIP:DMG: Cluster = 0x1f, - [1656593726.387293][3990:3995] CHIP:DMG: Event = 0x1, - [1656593726.387324][3990:3995] CHIP:DMG: }, - [1656593726.387359][3990:3995] CHIP:DMG: - [1656593726.387388][3990:3995] CHIP:DMG: StatusIB = - [1656593726.387419][3990:3995] CHIP:DMG: { - [1656593726.387452][3990:3995] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656593726.387484][3990:3995] CHIP:DMG: }, - [1656593726.387516][3990:3995] CHIP:DMG: - [1656593726.387544][3990:3995] CHIP:DMG: }, - [1656593726.387577][3990:3995] CHIP:DMG: - [1656593726.387602][3990:3995] CHIP:DMG: }, - [1656593726.387635][3990:3995] CHIP:DMG: - [1656593726.387659][3990:3995] CHIP:DMG: EventReportIB = - [1656593726.387689][3990:3995] CHIP:DMG: { - [1656593726.387714][3990:3995] CHIP:DMG: EventStatusIB = - [1656593726.387743][3990:3995] CHIP:DMG: { - [1656593726.387772][3990:3995] CHIP:DMG: EventPath = - [1656593726.387804][3990:3995] CHIP:DMG: { - [1656593726.387837][3990:3995] CHIP:DMG: Endpoint = 0x0, - [1656593726.387870][3990:3995] CHIP:DMG: Cluster = 0x1f, - [1656593726.387904][3990:3995] CHIP:DMG: Event = 0x1, - [1656593726.387935][3990:3995] CHIP:DMG: }, - [1656593726.387969][3990:3995] CHIP:DMG: - [1656593726.387998][3990:3995] CHIP:DMG: StatusIB = - [1656593726.388030][3990:3995] CHIP:DMG: { - [1656593726.388063][3990:3995] CHIP:DMG: status = 0x7e (UNSUPPORTED_ACCESS), - [1656593726.388094][3990:3995] CHIP:DMG: }, - [1656593726.388126][3990:3995] CHIP:DMG: - [1656593726.388154][3990:3995] CHIP:DMG: }, - disabled: true + command: "readEvent" + event: "AccessControlExtensionChanged" + response: + error: UNSUPPORTED_ACCESS diff --git a/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml deleted file mode 100644 index f7b73b3d0e38de..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: - 102.3.1. [TC-LCFG-3.1] Localization Configuration Cluster - Attributes[DUT-Client] - -PICS: - - LCFG.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "DUT reads SupportedLocales attribute from TH" - PICS: LCFG.C.A0001 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool localizationconfiguration read supported-locales 1 0 - Verify DUT receives supported-locales attribute response on the TH(all-clusters-app) Log: - 659616748.134098][11438:11438] CHIP:IM: Received Read request - [1659616748.134248][11438:11438] CHIP:DMG: ReadRequestMessage = - [1659616748.134307][11438:11438] CHIP:DMG: { - [1659616748.134355][11438:11438] CHIP:DMG: AttributePathIBs = - [1659616748.134410][11438:11438] CHIP:DMG: [ - [1659616748.134463][11438:11438] CHIP:DMG: AttributePathIB = - [1659616748.134536][11438:11438] CHIP:DMG: { - [1659616748.134599][11438:11438] CHIP:DMG: Endpoint = 0x0, - [1659616748.134673][11438:11438] CHIP:DMG: Cluster = 0x2b, - [1659616748.134743][11438:11438] CHIP:DMG: Attribute = 0x0000_0001, - [1659616748.134808][11438:11438] CHIP:DMG: } - [1659616748.134875][11438:11438] CHIP:DMG: - [1659616748.134936][11438:11438] CHIP:DMG: ], - [1659616748.134996][11438:11438] CHIP:DMG: - [1659616748.135053][11438:11438] CHIP:DMG: isFabricFiltered = true, - [1659616748.135109][11438:11438] CHIP:DMG: InteractionModelRevision = 1 - [1659616748.135160][11438:11438] CHIP:DMG: }, - [1659616748.135322][11438:11438] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true - - - label: "DUT reads ActiveLocale attribute from the TH" - PICS: LCFG.C.A0000 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool localizationconfiguration read active-locale 1 0 - Verify DUT receives active-locale attribute response on the TH(all-clusters-app) Log: - - [1659616904.401632][11438:11438] CHIP:DMG: ReadRequestMessage = - [1659616904.401657][11438:11438] CHIP:DMG: { - [1659616904.401676][11438:11438] CHIP:DMG: AttributePathIBs = - [1659616904.401699][11438:11438] CHIP:DMG: [ - [1659616904.401720][11438:11438] CHIP:DMG: AttributePathIB = - [1659616904.401754][11438:11438] CHIP:DMG: { - [1659616904.401786][11438:11438] CHIP:DMG: Endpoint = 0x0, - [1659616904.401819][11438:11438] CHIP:DMG: Cluster = 0x2b, - [1659616904.401851][11438:11438] CHIP:DMG: Attribute = 0x0000_0000, - [1659616904.401880][11438:11438] CHIP:DMG: } - [1659616904.401906][11438:11438] CHIP:DMG: - [1659616904.401930][11438:11438] CHIP:DMG: ], - [1659616904.401955][11438:11438] CHIP:DMG: - [1659616904.401978][11438:11438] CHIP:DMG: isFabricFiltered = true, - [1659616904.402000][11438:11438] CHIP:DMG: InteractionModelRevision = 1 - [1659616904.402020][11438:11438] CHIP:DMG: }, - [1659616904.402087][11438:11438] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LCFG_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_LCFG_3_1_Simulated.yaml new file mode 100644 index 00000000000000..22b8f3b528317d --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_LCFG_3_1_Simulated.yaml @@ -0,0 +1,40 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: + 101.3.1. [TC-LCFG-3.1] Localization Configuration Cluster + Attributes[DUT-Client] + +PICS: + - LCFG.C + +config: + nodeId: 0x12344321 + cluster: "Localization Configuration" + endpoint: 1 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "DUT reads SupportedLocales attribute from TH" + PICS: LCFG.C.A0001 + wait: "readAttribute" + attribute: "SupportedLocales" + + - label: "DUT reads ActiveLocale attribute from TH" + PICS: LCFG.C.A0000 + wait: "readAttribute" + attribute: "ActiveLocale" diff --git a/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml deleted file mode 100644 index 31cac947bd5dd9..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml +++ /dev/null @@ -1,194 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 105.1.1. [TC-LUNIT-1.1] Global Attributes [DUT as Client] - -PICS: - - LUNIT.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "Commission DUT to TH" - verification: | - - disabled: true - - - label: "{DUTread} (0xFFFD) ClusterRevision attribute" - PICS: LUNIT.C.Afffd - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read cluster-revision 1 0 - Verify DUT receives cluster-revision attribute response on the TH(all-clusters-app) Log: - [1659785279.519464][4122:4122] CHIP:EM: Received message of type 0x2 with protocolId (0, 1) and MessageCounter:239393541 on exchange 51048r - [1659785279.519511][4122:4122] CHIP:EM: Handling via exchange: 51048r, Delegate: 0xaaaaeaa68fa0 - [1659785279.519548][4122:4122] CHIP:IM: Received Read request - [1659785279.519625][4122:4122] CHIP:DMG: ReadRequestMessage = - [1659785279.519652][4122:4122] CHIP:DMG: { - [1659785279.519679][4122:4122] CHIP:DMG: AttributePathIBs = - [1659785279.519705][4122:4122] CHIP:DMG: [ - [1659785279.519729][4122:4122] CHIP:DMG: AttributePathIB = - [1659785279.519759][4122:4122] CHIP:DMG: { - [1659785279.519790][4122:4122] CHIP:DMG: Endpoint = 0x0, - [1659785279.519822][4122:4122] CHIP:DMG: Cluster = 0x2d, - [1659785279.519853][4122:4122] CHIP:DMG: Attribute = 0x0000_FFFD, - [1659785279.519877][4122:4122] CHIP:DMG: } - [1659785279.519904][4122:4122] CHIP:DMG: - [1659785279.519932][4122:4122] CHIP:DMG: ], - [1659785279.519960][4122:4122] CHIP:DMG: - [1659785279.519986][4122:4122] CHIP:DMG: isFabricFiltered = true, - [1659785279.520011][4122:4122] CHIP:DMG: InteractionModelRevision = 1 - [1659785279.520034][4122:4122] CHIP:DMG: }, - [1659785279.520108][4122:4122] CHIP:DMG: IM RH moving to [GeneratingReports] - [1659785279.520189][4122:4122] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - disabled: true - - - label: "{DUTread} (0xFFFC) FeatureMap attribute" - PICS: LUNIT.C.Afffc - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read feature-map 1 0 - Verify DUT receives feature-map attribute response on the TH(all-clusters-app) Log: - - [1659785328.533426][4122:4122] CHIP:IM: Received Read request - [1659785328.533548][4122:4122] CHIP:DMG: ReadRequestMessage = - [1659785328.533596][4122:4122] CHIP:DMG: { - [1659785328.533637][4122:4122] CHIP:DMG: AttributePathIBs = - [1659785328.533685][4122:4122] CHIP:DMG: [ - [1659785328.533730][4122:4122] CHIP:DMG: AttributePathIB = - [1659785328.533785][4122:4122] CHIP:DMG: { - [1659785328.533837][4122:4122] CHIP:DMG: Endpoint = 0x0, - [1659785328.533894][4122:4122] CHIP:DMG: Cluster = 0x2d, - [1659785328.533958][4122:4122] CHIP:DMG: Attribute = 0x0000_FFFC, - [1659785328.534017][4122:4122] CHIP:DMG: } - [1659785328.534072][4122:4122] CHIP:DMG: - [1659785328.534124][4122:4122] CHIP:DMG: ], - [1659785328.534176][4122:4122] CHIP:DMG: - [1659785328.534224][4122:4122] CHIP:DMG: isFabricFiltered = true, - [1659785328.534275][4122:4122] CHIP:DMG: InteractionModelRevision = 1 - [1659785328.534319][4122:4122] CHIP:DMG: }, - [1659785328.534443][4122:4122] CHIP:DMG: IM RH moving to [GeneratingReports] - [1659785328.534578][4122:4122] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1659785328.534629][4122:4122] CHIP:DMG: Cluster 2d, Attribute fffc is dirty - disabled: true - - - label: "{DUTread} (0xFFFB) AttributeList attribute" - PICS: LUNIT.C.Afffb - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read attribute-list 1 0 - - Verify DUT receives attribute-list attribute response on the TH(all-clusters-app) Log: - [1661843250.245339][2719:2719] CHIP:IM: Received Read request - [1661843176.295960][2719:2719] CHIP:DMG: ReadRequestMessage = - [1661843176.295989][2719:2719] CHIP:DMG: { - [1661843176.296011][2719:2719] CHIP:DMG: AttributePathIBs = - [1661843176.296036][2719:2719] CHIP:DMG: [ - [1661843176.296059][2719:2719] CHIP:DMG: AttributePathIB = - [1661843176.296089][2719:2719] CHIP:DMG: { - [1661843176.296118][2719:2719] CHIP:DMG: Endpoint = 0x0, - [1661843176.296153][2719:2719] CHIP:DMG: Cluster = 0x2d, - [1661843176.296186][2719:2719] CHIP:DMG: Attribute = 0x0000_FFFB, - [1661843176.296218][2719:2719] CHIP:DMG: } - [1661843176.296247][2719:2719] CHIP:DMG: - [1661843176.296273][2719:2719] CHIP:DMG: ], - [1661843176.296300][2719:2719] CHIP:DMG: - [1661843176.296325][2719:2719] CHIP:DMG: isFabricFiltered = true, - [1661843176.296349][2719:2719] CHIP:DMG: InteractionModelRevision = 1 - [1661843176.296371][2719:2719] CHIP:DMG: }, - [1661843176.296442][2719:2719] CHIP:DMG: IM RH moving to [GeneratingReports] - [1661843176.296539][2719:2719] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1661843176.296567][2719:2719] CHIP:DMG: Cluster 2d, Attribute fffb is dirty - [1661843176.296588][2719:2719] CHIP:DMG: Reading attribute: Cluster=0x0000_002D Endpoint=0 AttributeId=0x0000_FFFB (expanded=0) - [1661843176.296613][2719:2719] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_002D e=0 p=v - [1661843176.296646][2719:2719] CHIP:DMG: AccessControl: allowed - disabled: true - - - label: "{DUTread} (0xFFFA) EventList attribute" - PICS: LUNIT.C.Afffa - verification: | - out of scope for V1.0 - disabled: true - - - label: "{DUTread} (0xFFF9) AcceptedCommandList attribute" - PICS: LUNIT.C.Afff9 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read accepted-command-list 1 0 - Verify DUT receives AcceptedCommandList attribute response on the TH(all-clusters-app) Log: - [1659785385.381041][4122:4122] CHIP:EM: Handling via exchange: 60781r, Delegate: 0xaaaaeaa68fa0 - [1661843250.245339][2719:2719] CHIP:IM: Received Read request - [1661843250.245414][2719:2719] CHIP:DMG: ReadRequestMessage = - [1661843250.245438][2719:2719] CHIP:DMG: { - [1661843250.245455][2719:2719] CHIP:DMG: AttributePathIBs = - [1661843250.245478][2719:2719] CHIP:DMG: [ - [1661843250.245499][2719:2719] CHIP:DMG: AttributePathIB = - [1661843250.245531][2719:2719] CHIP:DMG: { - [1661843250.245557][2719:2719] CHIP:DMG: Endpoint = 0x0, - [1661843250.245585][2719:2719] CHIP:DMG: Cluster = 0x2d, - [1661843250.245611][2719:2719] CHIP:DMG: Attribute = 0x0000_FFF9, - [1661843250.245669][2719:2719] CHIP:DMG: } - [1661843250.245696][2719:2719] CHIP:DMG: - [1661843250.245718][2719:2719] CHIP:DMG: ], - [1661843250.245741][2719:2719] CHIP:DMG: - [1661843250.245763][2719:2719] CHIP:DMG: isFabricFiltered = true, - [1661843250.245784][2719:2719] CHIP:DMG: InteractionModelRevision = 1 - [1661843250.245802][2719:2719] CHIP:DMG: }, - [1661843250.245867][2719:2719] CHIP:DMG: IM RH moving to [GeneratingReports] - [1661843250.245953][2719:2719] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1661843250.245979][2719:2719] CHIP:DMG: Cluster 2d, Attribute fff9 is dirty - [1661843250.245997][2719:2719] CHIP:DMG: Reading attribute: Cluster=0x0000_002D Endpoint=0 AttributeId=0x0000_FFF9 (expanded=0) - [1661843250.246019][2719:2719] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_002D e=0 p=v - [1661843250.246050][2719:2719] CHIP:DMG: AccessControl: allowed - disabled: true - - - label: "{DUTread} (0xFFF8) GeneratedCommandList attribute" - PICS: LUNIT.C.Afff8 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read generated-command-list 1 0 - Verify DUT receives GeneratedCommandList attribute response on the TH(all-clusters-app) Log: - [1659785447.481659][4122:4122] CHIP:IM: Received Read request - [1659785447.481736][4122:4122] CHIP:DMG: ReadRequestMessage = - [1659785447.481763][4122:4122] CHIP:DMG: { - [1659785447.481785][4122:4122] CHIP:DMG: AttributePathIBs = - [1659785447.481813][4122:4122] CHIP:DMG: [ - [1659785447.481837][4122:4122] CHIP:DMG: AttributePathIB = - [1659785447.481864][4122:4122] CHIP:DMG: { - [1659785447.481892][4122:4122] CHIP:DMG: Endpoint = 0x0, - [1659785447.481923][4122:4122] CHIP:DMG: Cluster = 0x2d, - [1659785447.481958][4122:4122] CHIP:DMG: Attribute = 0x0000_FFF8, - [1659785447.481985][4122:4122] CHIP:DMG: } - [1659785447.482014][4122:4122] CHIP:DMG: - [1659785447.482039][4122:4122] CHIP:DMG: ], - [1659785447.482067][4122:4122] CHIP:DMG: - [1659785447.482093][4122:4122] CHIP:DMG: isFabricFiltered = true, - [1659785447.482118][4122:4122] CHIP:DMG: InteractionModelRevision = 1 - [1659785447.482142][4122:4122] CHIP:DMG: }, - [1659785447.482215][4122:4122] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LUNIT_1_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_1_1_Simulated.yaml new file mode 100644 index 00000000000000..643d764df507d5 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_LUNIT_1_1_Simulated.yaml @@ -0,0 +1,54 @@ +# 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: 104.1.1. [TC-LUNIT-1.1] Global Attributes [DUT as Client] + +PICS: + - LUNIT.C + +config: + nodeId: 0x12344321 + cluster: "Unit Localization" + endpoint: 1 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "DUT read (0xFFFD) ClusterRevision attribute" + PICS: LUNIT.C.Afffd + wait: "readAttribute" + attribute: "ClusterRevision" + + - label: "DUT read (0xFFFC) FeatureMap attribute" + PICS: LUNIT.C.Afffc + wait: "readAttribute" + attribute: "FeatureMap" + + - label: "DUT read (0xFFFB) AttributeList attribute" + PICS: LUNIT.C.Afffb + wait: "readAttribute" + attribute: "AttributeList" + + - label: "DUT read (0xFFF9) AcceptedCommandList attribute" + PICS: LUNIT.C.Afff9 + wait: "readAttribute" + attribute: "AcceptedCommandList" + + - label: "DUT read (0xFFF8) GeneratedCommandList attribute" + PICS: LUNIT.C.Afff8 + wait: "readAttribute" + attribute: "GeneratedCommandList" diff --git a/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml deleted file mode 100644 index 9c37cc32c6e84d..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: - 106.2.1. [TC-LUNIT-2.1] Read and Write Unit Localization Cluster Attributes - [DUT as Client] - -PICS: - - LUNIT.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "DUT reads TemperatureUnit attribute from TH" - PICS: LUNIT.C.A0000 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read temperature-unit 1 0 - Verify DUT receives TemperatureUnit attribute response on the TH(all-clusters-app) Log: - [1659785506.642187][4122:4122] CHIP:EM: Handling via exchange: 35080r, Delegate: 0xaaaaeaa68fa0 - [1659785506.642224][4122:4122] CHIP:IM: Received Read request - [1659785506.642300][4122:4122] CHIP:DMG: ReadRequestMessage = - [1659785506.642327][4122:4122] CHIP:DMG: { - [1659785506.642349][4122:4122] CHIP:DMG: AttributePathIBs = - [1659785506.642375][4122:4122] CHIP:DMG: [ - [1659785506.642399][4122:4122] CHIP:DMG: AttributePathIB = - [1659785506.642428][4122:4122] CHIP:DMG: { - [1659785506.642456][4122:4122] CHIP:DMG: Endpoint = 0x0, - [1659785506.642484][4122:4122] CHIP:DMG: Cluster = 0x2d, - [1659785506.642512][4122:4122] CHIP:DMG: Attribute = 0x0000_0000, - [1659785506.642535][4122:4122] CHIP:DMG: } - [1659785506.642565][4122:4122] CHIP:DMG: - [1659785506.642590][4122:4122] CHIP:DMG: ], - [1659785506.642618][4122:4122] CHIP:DMG: - [1659785506.642645][4122:4122] CHIP:DMG: isFabricFiltered = true, - [1659785506.642670][4122:4122] CHIP:DMG: InteractionModelRevision = 1 - [1659785506.642693][4122:4122] CHIP:DMG: }, - [1659785506.642766][4122:4122] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true - - - label: "DUT writes 3 to TemperatureUnit attribute on TH" - PICS: LUNIT.C.A0000 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization write temperature-unit 3 1 0 - Verify DUT receives TemperatureUnit attribute write response on the TH(all-clusters-app) Log: - - [1659785555.542655][4122:4122] CHIP:DMG: WriteRequestMessage = - [1659785555.542689][4122:4122] CHIP:DMG: { - [1659785555.542719][4122:4122] CHIP:DMG: suppressResponse = false, - [1659785555.542754][4122:4122] CHIP:DMG: timedRequest = false, - [1659785555.542787][4122:4122] CHIP:DMG: AttributeDataIBs = - [1659785555.542827][4122:4122] CHIP:DMG: [ - [1659785555.542859][4122:4122] CHIP:DMG: AttributeDataIB = - [1659785555.542895][4122:4122] CHIP:DMG: { - [1659785555.542934][4122:4122] CHIP:DMG: AttributePathIB = - [1659785555.542975][4122:4122] CHIP:DMG: { - [1659785555.543017][4122:4122] CHIP:DMG: Endpoint = 0x0, - [1659785555.543062][4122:4122] CHIP:DMG: Cluster = 0x2d, - [1659785555.543107][4122:4122] CHIP:DMG: Attribute = 0x0000_0000, - [1659785555.543172][4122:4122] CHIP:DMG: } - [1659785555.543218][4122:4122] CHIP:DMG: - [1659785555.543260][4122:4122] CHIP:DMG: Data = 3, - [1659785555.543321][4122:4122] CHIP:DMG: }, - [1659785555.543362][4122:4122] CHIP:DMG: - [1659785555.543395][4122:4122] CHIP:DMG: ], - [1659785555.543434][4122:4122] CHIP:DMG: - [1659785555.543468][4122:4122] CHIP:DMG: moreChunkedMessages = false, - [1659785555.543502][4122:4122] CHIP:DMG: InteractionModelRevision = 1 - [1659785555.543534][4122:4122] CHIP:DMG: }, - [1659785555.543637][4122:4122] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= - disabled: true - - - label: "DUT reads TemperatureUnit attribute from TH" - PICS: LUNIT.C.A0000 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool unitlocalization read temperature-unit 1 0 - Verify DUT receives TemperatureUnit attribute response on the TH(all-clusters-app) Log: - - [1659785612.134440][4122:4122] CHIP:IM: Received Read request - [1659785612.134567][4122:4122] CHIP:DMG: ReadRequestMessage = - [1659785612.134616][4122:4122] CHIP:DMG: { - [1659785612.134656][4122:4122] CHIP:DMG: AttributePathIBs = - [1659785612.134703][4122:4122] CHIP:DMG: [ - [1659785612.134746][4122:4122] CHIP:DMG: AttributePathIB = - [1659785612.134808][4122:4122] CHIP:DMG: { - [1659785612.134860][4122:4122] CHIP:DMG: Endpoint = 0x0, - [1659785612.134917][4122:4122] CHIP:DMG: Cluster = 0x2d, - [1659785612.134983][4122:4122] CHIP:DMG: Attribute = 0x0000_0000, - [1659785612.135041][4122:4122] CHIP:DMG: } - [1659785612.135093][4122:4122] CHIP:DMG: - [1659785612.135167][4122:4122] CHIP:DMG: ], - [1659785612.135223][4122:4122] CHIP:DMG: - [1659785612.135272][4122:4122] CHIP:DMG: isFabricFiltered = true, - [1659785612.135320][4122:4122] CHIP:DMG: InteractionModelRevision = 1 - [1659785612.135364][4122:4122] CHIP:DMG: }, - [1659785612.135489][4122:4122] CHIP:DMG: IM RH moving to [GeneratingReports] - [1659785612.135628][4122:4122] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1659785612.135679][4122:4122] CHIP:DMG: Cluster 2d, Attribute 0 is dirty - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml new file mode 100644 index 00000000000000..153fddbf017eaf --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml @@ -0,0 +1,48 @@ +# 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: + 104.2.1. [TC-LUNIT-2.1] Read and Write Unit Localization Cluster Attributes + [DUT as Client] + +PICS: + - LUNIT.C + +config: + nodeId: 0x12344321 + cluster: "Unit Localization" + endpoint: 1 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "DUT reads TemperatureUnit attribute from TH" + PICS: LUNIT.C.A0000 + wait: "readAttribute" + attribute: "TemperatureUnit" + + - label: "DUT writes 3 to TemperatureUnit attribute on TH" + PICS: LUNIT.C.A0000 + wait: "writeAttribute" + attribute: "TemperatureUnit" + arguments: + value: + + - label: "DUT reads TemperatureUnit attribute from TH" + PICS: LUNIT.C.A0000 + wait: "readAttribute" + attribute: "TemperatureUnit" diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml deleted file mode 100644 index 4d8279b864dd9a..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml +++ /dev/null @@ -1,400 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 3.2.2. [TC-OCC-2.2] Attributes with client as DUT - -PICS: - - OCC.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "Commission DUT to TH" - verification: | - - disabled: true - - - label: "DUT reads from the TH the (0x0000) Occupancy attribute" - PICS: OCC.C.A0000 - verification: | - ./chip-tool occupancysensing read occupancy 1 1 - - verify the " occupancy response" on the TH (all-cluster-app) log: - - [1657906563.293939][2361:2361] CHIP:IM: Received Read request - [1657906563.294045][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906563.294085][2361:2361] CHIP:DMG: { - [1657906563.294118][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906563.294157][2361:2361] CHIP:DMG: [ - [1657906563.294192][2361:2361] CHIP:DMG: AttributePathIB = - [1657906563.294235][2361:2361] CHIP:DMG: { - [1657906563.294280][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906563.294319][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906563.294375][2361:2361] CHIP:DMG: Attribute = 0x0000_0000, - [1657906563.294415][2361:2361] CHIP:DMG: } - [1657906563.294456][2361:2361] CHIP:DMG: - [1657906563.294497][2361:2361] CHIP:DMG: ], - [1657906563.294538][2361:2361] CHIP:DMG: - [1657906563.294608][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906563.294653][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906563.294688][2361:2361] CHIP:DMG: }, - disabled: true - - - label: "DUT reads from the TH the (0x0001) OccupancySensorType attribute" - PICS: OCC.C.A0001 - verification: | - ./chip-tool occupancysensing read occupancy-sensor-type 1 1 - - verify the " occupancy-sensor-type response" on the TH (all-cluster-app) log: - - [1657906599.161154][2361:2361] CHIP:IM: Received Read request - [1657906599.161269][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906599.161312][2361:2361] CHIP:DMG: { - [1657906599.161348][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906599.161385][2361:2361] CHIP:DMG: [ - [1657906599.161419][2361:2361] CHIP:DMG: AttributePathIB = - [1657906599.161463][2361:2361] CHIP:DMG: { - [1657906599.161518][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906599.161570][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906599.161621][2361:2361] CHIP:DMG: Attribute = 0x0000_0001, - [1657906599.161669][2361:2361] CHIP:DMG: } - [1657906599.161716][2361:2361] CHIP:DMG: - [1657906599.161757][2361:2361] CHIP:DMG: ], - [1657906599.161803][2361:2361] CHIP:DMG: - [1657906599.161846][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906599.161887][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906599.161924][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0002) OccupancySensorTypeBitmap - attribute" - PICS: OCC.C.A0002 - verification: | - ./chip-tool occupancysensing read occupancy-sensor-type-bitmap 1 1 - - verify the " occupancy-sensor-type-bitmap response" on the TH (all-cluster-app) log: - - [1657906629.182638][2361:2361] CHIP:IM: Received Read request - [1657906629.182760][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906629.182805][2361:2361] CHIP:DMG: { - [1657906629.182841][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906629.182883][2361:2361] CHIP:DMG: [ - [1657906629.182923][2361:2361] CHIP:DMG: AttributePathIB = - [1657906629.182967][2361:2361] CHIP:DMG: { - [1657906629.183013][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906629.183065][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906629.183113][2361:2361] CHIP:DMG: Attribute = 0x0000_0002, - [1657906629.183167][2361:2361] CHIP:DMG: } - [1657906629.183218][2361:2361] CHIP:DMG: - [1657906629.183260][2361:2361] CHIP:DMG: ], - [1657906629.183305][2361:2361] CHIP:DMG: - [1657906629.183422][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906629.183467][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906629.183504][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay - optional attribute, if PIR sensor" - PICS: OCC.C.A0010 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read pir-occupied-to-unoccupied-delay 1 1 - - verify the " pir-occupied-to-unoccupied-delay response" on the TH (all-cluster-app) log: - - [1657906650.927182][2361:2361] CHIP:IM: Received Read request - [1657906650.927324][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906650.927381][2361:2361] CHIP:DMG: { - [1657906650.927427][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906650.927482][2361:2361] CHIP:DMG: [ - [1657906650.927532][2361:2361] CHIP:DMG: AttributePathIB = - [1657906650.927590][2361:2361] CHIP:DMG: { - [1657906650.927651][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906650.927717][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906650.927783][2361:2361] CHIP:DMG: Attribute = 0x0000_0010, - [1657906650.927846][2361:2361] CHIP:DMG: } - [1657906650.927905][2361:2361] CHIP:DMG: - [1657906650.927960][2361:2361] CHIP:DMG: ], - [1657906650.928018][2361:2361] CHIP:DMG: - [1657906650.928073][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906650.928126][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906650.928184][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay - optional attribute, if PIR sensor" - PICS: OCC.C.A0011 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read pir-unoccupied-to-occupied-delay 1 1 - - verify the " pir-unoccupied-to-occupied-delay response" on the TH (all-cluster-app) log: - - [1657906670.678493][2361:2361] CHIP:IM: Received Read request - [1657906670.678680][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906670.678741][2361:2361] CHIP:DMG: { - [1657906670.678787][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906670.678842][2361:2361] CHIP:DMG: [ - [1657906670.678892][2361:2361] CHIP:DMG: AttributePathIB = - [1657906670.678950][2361:2361] CHIP:DMG: { - [1657906670.679008][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906670.679073][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906670.679141][2361:2361] CHIP:DMG: Attribute = 0x0000_0011, - [1657906670.679201][2361:2361] CHIP:DMG: } - [1657906670.679263][2361:2361] CHIP:DMG: - [1657906670.679321][2361:2361] CHIP:DMG: ], - [1657906670.679380][2361:2361] CHIP:DMG: - [1657906670.679435][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906670.679493][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906670.679542][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold - optional attribute, if PIR sensor" - PICS: OCC.C.A0012 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read pir-unoccupied-to-occupied-threshold 1 1 - - verify the " pir-unoccupied-to-occupied-threshold response" on the TH (all-cluster-app) log: - - [1657906696.122069][2361:2361] CHIP:IM: Received Read request - [1657906696.122210][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906696.122265][2361:2361] CHIP:DMG: { - [1657906696.122312][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906696.122366][2361:2361] CHIP:DMG: [ - [1657906696.122416][2361:2361] CHIP:DMG: AttributePathIB = - [1657906696.122480][2361:2361] CHIP:DMG: { - [1657906696.122543][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906696.122670][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906696.122744][2361:2361] CHIP:DMG: Attribute = 0x0000_0012, - [1657906696.122809][2361:2361] CHIP:DMG: } - [1657906696.122874][2361:2361] CHIP:DMG: - [1657906696.122929][2361:2361] CHIP:DMG: ], - [1657906696.122987][2361:2361] CHIP:DMG: - [1657906696.123042][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906696.123094][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906696.123143][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0020) - UltrasonicOccupiedToUnoccupiedDelay optional attribute, if ultrasonic - sensor" - PICS: OCC.C.A0020 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read ultrasonic-occupied-to-unoccupied-delay 1 1 - - verify the " ultrasonic-occupied-to-unoccupied-delay response" on the TH (all-cluster-app) log: - - [1657906729.107330][2361:2361] CHIP:IM: Received Read request - [1657906729.107455][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906729.107504][2361:2361] CHIP:DMG: { - [1657906729.107566][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906729.107620][2361:2361] CHIP:DMG: [ - [1657906729.107664][2361:2361] CHIP:DMG: AttributePathIB = - [1657906729.107738][2361:2361] CHIP:DMG: { - [1657906729.107789][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906729.107847][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906729.107929][2361:2361] CHIP:DMG: Attribute = 0x0000_0020, - [1657906729.107984][2361:2361] CHIP:DMG: } - [1657906729.108038][2361:2361] CHIP:DMG: - [1657906729.108105][2361:2361] CHIP:DMG: ], - [1657906729.108157][2361:2361] CHIP:DMG: - [1657906729.108205][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906729.108269][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906729.108312][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0021) - UltrasonicUnoccupiedToOccupiedDelay optional attribute, if ultrasonic - sensor" - PICS: OCC.C.A0021 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read ultrasonic-unoccupied-to-occupied-delay 1 1 - - verify the " ultrasonic-unoccupied-to-occupied-delay response" on the TH (all-cluster-app) log: - - [1657906752.147785][2361:2361] CHIP:IM: Received Read request - [1657906752.147914][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906752.147963][2361:2361] CHIP:DMG: { - [1657906752.148021][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906752.148070][2361:2361] CHIP:DMG: [ - [1657906752.148113][2361:2361] CHIP:DMG: AttributePathIB = - [1657906752.148183][2361:2361] CHIP:DMG: { - [1657906752.148240][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906752.148304][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906752.148378][2361:2361] CHIP:DMG: Attribute = 0x0000_0021, - [1657906752.148433][2361:2361] CHIP:DMG: } - [1657906752.148484][2361:2361] CHIP:DMG: - [1657906752.148551][2361:2361] CHIP:DMG: ], - [1657906752.148603][2361:2361] CHIP:DMG: - [1657906752.148651][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906752.148717][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906752.148760][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0022) - UltrasonicUnoccupiedToOccupiedThreshold optional attribute, if - ultrasonic sensor" - PICS: OCC.C.A0022 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - - ./chip-tool occupancysensing read ultrasonic-unoccupied-to-occupied-threshold 1 1 - - verify the " ultrasonic-unoccupied-to-occupied-threshold response" on the TH (all-cluster-app) log: - - [1657906770.663661][2361:2361] CHIP:IM: Received Read request - [1657906770.663787][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906770.663853][2361:2361] CHIP:DMG: { - [1657906770.663896][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906770.663943][2361:2361] CHIP:DMG: [ - [1657906770.663988][2361:2361] CHIP:DMG: AttributePathIB = - [1657906770.664055][2361:2361] CHIP:DMG: { - [1657906770.664107][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906770.664195][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906770.664255][2361:2361] CHIP:DMG: Attribute = 0x0000_0022, - [1657906770.664299][2361:2361] CHIP:DMG: } - [1657906770.664365][2361:2361] CHIP:DMG: - [1657906770.664415][2361:2361] CHIP:DMG: ], - [1657906770.664466][2361:2361] CHIP:DMG: - [1657906770.664530][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906770.664578][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906770.664621][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0030) - PhysicalContactOccupiedToUnoccupiedDelay optional attribute, if - Physical Contact sensor" - PICS: OCC.C.A0030 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - ./chip-tool occupancysensing read physical-contact-occupied-to-unoccupied-delay 1 1 - - verify the " physical-contact-occupied-to-unoccupied-delay response" on the TH (all-cluster-app) log: - - [1657906788.836643][2361:2361] CHIP:IM: Received Read request - [1657906788.836806][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906788.836862][2361:2361] CHIP:DMG: { - [1657906788.836928][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906788.836982][2361:2361] CHIP:DMG: [ - [1657906788.837032][2361:2361] CHIP:DMG: AttributePathIB = - [1657906788.837110][2361:2361] CHIP:DMG: { - [1657906788.837170][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906788.837246][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906788.837328][2361:2361] CHIP:DMG: Attribute = 0x0000_0030, - [1657906788.837387][2361:2361] CHIP:DMG: } - [1657906788.837464][2361:2361] CHIP:DMG: - [1657906788.837520][2361:2361] CHIP:DMG: ], - [1657906788.837579][2361:2361] CHIP:DMG: - [1657906788.837634][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906788.837706][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906788.837756][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0031) - PhysicalContactUnoccupiedToOccupiedDelay optional attribute, if - Physical Contact sensor" - PICS: OCC.C.A0031 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read physical-contact-unoccupied-to-occupied-delay 1 1 - - verify the " physical-contact-unoccupied-to-occupied-delay response" on the TH (all-cluster-app) log: - - [1657906806.229307][2361:2361] CHIP:IM: Received Read request - [1657906806.229449][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906806.229503][2361:2361] CHIP:DMG: { - [1657906806.229572][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906806.229628][2361:2361] CHIP:DMG: [ - [1657906806.229678][2361:2361] CHIP:DMG: AttributePathIB = - [1657906806.229759][2361:2361] CHIP:DMG: { - [1657906806.229823][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906806.229891][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906806.229972][2361:2361] CHIP:DMG: Attribute = 0x0000_0031, - [1657906806.230028][2361:2361] CHIP:DMG: } - [1657906806.230090][2361:2361] CHIP:DMG: - [1657906806.230166][2361:2361] CHIP:DMG: ], - [1657906806.230224][2361:2361] CHIP:DMG: - [1657906806.230279][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906806.230348][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906806.230399][2361:2361] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads from the TH the (0x0032) - PhysicalContactUnoccupiedToOccupiedThreshold optional attribute, if - Physical Contact sensor" - PICS: OCC.C.A0032 - verification: | - This is an Optional attribute, so its not compulsory to get the expected outcome - - - ./chip-tool occupancysensing read physical-contact-unoccupied-to-occupied-threshold 1 1 - - verify the " physical-contact-unoccupied-to-occupied-threshold response" on the TH (all-cluster-app) log: - - [1657906821.965692][2361:2361] CHIP:IM: Received Read request - [1657906821.965776][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906821.965808][2361:2361] CHIP:DMG: { - [1657906821.965831][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906821.965872][2361:2361] CHIP:DMG: [ - [1657906821.965902][2361:2361] CHIP:DMG: AttributePathIB = - [1657906821.965937][2361:2361] CHIP:DMG: { - [1657906821.965971][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906821.966019][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906821.966057][2361:2361] CHIP:DMG: Attribute = 0x0000_0032, - [1657906821.966092][2361:2361] CHIP:DMG: } - [1657906821.966135][2361:2361] CHIP:DMG: - [1657906821.966167][2361:2361] CHIP:DMG: ], - [1657906821.966197][2361:2361] CHIP:DMG: - [1657906821.966220][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906821.966241][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906821.966277][2361:2361] CHIP:DMG: }, - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_2_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_2_Simulated.yaml new file mode 100644 index 00000000000000..7a6a2e3c01e9fa --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_OCC_2_2_Simulated.yaml @@ -0,0 +1,106 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 30.2.1. [TC-OCC-2.2] Attributes with server as DUT + +PICS: + - OCC.C + +config: + nodeId: 0x12344321 + cluster: "Occupancy Sensing" + endpoint: 0 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "DUT reads from the TH the (0x0000) Occupancy attribute" + PICS: OCC.C.A0000 + wait: "readAttribute" + attribute: "occupancy" + + - label: "DUT reads from the TH the (0x0001) OccupancySensorType attribute" + PICS: OCC.C.A0001 + wait: "readAttribute" + attribute: "occupancy sensor type" + + - label: "DUT reads from the TH the (0x0002) OccupancySensorType attribute" + PICS: OCC.C.A0002 + wait: "readAttribute" + attribute: "occupancy sensor type bitmap" + + - label: + "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay + optional attribute" + PICS: OCC.C.A0010 + wait: "readAttribute" + attribute: "PIR occupied to unoccupied delay" + + - label: + "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay + optional attribute" + PICS: OCC.C.A0011 + wait: "readAttribute" + attribute: "PIR unoccupied to occupied delay" + + - label: + "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold + optional attribute" + PICS: OCC.C.A0012 + wait: "readAttribute" + attribute: "PIR unoccupied to occupied threshold" + + - label: + "DUT reads from the TH the (0x0020) + UltrasonicOccupiedToUnoccupiedDelay optional attribute" + PICS: OCC.C.A0020 + wait: "readAttribute" + attribute: "ultrasonic occupied to unoccupied delay" + + - label: + "DUT reads from the TH the (0x0021) + UltrasonicUnoccupiedToOccupiedDelay optional attribute" + PICS: OCC.C.A0021 + wait: "readAttribute" + attribute: "ultrasonic unoccupied to occupied delay" + + - label: + "DUT reads from the TH the (0x0022) + UltrasonicUnoccupiedToOccupiedThreshold optional attribute" + PICS: OCC.C.A0022 + wait: "readAttribute" + attribute: "ultrasonic unoccupied to occupied threshold" + + - label: + "DUT reads from the TH the (0x0030) + PhysicalContactOccupiedToUnoccupiedDelay optional attribute" + PICS: OCC.C.A0030 + wait: "readAttribute" + attribute: "physical contact occupied to unoccupied delay" + + - label: + "DUT reads from the TH the (0x0031) + PhysicalContactUnoccupiedToOccupiedDelay optional attribute" + PICS: OCC.C.A0031 + wait: "readAttribute" + attribute: "physical contact unoccupied to occupied delay" + + - label: + "DUT reads from the TH the (0x0032) + PhysicalContactUnoccupiedToOccupiedThreshold optional attribute" + PICS: OCC.C.A0032 + wait: "readAttribute" + attribute: "physical contact unoccupied to occupied threshold" diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml deleted file mode 100644 index 1e76d132199e79..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: - 3.2.4. [TC-OCC-2.4] OccupancySensorTypeBitmap and OccupancySensorType - interdependency with client as DUT - -PICS: - - OCC.S - -config: - nodeId: 0x12344321 - cluster: "Occupancy Sensing" - endpoint: 1 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "Commission DUT to TH" - verification: | - - disabled: true - - - label: "DUT reads OccupancySensorType attribute from TH" - PICS: OCC.C.A0001 - verification: | - ./chip-tool occupancysensing read occupancy-sensor-type 1 1 - - verify the " occupancy-sensor-type response" on the TH (all-cluster-app) log: - - [1657906852.014556][2361:2361] CHIP:IM: Received Read request - [1657906852.014724][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906852.014775][2361:2361] CHIP:DMG: { - [1657906852.014817][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906852.014865][2361:2361] CHIP:DMG: [ - [1657906852.014910][2361:2361] CHIP:DMG: AttributePathIB = - [1657906852.014965][2361:2361] CHIP:DMG: { - [1657906852.015017][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906852.015075][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906852.015134][2361:2361] CHIP:DMG: Attribute = 0x0000_0001, - [1657906852.015189][2361:2361] CHIP:DMG: } - [1657906852.015241][2361:2361] CHIP:DMG: - [1657906852.015290][2361:2361] CHIP:DMG: ], - [1657906852.015336][2361:2361] CHIP:DMG: - [1657906852.015385][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906852.015431][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906852.015474][2361:2361] CHIP:DMG: }, - disabled: true - - - label: "DUT reads OccupancySensorTypeBitmap attribute from TH" - PICS: OCC.C.A0002 - verification: | - ./chip-tool occupancysensing read occupancy-sensor-type-bitmap 1 1 - - verify the " occupancy-sensor-type-bitmap response" on the TH (all-cluster-app) log: - - [1657906867.937264][2361:2361] CHIP:IM: Received Read request - [1657906867.937390][2361:2361] CHIP:DMG: ReadRequestMessage = - [1657906867.937440][2361:2361] CHIP:DMG: { - [1657906867.937498][2361:2361] CHIP:DMG: AttributePathIBs = - [1657906867.937546][2361:2361] CHIP:DMG: [ - [1657906867.937591][2361:2361] CHIP:DMG: AttributePathIB = - [1657906867.937663][2361:2361] CHIP:DMG: { - [1657906867.937715][2361:2361] CHIP:DMG: Endpoint = 0x1, - [1657906867.937771][2361:2361] CHIP:DMG: Cluster = 0x406, - [1657906867.937853][2361:2361] CHIP:DMG: Attribute = 0x0000_0002, - [1657906867.937915][2361:2361] CHIP:DMG: } - [1657906867.937986][2361:2361] CHIP:DMG: - [1657906867.938034][2361:2361] CHIP:DMG: ], - [1657906867.938085][2361:2361] CHIP:DMG: - [1657906867.938148][2361:2361] CHIP:DMG: isFabricFiltered = true, - [1657906867.938187][2361:2361] CHIP:DMG: InteractionModelRevision = 1 - [1657906867.938213][2361:2361] CHIP:DMG: }, - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_4_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_4_Simulated.yaml new file mode 100644 index 00000000000000..e9d45210f6930c --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_OCC_2_4_Simulated.yaml @@ -0,0 +1,38 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 30.2.1. [TC-OCC-2.4] Attributes with server as DUT + +PICS: + - OCC.C + +config: + nodeId: 0x12344321 + cluster: "Occupancy Sensing" + endpoint: 0 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "TH reads OccupancySensorType attribute from DUT" + PICS: OCC.S.A0001 + wait: "readAttribute" + attribute: "occupancy sensor type" + + - label: "TH reads OccupancySensorTypeBitmap attribute from DUT" + PICS: OCC.S.A0002 + wait: "readAttribute" + attribute: "occupancy sensor type bitmap" diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml deleted file mode 100644 index b35dd23cf69b84..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 74.3.1. [TC-SWTCH-3.1] Global attributes with client as DUT - -PICS: - - SWTCH.C - - SWTCH.C.AM-READ - - SWTCH.C.AO-READ - - SWTCH.C.AM-WRITE - - SWTCH.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: - "DUT reads all supported mandatory attributes from TH one at a time in - a manufacturer specific order" - verification: | - ./chip-tool switch read number-of-positions 1 1 - - verify on TH all-cluster-app number-of-positions attribute receives the right ReadRequest for the data sent in the above command: - - [1650539419.579618][3678:3678] CHIP:IM: Received Read request - [1650539419.579683][3678:3678] CHIP:DMG: ReadRequestMessage = - [1650539419.579718][3678:3678] CHIP:DMG: { - [1650539419.579748][3678:3678] CHIP:DMG: AttributePathIBs = - [1650539419.579783][3678:3678] CHIP:DMG: [ - [1650539419.579816][3678:3678] CHIP:DMG: AttributePathIB = - [1650539419.579857][3678:3678] CHIP:DMG: { - [1650539419.579895][3678:3678] CHIP:DMG: Endpoint = 0x1, - [1650539419.579943][3678:3678] CHIP:DMG: Cluster = 0x3b, - [1650539419.579990][3678:3678] CHIP:DMG: Attribute = 0x0000_0000, - [1650539419.580034][3678:3678] CHIP:DMG: } - [1650539419.580075][3678:3678] CHIP:DMG: - [1650539419.580111][3678:3678] CHIP:DMG: ], - [1650539419.580150][3678:3678] CHIP:DMG: - [1650539419.580184][3678:3678] CHIP:DMG: isFabricFiltered = true, - [1650539419.580218][3678:3678] CHIP:DMG: InteractionModelRevision = 1 - [1650539419.580250][3678:3678] CHIP:DMG: }, - - ./chip-tool switch read current-position 1 1 - - verify on TH all-cluster-app current-position attribute receives the right ReadRequest for the data sent in the above command: - - [1650539484.199120][3678:3678] CHIP:DMG: ReadRequestMessage = - [1650539484.199188][3678:3678] CHIP:DMG: { - [1650539484.199243][3678:3678] CHIP:DMG: AttributePathIBs = - [1650539484.199308][3678:3678] CHIP:DMG: [ - [1650539484.199368][3678:3678] CHIP:DMG: AttributePathIB = - [1650539484.199442][3678:3678] CHIP:DMG: { - [1650539484.199515][3678:3678] CHIP:DMG: Endpoint = 0x1, - [1650539484.199600][3678:3678] CHIP:DMG: Cluster = 0x3b, - [1650539484.199685][3678:3678] CHIP:DMG: Attribute = 0x0000_0001, - [1650539484.199760][3678:3678] CHIP:DMG: } - [1650539484.199835][3678:3678] CHIP:DMG: - [1650539484.199901][3678:3678] CHIP:DMG: ], - [1650539484.199971][3678:3678] CHIP:DMG: - [1650539484.200035][3678:3678] CHIP:DMG: isFabricFiltered = true, - [1650539484.200098][3678:3678] CHIP:DMG: InteractionModelRevision = 1 - [1650539484.200156][3678:3678] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - verify on Reference app receives the right response for the data sent in the above commands - - ./chip-tool switch read multi-press-max 1 1 - - verify on TH all-cluster-app multi-press-max attribute receives the right ReadRequest for the data sent in the above command: - - [1646209889.768919][2190:2190] CHIP:DMG: ReadRequestMessage = - [1646209889.768984][2190:2190] CHIP:DMG: { - [1646209889.769012][2190:2190] CHIP:DMG: AttributePathIBs = - [1646209889.769049][2190:2190] CHIP:DMG: [ - [1646209889.769076][2190:2190] CHIP:DMG: AttributePathIB = - [1646209889.769107][2190:2190] CHIP:DMG: { - [1646209889.769154][2190:2190] CHIP:DMG: Endpoint = 0x1, - [1646209889.769205][2190:2190] CHIP:DMG: Cluster = 0x3b, - [1646209889.769254][2190:2190] CHIP:DMG: Attribute = 0x0000_0002, - [1646209889.769292][2190:2190] CHIP:DMG: } - [1646209889.769325][2190:2190] CHIP:DMG: - [1646209889.769367][2190:2190] CHIP:DMG: ], - [1646209889.769401][2190:2190] CHIP:DMG: - [1646209889.769432][2190:2190] CHIP:DMG: isFabricFiltered = false, - [1646209889.769461][2190:2190] CHIP:DMG: InteractionModelRevision = 1 - [1646209889.769499][2190:2190] CHIP:DMG: }, - [1646209889.769572][2190:2190] CHIP:DMG: IM RH moving to [GeneratingReports] - 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: | - 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: | - This cluster doesn"t have any writable attributes - disabled: true - - - label: - "Configure TH such that it implements mandatory and none of the - optional attributes of the server-side of the cluster, and that it - also reflects this in global attributes such as FeatureMap and - AttributeList. Commission DUT to TH again" - verification: | - ./chip-tool switch read feature-map 1 1 - - verify on TH all-clusters-minimal-app feature-map attribute receives the right ReadRequest for the data sent in the above command - - [1659597205.359182][2409:2409] CHIP:IM: Received Read request - [1659597205.359281][2409:2409] CHIP:DMG: ReadRequestMessage = - [1659597205.359315][2409:2409] CHIP:DMG: { - [1659597205.359344][2409:2409] CHIP:DMG: AttributePathIBs = - [1659597205.359378][2409:2409] CHIP:DMG: [ - [1659597205.359409][2409:2409] CHIP:DMG: AttributePathIB = - [1659597205.359447][2409:2409] CHIP:DMG: { - [1659597205.359487][2409:2409] CHIP:DMG: Endpoint = 0x1, - [1659597205.359530][2409:2409] CHIP:DMG: Cluster = 0x3b, - [1659597205.359572][2409:2409] CHIP:DMG: Attribute = 0x0000_FFFC, - [1659597205.359615][2409:2409] CHIP:DMG: } - [1659597205.359654][2409:2409] CHIP:DMG: - [1659597205.359689][2409:2409] CHIP:DMG: ], - [1659597205.359726][2409:2409] CHIP:DMG: - [1659597205.359760][2409:2409] CHIP:DMG: isFabricFiltered = true, - [1659597205.359792][2409:2409] CHIP:DMG: InteractionModelRevision = 1 - [1659597205.359822][2409:2409] CHIP:DMG: }, - [1659597205.359912][2409:2409] CHIP:DMG: IM RH moving to [GeneratingReports]1 - - ./chip-tool switch read attribute-list 1 1 - - verify on TH all-clusters-minimal-app attribute-list receives the right ReadRequest for the data sent in the above command - - [1659597229.124241][2409:2409] CHIP:IM: Received Read request - [1659597229.124312][2409:2409] CHIP:DMG: ReadRequestMessage = - [1659597229.124335][2409:2409] CHIP:DMG: { - [1659597229.124353][2409:2409] CHIP:DMG: AttributePathIBs = - [1659597229.124376][2409:2409] CHIP:DMG: [ - [1659597229.124396][2409:2409] CHIP:DMG: AttributePathIB = - [1659597229.124428][2409:2409] CHIP:DMG: { - [1659597229.124455][2409:2409] CHIP:DMG: Endpoint = 0x1, - [1659597229.124484][2409:2409] CHIP:DMG: Cluster = 0x3b, - [1659597229.124512][2409:2409] CHIP:DMG: Attribute = 0x0000_FFFB, - [1659597229.124538][2409:2409] CHIP:DMG: } - [1659597229.124564][2409:2409] CHIP:DMG: - [1659597229.124588][2409:2409] CHIP:DMG: ], - [1659597229.124612][2409:2409] CHIP:DMG: - [1659597229.124635][2409:2409] CHIP:DMG: isFabricFiltered = true, - [1659597229.124656][2409:2409] CHIP:DMG: InteractionModelRevision = 1 - [1659597229.124676][2409:2409] CHIP:DMG: }, - [1659597229.124740][2409:2409] CHIP:DMG: IM RH moving to [GeneratingReports - - - - ./chip-tool switch read number-of-positions 1 1 - - verify on TH all-clusters-minimal-app number-of-positions attribute receives the right ReadRequest for the data sent in the above command - - [1650539419.579618][3678:3678] CHIP:IM: Received Read request - [1650539419.579683][3678:3678] CHIP:DMG: ReadRequestMessage = - [1650539419.579718][3678:3678] CHIP:DMG: { - [1650539419.579748][3678:3678] CHIP:DMG: AttributePathIBs = - [1650539419.579783][3678:3678] CHIP:DMG: [ - [1650539419.579816][3678:3678] CHIP:DMG: AttributePathIB = - [1650539419.579857][3678:3678] CHIP:DMG: { - [1650539419.579895][3678:3678] CHIP:DMG: Endpoint = 0x1, - [1650539419.579943][3678:3678] CHIP:DMG: Cluster = 0x3b, - [1650539419.579990][3678:3678] CHIP:DMG: Attribute = 0x0000_0000, - [1650539419.580034][3678:3678] CHIP:DMG: } - [1650539419.580075][3678:3678] CHIP:DMG: - [1650539419.580111][3678:3678] CHIP:DMG: ], - [1650539419.580150][3678:3678] CHIP:DMG: - [1650539419.580184][3678:3678] CHIP:DMG: isFabricFiltered = true, - [1650539419.580218][3678:3678] CHIP:DMG: InteractionModelRevision = 1 - [1650539419.580250][3678:3678] CHIP:DMG: }, - - ./chip-tool switch read current-position 1 1 - - verify on TH all-clusters-minimal-app current-position attribute receives the right ReadRequest for the data sent in the above command - - [1650539484.199120][3678:3678] CHIP:DMG: ReadRequestMessage = - [1650539484.199188][3678:3678] CHIP:DMG: { - [1650539484.199243][3678:3678] CHIP:DMG: AttributePathIBs = - [1650539484.199308][3678:3678] CHIP:DMG: [ - [1650539484.199368][3678:3678] CHIP:DMG: AttributePathIB = - [1650539484.199442][3678:3678] CHIP:DMG: { - [1650539484.199515][3678:3678] CHIP:DMG: Endpoint = 0x1, - [1650539484.199600][3678:3678] CHIP:DMG: Cluster = 0x3b, - [1650539484.199685][3678:3678] CHIP:DMG: Attribute = 0x0000_0001, - [1650539484.199760][3678:3678] CHIP:DMG: } - [1650539484.199835][3678:3678] CHIP:DMG: - [1650539484.199901][3678:3678] CHIP:DMG: ], - [1650539484.199971][3678:3678] CHIP:DMG: - [1650539484.200035][3678:3678] CHIP:DMG: isFabricFiltered = true, - [1650539484.200098][3678:3678] CHIP:DMG: InteractionModelRevision = 1 - [1650539484.200156][3678:3678] CHIP:DMG: }, - disabled: true - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - TH all-clusters-minimal-app does not support optional attributes - - - ./chip-tool switch read multi-press-max 1 1 - 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: | - This cluster doesn"t have any writable attributes - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml deleted file mode 100644 index be6d0a80a186dc..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml +++ /dev/null @@ -1,140 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default - -name: 3.3.1. [TC-ULABEL-3.1] User label cluster [DUT-client] - -PICS: - - ULABEL.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: "TH is commissioned with DUT" - verification: | - - disabled: true - - - label: "DUT reads LabelList from the TH" - PICS: ULABEL.C.A0000 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool userlabel read label-list 1 0 - - Verify DUT receives LabelList attribute response on the TH(all-clusters-app) Log: - [1659609723.950391][2409:2409] CHIP:EM: Handling via exchange: 38919r, Delegate: 0xaaaadba0fee0 - [1659609723.950455][2409:2409] CHIP:IM: Received Read request - [1659609723.950570][2409:2409] CHIP:DMG: ReadRequestMessage = - [1659609723.950611][2409:2409] CHIP:DMG: { - [1659609723.950644][2409:2409] CHIP:DMG: AttributePathIBs = - [1659609723.950685][2409:2409] CHIP:DMG: [ - [1659609723.950722][2409:2409] CHIP:DMG: AttributePathIB = - [1659609723.950770][2409:2409] CHIP:DMG: { - [1659609723.950814][2409:2409] CHIP:DMG: Endpoint = 0x0, - [1659609723.950868][2409:2409] CHIP:DMG: Cluster = 0x41, - [1659609723.950926][2409:2409] CHIP:DMG: Attribute = 0x0000_0000, - [1659609723.950980][2409:2409] CHIP:DMG: } - [1659609723.951024][2409:2409] CHIP:DMG: - [1659609723.951065][2409:2409] CHIP:DMG: ], - [1659609723.951111][2409:2409] CHIP:DMG: - [1659609723.951152][2409:2409] CHIP:DMG: isFabricFiltered = true, - [1659609723.951192][2409:2409] CHIP:DMG: InteractionModelRevision = 1 - [1659609723.951228][2409:2409] CHIP:DMG: }, - [1659609723.951341][2409:2409] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true - - - label: - "DUT sends a write request to the TH to write to an entry in the - LabelList" - PICS: ULABEL.C.A0000 - verification: | - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) - - ./chip-tool userlabel write label-list '[{"label":"room", "value":"bedroom 1"}, {"label":"orientation", "value":"east"}]' 1 0 - - Verify DUT receives LabelList attribute response on the TH(all-clusters-app) Log: - - [1659609795.578716][2409:2409] CHIP:DMG: IM WH moving to [Initialized] - [1659609795.578784][2409:2409] CHIP:DMG: WriteRequestMessage = - [1659609795.578809][2409:2409] CHIP:DMG: { - [1659609795.578829][2409:2409] CHIP:DMG: suppressResponse = false, - [1659609795.578852][2409:2409] CHIP:DMG: timedRequest = false, - [1659609795.578873][2409:2409] CHIP:DMG: AttributeDataIBs = - [1659609795.578900][2409:2409] CHIP:DMG: [ - [1659609795.578922][2409:2409] CHIP:DMG: AttributeDataIB = - [1659609795.578951][2409:2409] CHIP:DMG: { - [1659609795.578974][2409:2409] CHIP:DMG: AttributePathIB = - [1659609795.579007][2409:2409] CHIP:DMG: { - [1659609795.579035][2409:2409] CHIP:DMG: Endpoint = 0x0, - [1659609795.579069][2409:2409] CHIP:DMG: Cluster = 0x41, - [1659609795.579101][2409:2409] CHIP:DMG: Attribute = 0x0000_0000, - [1659609795.579133][2409:2409] CHIP:DMG: } - [1659609795.579166][2409:2409] CHIP:DMG: - [1659609795.579197][2409:2409] CHIP:DMG: Data = [ - [1659609795.579227][2409:2409] CHIP:DMG: - [1659609795.579345][2409:2409] CHIP:DMG: ], - [1659609795.579372][2409:2409] CHIP:DMG: }, - [1659609795.579401][2409:2409] CHIP:DMG: - [1659609795.579422][2409:2409] CHIP:DMG: AttributeDataIB = - [1659609795.579446][2409:2409] CHIP:DMG: { - [1659609795.579468][2409:2409] CHIP:DMG: AttributePathIB = - [1659609795.579498][2409:2409] CHIP:DMG: { - [1659609795.579526][2409:2409] CHIP:DMG: Endpoint = 0x0, - [1659609795.579558][2409:2409] CHIP:DMG: Cluster = 0x41, - [1659609795.579591][2409:2409] CHIP:DMG: Attribute = 0x0000_0000, - [1659609795.579623][2409:2409] CHIP:DMG: ListIndex = Null, - [1659609795.579653][2409:2409] CHIP:DMG: } - [1659609795.579682][2409:2409] CHIP:DMG: - [1659609795.579712][2409:2409] CHIP:DMG: Data = - [1659609795.579743][2409:2409] CHIP:DMG: { - [1659609795.579777][2409:2409] CHIP:DMG: 0x0 = "room" (4 chars), - [1659609795.579809][2409:2409] CHIP:DMG: 0x1 = "bedroom 1" (9 chars), - [1659609795.579841][2409:2409] CHIP:DMG: }, - [1659609795.579871][2409:2409] CHIP:DMG: }, - [1659609795.579903][2409:2409] CHIP:DMG: - [1659609795.579924][2409:2409] CHIP:DMG: AttributeDataIB = - [1659609795.579950][2409:2409] CHIP:DMG: { - [1659609795.579972][2409:2409] CHIP:DMG: AttributePathIB = - [1659609795.580002][2409:2409] CHIP:DMG: { - [1659609795.580033][2409:2409] CHIP:DMG: Endpoint = 0x0, - [1659609795.580065][2409:2409] CHIP:DMG: Cluster = 0x41, - [1659609795.580098][2409:2409] CHIP:DMG: Attribute = 0x0000_0000, - [1659609795.580130][2409:2409] CHIP:DMG: ListIndex = Null, - [1659609795.580157][2409:2409] CHIP:DMG: } - [1659609795.580186][2409:2409] CHIP:DMG: - [1659609795.580215][2409:2409] CHIP:DMG: Data = - [1659609795.580241][2409:2409] CHIP:DMG: { - [1659609795.580270][2409:2409] CHIP:DMG: 0x0 = "orientation" (11 chars), - [1659609795.580302][2409:2409] CHIP:DMG: 0x1 = "east" (4 chars), - [1659609795.580332][2409:2409] CHIP:DMG: }, - [1659609795.580357][2409:2409] CHIP:DMG: }, - [1659609795.580383][2409:2409] CHIP:DMG: - [1659609795.580404][2409:2409] CHIP:DMG: ], - [1659609795.580437][2409:2409] CHIP:DMG: - [1659609795.580459][2409:2409] CHIP:DMG: moreChunkedMessages = false, - [1659609795.580480][2409:2409] CHIP:DMG: InteractionModelRevision = 1 - [1659609795.580500][2409:2409] CHIP:DMG: }, - [1659609795.580591][2409:2409] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0041 e=0 p=m - [1659609795.580626][2409:2409] CHIP:DMG: AccessControl: allowed - [1659609795.580892][2409:2409] CHIP:DL: writing settings to file (/tmp/chip_kvs-utHZk3) - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1_Simulated.yaml new file mode 100644 index 00000000000000..e42190de8b9e53 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1_Simulated.yaml @@ -0,0 +1,40 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: 92.1. [TC-ULABEL-3.1] Global Attributes [DUT-server] + +PICS: + - ULABEL.C + +config: + nodeId: 0x12344321 + cluster: "User Label" + endpoint: 0 + +tests: + - label: "Wait for the device to be commissioned" + cluster: "DelayCommands" + command: "WaitForCommissioning" + + - label: "Read attribute: LabelList" + PICS: ULABEL.C.A0000 + wait: "readAttribute" + attribute: "label list" + + - label: "write attribute: LabelList" + PICS: ULABEL.C.A0000 + wait: "writeAttribute" + attribute: "label list" + arguments: + value: diff --git a/src/app/tests/suites/ciTests.json b/src/app/tests/suites/ciTests.json index 8e02636bd76894..61286397607778 100644 --- a/src/app/tests/suites/ciTests.json +++ b/src/app/tests/suites/ciTests.json @@ -4,7 +4,10 @@ "Test_TC_ACL_1_1", "Test_TC_ACL_2_1", "Test_TC_ACL_2_2", - "Test_TC_ACL_2_3" + "Test_TC_ACL_2_3", + "Test_TC_ACL_2_4", + "Test_TC_ACL_2_7", + "Test_TC_ACL_2_9" ], "BooleanState": ["Test_TC_BOOL_1_1", "Test_TC_BOOL_2_1"], "Binding": ["Test_TC_BIND_1_1"], @@ -61,7 +64,11 @@ "Test_TC_ILL_2_1", "Test_TC_ILL_2_2" ], - "OccupancySensing": ["Test_TC_OCC_1_1", "Test_TC_OCC_2_1"], + "OccupancySensing": [ + "Test_TC_OCC_1_1", + "Test_TC_OCC_2_1", + "Test_TC_OCC_2_3" + ], "LevelControl": [ "Test_TC_LVL_1_1", "Test_TC_LVL_2_1", @@ -73,7 +80,7 @@ ], "LocalizationConfiguration": ["Test_TC_LCFG_1_1"], "TimeFormatLocalization": ["Test_TC_LTIME_1_2"], - "UnitLocalization": ["Test_TC_LUNIT_1_2"], + "UnitLocalization": ["Test_TC_LUNIT_1_2", "Test_TC_LUNIT_3_1"], "UserLabel": [ "Test_TC_ULABEL_1_1", "Test_TC_ULABEL_2_1", diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index a70896e1adea1c..a090ba676de5f0 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -242,12 +242,7 @@ "WiFiNetworkDiagnostics": ["Test_TC_DGWIFI_2_2"], "WindowCovering": ["Test_TC_WNCV_6_1", "Test_TC_WNCV_7_1"], "FlowMeasurement": ["Test_TC_FLW_2_2"], - "OccupancySensing": [ - "Test_TC_OCC_2_2", - "Test_TC_OCC_2_3", - "Test_TC_OCC_2_4", - "Test_TC_OCC_3_1" - ], + "OccupancySensing": ["Test_TC_OCC_3_1"], "PowerSource": ["Test_TC_PS_2_2"], "BooleanState": ["Test_TC_BOOL_2_2"], "ColorControl": [ @@ -272,7 +267,7 @@ "Test_TC_DRLK_3_2", "Test_TC_DRLK_3_3" ], - "LocalizationConfiguration": ["Test_TC_LCFG_2_1", "Test_TC_LCFG_3_1"], + "LocalizationConfiguration": ["Test_TC_LCFG_2_1"], "LevelControl": ["Test_TC_LVL_2_3", "Test_TC_LVL_7_1", "Test_TC_LVL_8_1"], "OnOff": ["Test_TC_OO_2_3", "Test_TC_OO_3_1", "Test_TC_OO_3_2"], "RelativeHumidityMeasurement": ["Test_TC_RH_2_2"], @@ -294,11 +289,7 @@ "Test_TC_LTIME_2_1", "Test_TC_LTIME_3_1" ], - "UnitLocalization": [ - "Test_TC_LUNIT_1_1", - "Test_TC_LUNIT_2_1", - "Test_TC_LUNIT_3_1" - ], + "UnitLocalization": [], "Binding": ["Test_TC_BIND_2_1", "Test_TC_BIND_2_2", "Test_TC_BIND_2_3"], "Scenes": [ "Test_TC_S_1_1", @@ -309,15 +300,12 @@ ], "PumpConfigurationControl": ["Test_TC_PCC_3_1"], "AccessControl": [ - "Test_TC_ACL_2_4", "Test_TC_ACL_2_5", "Test_TC_ACL_2_6", - "Test_TC_ACL_2_7", "Test_TC_ACL_2_8", - "Test_TC_ACL_2_9", "Test_TC_ACL_2_10" ], - "UserLabel": ["Test_TC_ULABEL_3_1"], + "UserLabel": [], "BridgedDeviceBasicInformation": [ "Test_TC_BRBINFO_2_2", "Test_TC_BRBINFO_2_3" diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index a4c3223b511588..326ffd667d5218 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -40,6 +40,9 @@ class TestList : public Command printf("Test_TC_ACL_2_1\n"); printf("Test_TC_ACL_2_2\n"); printf("Test_TC_ACL_2_3\n"); + printf("Test_TC_ACL_2_4\n"); + printf("Test_TC_ACL_2_7\n"); + printf("Test_TC_ACL_2_9\n"); printf("Test_TC_BOOL_1_1\n"); printf("Test_TC_BOOL_2_1\n"); printf("Test_TC_BRBINFO_1_1\n"); @@ -97,6 +100,7 @@ class TestList : public Command printf("Test_TC_LVL_6_1\n"); printf("Test_TC_LCFG_1_1\n"); printf("Test_TC_LUNIT_1_2\n"); + printf("Test_TC_LUNIT_3_1\n"); printf("Test_TC_LTIME_1_2\n"); printf("Test_TC_LOWPOWER_1_1\n"); printf("Test_TC_KEYPADINPUT_1_2\n"); @@ -141,6 +145,7 @@ class TestList : public Command printf("OTA_SuccessfulTransfer\n"); printf("Test_TC_OCC_1_1\n"); printf("Test_TC_OCC_2_1\n"); + printf("Test_TC_OCC_2_3\n"); printf("Test_TC_OO_1_1\n"); printf("Test_TC_OO_2_1\n"); printf("Test_TC_OO_2_2\n"); @@ -488,9 +493,6 @@ class ManualTestList : public Command printf("Test_TC_WNCV_6_1\n"); printf("Test_TC_WNCV_7_1\n"); printf("Test_TC_FLW_2_2\n"); - printf("Test_TC_OCC_2_2\n"); - printf("Test_TC_OCC_2_3\n"); - printf("Test_TC_OCC_2_4\n"); printf("Test_TC_OCC_3_1\n"); printf("Test_TC_PS_2_2\n"); printf("Test_TC_BOOL_2_2\n"); @@ -513,7 +515,6 @@ class ManualTestList : public Command printf("Test_TC_DRLK_3_2\n"); printf("Test_TC_DRLK_3_3\n"); printf("Test_TC_LCFG_2_1\n"); - printf("Test_TC_LCFG_3_1\n"); printf("Test_TC_LVL_2_3\n"); printf("Test_TC_LVL_7_1\n"); printf("Test_TC_LVL_8_1\n"); @@ -540,9 +541,6 @@ class ManualTestList : public Command printf("Test_TC_LTIME_1_1\n"); printf("Test_TC_LTIME_2_1\n"); printf("Test_TC_LTIME_3_1\n"); - printf("Test_TC_LUNIT_1_1\n"); - printf("Test_TC_LUNIT_2_1\n"); - printf("Test_TC_LUNIT_3_1\n"); printf("Test_TC_BIND_2_1\n"); printf("Test_TC_BIND_2_2\n"); printf("Test_TC_BIND_2_3\n"); @@ -552,14 +550,10 @@ class ManualTestList : public Command printf("Test_TC_S_2_3\n"); printf("Test_TC_S_3_1\n"); printf("Test_TC_PCC_3_1\n"); - printf("Test_TC_ACL_2_4\n"); printf("Test_TC_ACL_2_5\n"); printf("Test_TC_ACL_2_6\n"); - printf("Test_TC_ACL_2_7\n"); printf("Test_TC_ACL_2_8\n"); - printf("Test_TC_ACL_2_9\n"); printf("Test_TC_ACL_2_10\n"); - printf("Test_TC_ULABEL_3_1\n"); printf("Test_TC_BRBINFO_2_2\n"); printf("Test_TC_BRBINFO_2_3\n"); printf("Test_TC_ACE_1_1\n"); @@ -2937,18 +2931,23 @@ class Test_TC_ACL_2_3Suite : public TestCommand } }; -class Test_TC_BOOL_1_1Suite : public TestCommand +class Test_TC_ACL_2_4Suite : public TestCommand { public: - Test_TC_BOOL_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BOOL_1_1", 6, credsIssuerConfig) + Test_TC_ACL_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_4", 44, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("CommissionerNodeId", 0, UINT64_MAX, &mCommissionerNodeId); + AddArgument("CAT1", 0, UINT64_MAX, &mCat1); + AddArgument("CAT2", 0, UINT64_MAX, &mCat2); + AddArgument("CAT3", 0, UINT64_MAX, &mCat3); + AddArgument("CAT4", 0, UINT64_MAX, &mCat4); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BOOL_1_1Suite() {} + ~Test_TC_ACL_2_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -2959,8 +2958,18 @@ class Test_TC_BOOL_1_1Suite : public TestCommand chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; + chip::Optional mCommissionerNodeId; + chip::Optional mCat1; + chip::Optional mCat2; + chip::Optional mCat3; + chip::Optional mCat4; chip::Optional mTimeout; + uint8_t CurrentFabricIndex; + uint16_t MAXSUBJECTS; + uint16_t TargetsPerAccessControlEntry; + uint16_t MAXENTRIES; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -2980,415 +2989,826 @@ class Test_TC_BOOL_1_1Suite : public TestCommand case 1: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint16_t value; + uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + CurrentFabricIndex = value; } break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint32_t value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("featureMap", value, 0UL)); - VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 1)); + } } break; case 3: 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); - } break; case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); { auto iter_0 = value.begin(); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 0)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 1U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNonNull("acl[1].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[0]", iter_3.GetValue(), 111ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[1]", iter_3.GetValue(), 222ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[2]", iter_3.GetValue(), 333ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[3]", iter_3.GetValue(), 444ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[1].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNonNull("acl[1].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 11UL)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 22U)); + VerifyOrReturn(CheckValueNull("acl[1].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckNoMoreListItems("acl[1].targets.Value()", iter_3, 1)); + } + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 2)); + VerifyOrReturn(CheckValue("acl[2].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[2].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNonNull("acl[2].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[0]", iter_3.GetValue(), 555ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[1]", iter_3.GetValue(), 666ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[2]", iter_3.GetValue(), 777ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[3]", iter_3.GetValue(), 888ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[2].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNonNull("acl[2].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 55UL)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 66U)); + VerifyOrReturn(CheckValueNull("acl[2].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckNoMoreListItems("acl[2].targets.Value()", iter_3, 1)); + } + VerifyOrReturn(CheckValue("acl[2].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 3)); } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); { auto iter_0 = value.begin(); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 0)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 4U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNonNull("acl[1].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[0]", iter_3.GetValue(), 444ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[1]", iter_3.GetValue(), 333ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[2]", iter_3.GetValue(), 222ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[3]", iter_3.GetValue(), 111ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[1].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNonNull("acl[1].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 44UL)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 33U)); + VerifyOrReturn(CheckValueNull("acl[1].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckNoMoreListItems("acl[1].targets.Value()", iter_3, 1)); + } + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 2)); + VerifyOrReturn(CheckValue("acl[2].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[2].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[2].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[0]", iter_3.GetValue(), 888ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[1]", iter_3.GetValue(), 777ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[2]", iter_3.GetValue(), 666ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[3]", iter_3.GetValue(), 555ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[2].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNonNull("acl[2].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 88UL)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 77U)); + VerifyOrReturn(CheckValueNull("acl[2].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckNoMoreListItems("acl[2].targets.Value()", iter_3, 1)); + } + VerifyOrReturn(CheckValue("acl[2].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 3)); } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); } 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, "read the global attribute: ClusterRevision"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::ClusterRevision::Id, - true, chip::NullOptional); - } - case 2: { - LogStep(2, "Read the global attribute: FeatureMap"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::FeatureMap::Id, true, - chip::NullOptional); - } - case 3: { - LogStep(3, "Read the global attribute: AttributeList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::AttributeList::Id, - true, chip::NullOptional); - } - case 4: { - LogStep(4, "Read the global attribute: AcceptedCommandList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, - BooleanState::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); - } - case 5: { - LogStep(5, "Read the global attribute: GeneratedCommandList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, - BooleanState::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_BOOL_2_1Suite : public TestCommand -{ -public: - Test_TC_BOOL_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BOOL_2_1", 2, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_BOOL_2_1Suite() {} - - 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: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; - case 1: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - bool value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "boolean", "boolean")); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 1U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[1].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[0]", iter_3.GetValue(), 111ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[1]", iter_3.GetValue(), 222ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[2]", iter_3.GetValue(), 333ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[3]", iter_3.GetValue(), 444ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[1].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNonNull("acl[1].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 11UL)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 22U)); + VerifyOrReturn(CheckValueNull("acl[1].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].targets.Value()", iter_3, 1)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[1].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[1].cluster.Value()", iter_3.GetValue().cluster.Value(), 33UL)); + VerifyOrReturn(CheckValueNull("acl[1].targets.Value()[1].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[1].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[1].deviceType.Value()", iter_3.GetValue().deviceType.Value(), 44UL)); + VerifyOrReturn( + CheckNoMoreListItems("acl[1].targets.Value()", iter_3, 2)); + } + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 2)); + VerifyOrReturn(CheckValue("acl[2].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[2].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNonNull("acl[2].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[0]", iter_3.GetValue(), 555ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[1]", iter_3.GetValue(), 666ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[2]", iter_3.GetValue(), 777ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[3]", iter_3.GetValue(), 888ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[2].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNonNull("acl[2].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 55UL)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 66U)); + VerifyOrReturn(CheckValueNull("acl[2].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].targets.Value()", iter_3, 1)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[1].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[1].cluster.Value()", iter_3.GetValue().cluster.Value(), 77UL)); + VerifyOrReturn(CheckValueNull("acl[2].targets.Value()[1].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[1].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[1].deviceType.Value()", iter_3.GetValue().deviceType.Value(), 88UL)); + VerifyOrReturn( + CheckNoMoreListItems("acl[2].targets.Value()", iter_3, 2)); + } + VerifyOrReturn(CheckValue("acl[2].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 3)); + } } 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, "Read mandatory non-global attribute: StateValue"); - VerifyOrDo(!ShouldSkip("BOOL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::StateValue::Id, true, - chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_BRBINFO_1_1Suite : public TestCommand -{ -public: - Test_TC_BRBINFO_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_BRBINFO_1_1", 20, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_BRBINFO_1_1Suite() {} - - 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: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; break; - case 1: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint16_t value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 1U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNull("acl[1].subjects", iter_0.GetValue().subjects)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 11UL)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 22U)); + VerifyOrReturn(CheckValueNull("acl[1].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].targets.Value()", iter_3, 1)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[1].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[1].cluster.Value()", iter_3.GetValue().cluster.Value(), 33UL)); + VerifyOrReturn(CheckValueNull("acl[1].targets.Value()[1].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn(CheckValueNonNull("acl[1].targets.Value()[1].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckValue("acl[1].targets.Value()[1].deviceType.Value()", iter_3.GetValue().deviceType.Value(), 44UL)); + VerifyOrReturn( + CheckNoMoreListItems("acl[1].targets.Value()", iter_3, 2)); + } + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 2)); + VerifyOrReturn(CheckValue("acl[2].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[2].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNull("acl[2].subjects", iter_0.GetValue().subjects)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets", iter_0.GetValue().targets)); + { + auto iter_3 = iter_0.GetValue().targets.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].targets.Value()", iter_3, 0)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].cluster.Value()", iter_3.GetValue().cluster.Value(), 55UL)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[0].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[0].endpoint.Value()", iter_3.GetValue().endpoint.Value(), 66U)); + VerifyOrReturn(CheckValueNull("acl[2].targets.Value()[0].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].targets.Value()", iter_3, 1)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[1].cluster", iter_3.GetValue().cluster)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[1].cluster.Value()", iter_3.GetValue().cluster.Value(), 77UL)); + VerifyOrReturn(CheckValueNull("acl[2].targets.Value()[1].endpoint", iter_3.GetValue().endpoint)); + VerifyOrReturn(CheckValueNonNull("acl[2].targets.Value()[1].deviceType", iter_3.GetValue().deviceType)); + VerifyOrReturn( + CheckValue("acl[2].targets.Value()[1].deviceType.Value()", iter_3.GetValue().deviceType.Value(), 88UL)); + VerifyOrReturn( + CheckNoMoreListItems("acl[2].targets.Value()", iter_3, 2)); + } + VerifyOrReturn(CheckValue("acl[2].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 3)); + } } break; - case 2: + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint32_t value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("featureMap", value, 0UL)); - VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - } - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::DecodableList value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 1U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[1].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[0]", iter_3.GetValue(), 111ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[1]", iter_3.GetValue(), 222ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[2]", iter_3.GetValue(), 333ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[3]", iter_3.GetValue(), 444ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[1].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNull("acl[1].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 2)); + VerifyOrReturn(CheckValue("acl[2].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[2].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNonNull("acl[2].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[0]", iter_3.GetValue(), 555ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[1]", iter_3.GetValue(), 666ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[2]", iter_3.GetValue(), 777ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[2].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[2].subjects.Value()[3]", iter_3.GetValue(), 888ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[2].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNull("acl[2].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[2].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 3)); + } } break; - case 4: + 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); - } break; - case 5: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 3U)); + VerifyOrReturn(CheckValueNull("acl[1].subjects", iter_0.GetValue().subjects)); + VerifyOrReturn(CheckValueNull("acl[1].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 2)); + } } break; - case 6: + 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); - } break; - case 7: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 2U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNull("acl[1].subjects", iter_0.GetValue().subjects)); + VerifyOrReturn(CheckValueNull("acl[1].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 2)); + } } break; - case 8: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); + MAXSUBJECTS = value; } break; - case 9: + 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); - } + shouldContinue = true; break; - case 10: + 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 9UL)); - } + shouldContinue = true; break; - case 11: + case 20: 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); - } break; - case 12: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 11UL)); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[1].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[0]", iter_3.GetValue(), + mCat1.HasValue() ? mCat1.Value() : 65520ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 1)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[1]", iter_3.GetValue(), + mCat2.HasValue() ? mCat2.Value() : 65521ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 2)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[2]", iter_3.GetValue(), + mCat3.HasValue() ? mCat3.Value() : 65522ULL)); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[1].subjects.Value()", iter_3, 3)); + VerifyOrReturn(CheckValue("acl[1].subjects.Value()[3]", iter_3.GetValue(), + mCat4.HasValue() ? mCat4.Value() : 65523ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[1].subjects.Value()", + iter_3, 4)); + } + VerifyOrReturn(CheckValueNull("acl[1].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 2)); + } } break; - case 13: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 12UL)); + TargetsPerAccessControlEntry = value; } break; - case 14: + case 23: 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 13UL)); - } + shouldContinue = true; break; - case 15: + case 24: 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 14UL)); - } + shouldContinue = true; break; - case 16: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + uint16_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 15UL)); + MAXENTRIES = value; } break; - case 17: + case 26: 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); - } break; - case 18: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); { auto iter_0 = value.begin(); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 0)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 1)); + VerifyOrReturn(CheckValue("acl[1].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[1].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNull("acl[1].subjects", iter_0.GetValue().subjects)); + VerifyOrReturn(CheckValueNull("acl[1].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[1].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 2)); + VerifyOrReturn(CheckValue("acl[2].privilege", iter_0.GetValue().privilege, 3U)); + VerifyOrReturn(CheckValue("acl[2].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNull("acl[2].subjects", iter_0.GetValue().subjects)); + VerifyOrReturn(CheckValueNull("acl[2].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[2].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 3)); } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 19: + case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlEntryStruct::DecodableType> + value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); { auto iter_0 = value.begin(); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 0)); + VerifyOrReturn(CheckNextListItemDecodes("acl", iter_0, 0)); + VerifyOrReturn(CheckValue("acl[0].privilege", iter_0.GetValue().privilege, 5U)); + VerifyOrReturn(CheckValue("acl[0].authMode", iter_0.GetValue().authMode, 2U)); + VerifyOrReturn(CheckValueNonNull("acl[0].subjects", iter_0.GetValue().subjects)); + { + auto iter_3 = iter_0.GetValue().subjects.Value().begin(); + VerifyOrReturn(CheckNextListItemDecodes( + "acl[0].subjects.Value()", iter_3, 0)); + VerifyOrReturn(CheckValue("acl[0].subjects.Value()[0]", iter_3.GetValue(), + mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL)); + VerifyOrReturn(CheckNoMoreListItems("acl[0].subjects.Value()", + iter_3, 1)); + } + VerifyOrReturn(CheckValueNull("acl[0].targets", iter_0.GetValue().targets)); + VerifyOrReturn(CheckValue("acl[0].fabricIndex", iter_0.GetValue().fabricIndex, CurrentFabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("acl", iter_0, 1)); } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; + case 30: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 31: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 32: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 33: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 34: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 35: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 36: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 37: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 38: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 39: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 40: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 41: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 42: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; + case 43: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -3405,44 +3825,2656 @@ class Test_TC_BRBINFO_1_1Suite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); + LogStep(0, "Step 1: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, "TH reads the ClusterRevision from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, - BridgedDeviceBasic::Attributes::ClusterRevision::Id, true, chip::NullOptional); + LogStep(1, "Step 2:TH1 reads DUT Endpoint 0 OperationalCredentials cluster CurrentFabricIndex attribute"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "TH reads the FeatureMap from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, - BridgedDeviceBasic::Attributes::FeatureMap::Id, true, chip::NullOptional); + LogStep(2, "Step 3:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); } case 3: { - LogStep(3, "TH reads AttributeList from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, - BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + LogStep( + 3, + "Step 4:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of AccessControlEntryStruct " + "containing 3 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) Subjects field: [N1] " + "Targets field: null 2 . struct Privilege field: View (1) AuthMode field: CASE (3) Subjects field: [111, 222, 333, " + "444] Targets field: [{Cluster: 11}, {Endpoint: 22}] 3..struct Privilege field: Operate (3) AuthMode field: Group " + "(3) Subjects field: [555, 666, 777, 888] Targets field: [{Cluster: 55}, {Endpoint: 66}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(3); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(1); + listHolder_0->mList[1].authMode = + static_cast(3); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 111ULL; + listHolder_3->mList[1] = 222ULL; + listHolder_3->mList[2] = 333ULL; + listHolder_3->mList[3] = 444ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 11UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 22U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[2].privilege = + static_cast(3); + listHolder_0->mList[2].authMode = + static_cast(3); + listHolder_0->mList[2].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 555ULL; + listHolder_3->mList[1] = 666ULL; + listHolder_3->mList[2] = 777ULL; + listHolder_3->mList[3] = 888ULL; + listHolder_0->mList[2].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[2].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 55UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 66U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[2].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[2].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 3); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); } case 4: { - LogStep(4, "TH reads optional attribute(VendorName) in AttributeList"); - VerifyOrDo(!ShouldSkip("BRBINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, - BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + LogStep(4, "Step 5:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); } case 5: { - LogStep(5, "TH reads optional attribute(VendorID) in AttributeList"); - VerifyOrDo(!ShouldSkip("BRBINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, - BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + LogStep( + 5, + "Step 6:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of AccessControlEntryStruct " + "containing 3 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE (2) Subjects field: [N1] " + "Targets field: null 2.struct Privilege field: Manage (4) AuthMode field: Group (3) Subjects field: [444, 333, " + "222, 111] Targets field: [{Cluster: 44}, {Endpoint: 33}] 3.struct Privilege field: Administer (5) AuthMode field: " + "CASE (2) Subjects field: [888, 777, 666, 555] Targets field: [{Cluster: 88}, {Endpoint: 77}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(3); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(4); + listHolder_0->mList[1].authMode = + static_cast(3); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 444ULL; + listHolder_3->mList[1] = 333ULL; + listHolder_3->mList[2] = 222ULL; + listHolder_3->mList[3] = 111ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 44UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 33U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[2].privilege = + static_cast(5); + listHolder_0->mList[2].authMode = + static_cast(2); + listHolder_0->mList[2].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 888ULL; + listHolder_3->mList[1] = 777ULL; + listHolder_3->mList[2] = 666ULL; + listHolder_3->mList[3] = 555ULL; + listHolder_0->mList[2].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[2].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 88UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 77U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[2].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[2].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 3); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); } case 6: { - LogStep(6, "TH reads optional attribute(ProductName) in AttributeList"); - VerifyOrDo(!ShouldSkip("BRBINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, - BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + LogStep(6, "Step 7:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 7: { + LogStep(7, + "Step 8:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 3 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: View (1) AuthMode field: CASE (2) " + "Subjects field: [111, 222, 333, 444] Targets field: [{Cluster: 11, Endpoint: 22}, {Cluster: 33, DeviceType: " + "44}] 3.struct Privilege field: Operate (3) AuthMode field: Group (3) Subjects field: [555, 666, 777, 888] " + "Targets field: [{Cluster: 55, Endpoint: 66}, {Cluster: 77, DeviceType: 88}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(3); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(1); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 111ULL; + listHolder_3->mList[1] = 222ULL; + listHolder_3->mList[2] = 333ULL; + listHolder_3->mList[3] = 444ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(2); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 11UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 22U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_3->mList[1].cluster.SetNonNull(); + listHolder_3->mList[1].cluster.Value() = 33UL; + listHolder_3->mList[1].endpoint.SetNull(); + listHolder_3->mList[1].deviceType.SetNonNull(); + listHolder_3->mList[1].deviceType.Value() = 44UL; + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 2); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[2].privilege = + static_cast(3); + listHolder_0->mList[2].authMode = + static_cast(3); + listHolder_0->mList[2].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 555ULL; + listHolder_3->mList[1] = 666ULL; + listHolder_3->mList[2] = 777ULL; + listHolder_3->mList[3] = 888ULL; + listHolder_0->mList[2].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[2].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(2); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 55UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 66U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_3->mList[1].cluster.SetNonNull(); + listHolder_3->mList[1].cluster.Value() = 77UL; + listHolder_3->mList[1].endpoint.SetNull(); + listHolder_3->mList[1].deviceType.SetNonNull(); + listHolder_3->mList[1].deviceType.Value() = 88UL; + + listHolder_0->mList[2].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 2); + } + listHolder_0->mList[2].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 3); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 8: { + LogStep(8, "Step 9:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 9: { + LogStep(9, + "Step 10:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 3 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: View (1) AuthMode field: CASE (2) " + "Subjects field: null Targets field: [{Cluster: 11, Endpoint: 22}, {Cluster: 33, DeviceType: 44}] 3.struct " + "Privilege field: Operate (3) AuthMode field: Group (3) Subjects field: null Targets field: [{Cluster: 55, " + "Endpoint: 66}, {Cluster: 77, DeviceType: 88}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(3); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(1); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(2); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 11UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 22U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_3->mList[1].cluster.SetNonNull(); + listHolder_3->mList[1].cluster.Value() = 33UL; + listHolder_3->mList[1].endpoint.SetNull(); + listHolder_3->mList[1].deviceType.SetNonNull(); + listHolder_3->mList[1].deviceType.Value() = 44UL; + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 2); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[2].privilege = + static_cast(3); + listHolder_0->mList[2].authMode = + static_cast(3); + listHolder_0->mList[2].subjects.SetNull(); + listHolder_0->mList[2].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(2); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 55UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 66U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_3->mList[1].cluster.SetNonNull(); + listHolder_3->mList[1].cluster.Value() = 77UL; + listHolder_3->mList[1].endpoint.SetNull(); + listHolder_3->mList[1].deviceType.SetNonNull(); + listHolder_3->mList[1].deviceType.Value() = 88UL; + + listHolder_0->mList[2].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 2); + } + listHolder_0->mList[2].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 3); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 10: { + LogStep(10, "Step 11:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, + "Step 12:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 3 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: View (1) AuthMode field: CASE (2) " + "Subjects field: [111, 222, 333, 444] Targets field: null 3.struct Privilege field: Operate (3) AuthMode " + "field: Group (3) Subjects field: [555, 666, 777, 888] Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(3); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(1); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 111ULL; + listHolder_3->mList[1] = 222ULL; + listHolder_3->mList[2] = 333ULL; + listHolder_3->mList[3] = 444ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[2].privilege = + static_cast(3); + listHolder_0->mList[2].authMode = + static_cast(3); + listHolder_0->mList[2].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 555ULL; + listHolder_3->mList[1] = 666ULL; + listHolder_3->mList[2] = 777ULL; + listHolder_3->mList[3] = 888ULL; + listHolder_0->mList[2].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[2].targets.SetNull(); + listHolder_0->mList[2].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 3); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 12: { + LogStep(12, "Step 13:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 13: { + LogStep(13, + "Step 14:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: Group (3) " + "Subjects field: null Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(3); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 14: { + LogStep(14, "Step 15:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 15: { + LogStep(15, + "Step 16:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: ProxyView (2) AuthMode field: CASE (2) " + "Subjects field: null Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(2); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 16: { + LogStep(16, "Step 17:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 17: { + LogStep(17, "Step 18:TH1 reads DUT AccessControl cluster SubjectsPerAccessControlEntry attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Attributes::SubjectsPerAccessControlEntry::Id, true, chip::NullOptional); + } + case 18: { + LogStep(18, + "Step 19:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: list of MAXSUBJECTS random node IDs (stored as SUBJECTS) Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 19: { + LogStep(19, "Step 20:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 20: { + LogStep(20, + "Step 21:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: [CAT1, CAT2, CAT3, CAT4] Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(4); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCat1.HasValue() ? mCat1.Value() : 65520ULL; + listHolder_3->mList[1] = mCat2.HasValue() ? mCat2.Value() : 65521ULL; + listHolder_3->mList[2] = mCat3.HasValue() ? mCat3.Value() : 65522ULL; + listHolder_3->mList[3] = mCat4.HasValue() ? mCat4.Value() : 65523ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 4); + } + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 21: { + LogStep(21, "Step 22:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 22: { + LogStep(22, "Step 23:TH1 reads AccessControl cluster TargetsPerAccessControlEntry attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Attributes::TargetsPerAccessControlEntry::Id, true, chip::NullOptional); + } + case 23: { + LogStep(23, + "Step 24:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field:null Targets field: list of MAXTARGETS targets {Cluster: random} (stored as TARGETS)"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 24: { + LogStep(24, "Step 25:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000 && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 25: { + LogStep(25, "Step 26:TH1 reads AccessControl cluster AccessControlEntriesPerFabric attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Attributes::AccessControlEntriesPerFabric::Id, true, chip::NullOptional); + } + case 26: { + LogStep(26, + "Step 27:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing MAXENTRIES elements 1.struct Privilege field: Administer (5) AuthMode " + "field: CASE (2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode " + "field: CASE (2) Subjects field: null Targets field: null subsequent elements same as second element"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(3); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[2].privilege = + static_cast(3); + listHolder_0->mList[2].authMode = + static_cast(2); + listHolder_0->mList[2].subjects.SetNull(); + listHolder_0->mList[2].targets.SetNull(); + listHolder_0->mList[2].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 3); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 27: { + LogStep(27, "Step 28:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 28: { + LogStep(28, + "Step 29:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: PASE (1) " + "Subjects field: null Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(1); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 29: { + LogStep(29, "Step 30:TH1 reads AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 30: { + LogStep(30, + "Step 31:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Administer (5) AuthMode field: Group " + "(3) Subjects field: null Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(5); + listHolder_0->mList[1].authMode = + static_cast(3); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 31: { + LogStep(31, + "Step 32:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute, value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: invalid value (not 1-5) AuthMode " + "field: CASE (2) Subjects field: null Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(6); + listHolder_0->mList[1].authMode = + static_cast(3); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 32: { + LogStep(32, + "Step 33:TH1 writes AccessControl cluster ACL attribute, value is list of AccessControlEntryStruct containing " + "2 elements"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(6); + listHolder_0->mList[1].authMode = + static_cast(4); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 33: { + LogStep(33, + "Step 34:TH1 writes AccessControl cluster ACL attribute, value is list of AccessControlEntryStruct containing " + "2 elements"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 0ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 34: { + LogStep(34, + "Step 35:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: [0xFFFFFFFFFFFFFFFF] Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 18446744073709551615ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 35: { + LogStep(35, + "Step 36:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: [0xFFFFFFFD00000000] Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 18446744060824649728ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 36: { + LogStep(36, + "Step 37:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: [0xFFFFFFFFFFFF0000] Targets field: null"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 18446744073709486080ULL; + listHolder_0->mList[1].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[1].targets.SetNull(); + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 37: { + LogStep(37, + "Step 38:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: null Targets field: [{}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNull(); + listHolder_3->mList[0].endpoint.SetNull(); + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 38: { + LogStep(38, + "Step 39:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: null Targets field: [{Cluster: 0xFFFFFFFF}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 4294967295UL; + listHolder_3->mList[0].endpoint.SetNull(); + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 39: { + LogStep(39, + "Step 40:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1. struct Privilege field: Administer (5) AuthMode field: " + "CASE (2) Subjects field: [N1] Targets field: null 2. struct Privilege field: Operate (3) AuthMode field: " + "CASE (2) Subjects field: null Targets field: [{Endpoint: 65535}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNull(); + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 65535U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 40: { + LogStep(40, + "Step 41:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: null Targets field: [{DeviceType: 0xFFFFFFFF}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNull(); + listHolder_3->mList[0].endpoint.SetNull(); + listHolder_3->mList[0].deviceType.SetNonNull(); + listHolder_3->mList[0].deviceType.Value() = 4294967295UL; + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 41: { + LogStep(41, + "Step 42:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: null Targets field: [{Endpoint: 22, DeviceType: 33}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNull(); + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 22U; + listHolder_3->mList[0].deviceType.SetNonNull(); + listHolder_3->mList[0].deviceType.Value() = 33UL; + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 42: { + LogStep(42, + "Step 43:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is list of " + "AccessControlEntryStruct containing 2 elements 1.struct Privilege field: Administer (5) AuthMode field: CASE " + "(2) Subjects field: [N1] Targets field: null 2.struct Privilege field: Operate (3) AuthMode field: CASE (2) " + "Subjects field: null Targets field: [{Cluster: 11, Endpoint: 22, DeviceType: 33}]"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(3); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 11UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 22U; + listHolder_3->mList[0].deviceType.SetNonNull(); + listHolder_3->mList[0].deviceType.Value() = 33UL; + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 43: { + LogStep(43, "Step 44:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute value is an empty list"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + value = chip::app::DataModel::List(); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_ACL_2_7Suite : public TestCommand +{ +public: + Test_TC_ACL_2_7Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_7", 12, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); + AddArgument("TH1CommissionerNodeId", 0, UINT64_MAX, &mTH1CommissionerNodeId); + AddArgument("TH2CommissionerNodeId", 0, UINT64_MAX, &mTH2CommissionerNodeId); + AddArgument("payload", &mPayload); + AddArgument("D_OK_EMPTY", &mDOkEmpty); + AddArgument("D_OK_SINGLE", &mDOkSingle); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_ACL_2_7Suite() {} + + 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 mNodeId2; + chip::Optional mTH1CommissionerNodeId; + chip::Optional mTH2CommissionerNodeId; + chip::Optional mPayload; + chip::Optional mDOkEmpty; + chip::Optional mDOkSingle; + chip::Optional mTimeout; + + uint8_t TH1FabricIndex; + uint8_t TH2FabricIndex; + + 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)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + TH1FabricIndex = value; + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + 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)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + TH2FabricIndex = value; + } + 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)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlExtensionStruct::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("extension", iter_0, 0)); + VerifyOrReturn(CheckValueAsString( + "extension[0].data", iter_0.GetValue().data, + mDOkEmpty.HasValue() ? mDOkEmpty.Value() : chip::ByteSpan(chip::Uint8::from_const_char("\x17\x18"), 2))); + VerifyOrReturn(CheckValue("extension[0].fabricIndex", iter_0.GetValue().fabricIndex, TH1FabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("extension", iter_0, 1)); + } + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList< + chip::app::Clusters::AccessControl::Structs::AccessControlExtensionStruct::DecodableType> + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNextListItemDecodes("extension", iter_0, 0)); + VerifyOrReturn(CheckValueAsString( + "extension[0].data", iter_0.GetValue().data, + mDOkSingle.HasValue() + ? mDOkSingle.Value() + : chip::ByteSpan(chip::Uint8::from_const_char( + "\x17\xD0\x00\x00\xF1\xFF\x01\x00\x3D\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64" + "\x2E\x20\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x73\x69\x6E\x67\x6C\x65\x20\x65" + "\x6C\x65\x6D\x65\x6E\x74\x20\x6C\x69\x76\x69\x6E\x67\x20\x61\x73\x20\x61\x20\x63" + "\x68\x61\x72\x73\x74\x72\x69\x6E\x67\x00\x18"), + 71))); + VerifyOrReturn(CheckValue("extension[0].fabricIndex", iter_0.GetValue().fabricIndex, TH2FabricIndex)); + VerifyOrReturn(CheckNoMoreListItems("extension", iter_0, 1)); + } + } + break; + case 10: + switch (mTestSubStepIndex) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::AccessControl::Events::AccessControlExtensionChanged::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + mTestSubStepIndex++; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + break; + } + break; + case 11: + switch (mTestSubStepIndex) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::AccessControl::Events::AccessControlExtensionChanged::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + mTestSubStepIndex++; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + break; + } + 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, "Step 1: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, "Step 2:TH1 reads OperationalCredentials cluster CurrentFabricIndex attribute"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 3: { + LogStep(3, "Step 4:TH2 starts a commissioning process with DUT"); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 4: { + LogStep(4, "DUT is commissioned by TH2 on Fabric ID2 "); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId2.HasValue() ? mNodeId2.Value() : 51966ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 5: { + LogStep(5, "Step 5:TH2 reads OperationalCredentials cluster CurrentFabricIndex attribute"); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, + "Step 6:TH1 writes DUT Endpoint 0 AccessControl cluster Extension attribute, value is list of " + "AccessControlExtensionStruct containing 1 element"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(1); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].data = + mDOkEmpty.HasValue() ? mDOkEmpty.Value() : chip::ByteSpan(chip::Uint8::from_const_char("\x17\x18"), 2); + listHolder_0->mList[0].fabricIndex = TH1FabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 1); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Extension::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 7: { + LogStep(7, + "Step 7:TH2 writes DUT Endpoint 0 AccessControl cluster Extension attribute, value is list of " + "AccessControlExtensionStruct containing 1 element"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(1); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].data = mDOkSingle.HasValue() + ? mDOkSingle.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\x17\xD0\x00\x00\xF1\xFF\x01\x00\x3D\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x2E\x20\x54\x68\x69" + "\x73\x20\x69\x73\x20\x61\x20\x73\x69\x6E\x67\x6C\x65\x20\x65\x6C\x65\x6D\x65\x6E\x74\x20\x6C\x69\x76" + "\x69\x6E\x67\x20\x61\x73\x20\x61\x20\x63\x68\x61\x72\x73\x74\x72\x69\x6E\x67\x00\x18"), + 71); + listHolder_0->mList[0].fabricIndex = TH2FabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 1); + } + return WriteAttribute(kIdentityBeta, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Extension::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 8: { + LogStep(8, "Step 8:TH1 reads AccessControl cluster Extension attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Extension::Id, true, + chip::NullOptional); + } + case 9: { + LogStep(9, "Step 9:TH2 reads AccessControl cluster Extension attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Extension::Id, true, + chip::NullOptional); + } + case 10: { + LogStep(10, "Step 10:TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlExtensionChanged event"); + VerifyOrDo(!ShouldSkip("ACL.S.E01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + mTestSubStepCount = 1; + return ReadEvent(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Events::AccessControlExtensionChanged::Id, false, chip::NullOptional); + } + case 11: { + LogStep(11, "Step 11:TH2 reads DUT Endpoint 0 AccessControl cluster AccessControlExtensionChanged event"); + VerifyOrDo(!ShouldSkip("ACL.S.E01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + mTestSubStepCount = 1; + return ReadEvent(kIdentityBeta, GetEndpoint(0), AccessControl::Id, + AccessControl::Events::AccessControlExtensionChanged::Id, false, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_ACL_2_9Suite : public TestCommand +{ +public: + Test_TC_ACL_2_9Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_9", 12, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); + AddArgument("CommissionerNodeId", 0, UINT64_MAX, &mCommissionerNodeId); + AddArgument("payload", &mPayload); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_ACL_2_9Suite() {} + + 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 mNodeId2; + chip::Optional mCommissionerNodeId; + chip::Optional mPayload; + chip::Optional mTimeout; + + uint8_t CurrentFabricIndex; + + 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)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + CurrentFabricIndex = value; + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinValue("value", value, 4U)); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinValue("value", value, 3U)); + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintMinValue("value", value, 3U)); + } + break; + case 10: + switch (mTestSubStepIndex) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + mTestSubStepIndex++; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + break; + } + break; + case 11: + switch (mTestSubStepIndex) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + mTestSubStepIndex++; + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + break; + } + 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, "Step 1: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, "TH1 reads OperationalCredentials cluster CurrentFabricIndex attribute"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Step 2:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(1); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(4); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 1); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 3: { + LogStep(3, "Step 3:TH1 reads DUT Endpoint 0 AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, true, + chip::NullOptional); + } + case 4: { + LogStep(4, "Step 4:TH1 writes DUT Endpoint 0 AccessControl cluster ACL attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(1); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = mCommissionerNodeId.HasValue() ? mCommissionerNodeId.Value() : 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = CurrentFabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 1); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 5: { + LogStep(5, "Step 5:TH1 reads DUT Endpoint 0 AccessControl cluster Extension attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Extension::Id, true, + chip::NullOptional); + } + case 6: { + LogStep(6, "Step 6:TH1 writes DUT Endpoint 0 AccessControl cluster Extension attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::DataModel::List value; + + value = chip::app::DataModel::List(); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Extension::Id, + value, chip::NullOptional, chip::NullOptional); + } + case 7: { + LogStep(7, "Step 7:TH1 reads DUT Endpoint 0 AccessControl cluster SubjectsPerAccessControlEntry attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Attributes::SubjectsPerAccessControlEntry::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "Step 8:TH1 reads DUT Endpoint 0 AccessControl cluster TargetsPerAccessControlEntry attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Attributes::TargetsPerAccessControlEntry::Id, true, chip::NullOptional); + } + case 9: { + LogStep(9, "Step 9:TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlEntriesPerFabric attribute"); + VerifyOrDo(!ShouldSkip("ACL.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Attributes::AccessControlEntriesPerFabric::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, "TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlEntryChanged event"); + VerifyOrDo(!ShouldSkip("ACL.S.E00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + mTestSubStepCount = 1; + return ReadEvent(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Events::AccessControlEntryChanged::Id, false, chip::NullOptional); + } + case 11: { + LogStep(11, "TH1 reads DUT Endpoint 0 AccessControl cluster AccessControlExtensionChanged event"); + VerifyOrDo(!ShouldSkip("ACL.S.E01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + mTestSubStepCount = 1; + return ReadEvent(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, + AccessControl::Events::AccessControlExtensionChanged::Id, false, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_BOOL_1_1Suite : public TestCommand +{ +public: + Test_TC_BOOL_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BOOL_1_1", 6, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_BOOL_1_1Suite() {} + + 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)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); + } + 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))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + 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))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + 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, "read the global attribute: ClusterRevision"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::ClusterRevision::Id, + true, chip::NullOptional); + } + case 2: { + LogStep(2, "Read the global attribute: FeatureMap"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::FeatureMap::Id, true, + chip::NullOptional); + } + case 3: { + LogStep(3, "Read the global attribute: AttributeList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::AttributeList::Id, + true, chip::NullOptional); + } + case 4: { + LogStep(4, "Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, + BooleanState::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "Read the global attribute: GeneratedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, + BooleanState::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_BOOL_2_1Suite : public TestCommand +{ +public: + Test_TC_BOOL_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BOOL_2_1", 2, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_BOOL_2_1Suite() {} + + 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)); + { + bool value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "boolean", "boolean")); + } + 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, "Read mandatory non-global attribute: StateValue"); + VerifyOrDo(!ShouldSkip("BOOL.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), BooleanState::Id, BooleanState::Attributes::StateValue::Id, true, + chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_BRBINFO_1_1Suite : public TestCommand +{ +public: + Test_TC_BRBINFO_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_BRBINFO_1_1", 20, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_BRBINFO_1_1Suite() {} + + 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)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); + } + break; + case 4: + 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", "list")); + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 9UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 11UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 12UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 13UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 14UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 15UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); + } + 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))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + 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))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + 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, "TH reads the ClusterRevision from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, + BridgedDeviceBasic::Attributes::ClusterRevision::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "TH reads the FeatureMap from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, + BridgedDeviceBasic::Attributes::FeatureMap::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "TH reads AttributeList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, + BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads optional attribute(VendorName) in AttributeList"); + VerifyOrDo(!ShouldSkip("BRBINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, + BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads optional attribute(VendorID) in AttributeList"); + VerifyOrDo(!ShouldSkip("BRBINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, + BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "TH reads optional attribute(ProductName) in AttributeList"); + VerifyOrDo(!ShouldSkip("BRBINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasic::Id, + BridgedDeviceBasic::Attributes::AttributeList::Id, true, chip::NullOptional); } case 7: { LogStep(7, "TH reads optional attribute(NodeLabel) in AttributeList"); @@ -22854,38 +25886,220 @@ class Test_TC_LCFG_1_1Suite : public TestCommand } case 1: { LogStep(1, "TH reads the ClusterRevision from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, - LocalizationConfiguration::Attributes::ClusterRevision::Id, true, chip::NullOptional); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::ClusterRevision::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "TH reads the FeatureMap from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::FeatureMap::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "TH reads AttributeList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "TH reads AcceptedCommandList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "TH reads GeneratedCommandList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_LUNIT_1_2Suite : public TestCommand +{ +public: + Test_TC_LUNIT_1_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LUNIT_1_2", 8, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LUNIT_1_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)); + { + uint16_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + } + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); + } + 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); + } + break; + case 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", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + } + 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))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + 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))); + { + auto iter_0 = value.begin(); + VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + 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, "TH reads the ClusterRevision from DUT"); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { LogStep(2, "TH reads the FeatureMap from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, - LocalizationConfiguration::Attributes::FeatureMap::Id, true, chip::NullOptional); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afffc && !LUNIT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, UnitLocalization::Attributes::FeatureMap::Id, + true, chip::NullOptional); } case 3: { - LogStep(3, "TH reads AttributeList from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, - LocalizationConfiguration::Attributes::AttributeList::Id, true, chip::NullOptional); + LogStep(3, "Given LUNIT.S.F00(TEMP) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afffc && LUNIT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, UnitLocalization::Attributes::FeatureMap::Id, + true, chip::NullOptional); } case 4: { - LogStep(4, "TH reads AcceptedCommandList from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, - LocalizationConfiguration::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + LogStep(4, "TH reads AttributeList from DUT"); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::AttributeList::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "TH reads GeneratedCommandList from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), LocalizationConfiguration::Id, - LocalizationConfiguration::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + LogStep(5, "TH reads Feature dependent(LUNIT.S.F00) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afffb && LUNIT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "TH reads AcceptedCommandList from DUT"); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 7: { + LogStep(7, "TH reads GeneratedCommandList from DUT"); + VerifyOrDo(!ShouldSkip("LUNIT.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } } return CHIP_NO_ERROR; } }; -class Test_TC_LUNIT_1_2Suite : public TestCommand +class Test_TC_LUNIT_3_1Suite : public TestCommand { public: - Test_TC_LUNIT_1_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LUNIT_1_2", 8, credsIssuerConfig) + Test_TC_LUNIT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LUNIT_3_1", 9, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -22893,7 +26107,7 @@ class Test_TC_LUNIT_1_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LUNIT_1_2Suite() {} + ~Test_TC_LUNIT_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -22925,76 +26139,47 @@ class Test_TC_LUNIT_1_2Suite : public TestCommand case 1: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint16_t value; + chip::app::Clusters::UnitLocalization::TempUnit value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("clusterRevision", value, 1U)); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); } break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint32_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("featureMap", value, 0UL)); - VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - } break; case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint32_t value; + chip::app::Clusters::UnitLocalization::TempUnit value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); + VerifyOrReturn(CheckValue("temperatureUnit", value, 0U)); } 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", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65531UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65532UL)); - VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); - } break; case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::Clusters::UnitLocalization::TempUnit value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckValue("temperatureUnit", value, 1U)); } 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))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNoMoreListItems("acceptedCommandList", iter_0, 0)); - } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); - } break; case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::Clusters::UnitLocalization::TempUnit value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - { - auto iter_0 = value.begin(); - VerifyOrReturn(CheckNoMoreListItems("generatedCommandList", iter_0, 0)); - } - VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckValue("temperatureUnit", value, 2U)); } break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -23018,46 +26203,64 @@ class Test_TC_LUNIT_1_2Suite : public TestCommand return WaitForCommissionee(kIdentityAlpha, value); } case 1: { - LogStep(1, "TH reads the ClusterRevision from DUT"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(1, "TH reads TemperatureUnit attribute from DUT"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::ClusterRevision::Id, true, chip::NullOptional); + UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "TH reads the FeatureMap from DUT"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afffc && !LUNIT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, UnitLocalization::Attributes::FeatureMap::Id, - true, chip::NullOptional); + LogStep(2, "TH writes 0 (Fahrenheit) to TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Fahrenheit"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::UnitLocalization::TempUnit value; + value = static_cast(0); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); } case 3: { - LogStep(3, "Given LUNIT.S.F00(TEMP) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afffc && LUNIT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, UnitLocalization::Attributes::FeatureMap::Id, - true, chip::NullOptional); + LogStep(3, "TH reads TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Fahrenheit"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "TH reads AttributeList from DUT"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::AttributeList::Id, true, chip::NullOptional); + LogStep(4, "TH writes 1 (Celsius) to TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Celsius"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::UnitLocalization::TempUnit value; + value = static_cast(1); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); } case 5: { - LogStep(5, "TH reads Feature dependent(LUNIT.S.F00) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afffb && LUNIT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "TH reads TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Celsius"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::AttributeList::Id, true, chip::NullOptional); + UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "TH reads AcceptedCommandList from DUT"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + LogStep(6, "TH writes 2 (Kelvin) to TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Kelvin"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::UnitLocalization::TempUnit value; + value = static_cast(2); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); } case 7: { - LogStep(7, "TH reads GeneratedCommandList from DUT"); - VerifyOrDo(!ShouldSkip("LUNIT.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "TH reads TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Kelvin"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "TH writes 5 to TemperatureUnit attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::UnitLocalization::TempUnit value; + value = static_cast(5); + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, + UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); } } return CHIP_NO_ERROR; @@ -30469,6 +33672,105 @@ class Test_TC_OCC_2_1Suite : public TestCommand } }; +class Test_TC_OCC_2_3Suite : public TestCommand +{ +public: + Test_TC_OCC_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OCC_2_3", 3, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_OCC_2_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)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U)); + } + 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, "Reads mandatory attribute constrains: OccupancySensorType"); + VerifyOrDo(!ShouldSkip("OCC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OccupancySensing::Id, + OccupancySensing::Attributes::OccupancySensorType::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Reads mandatory attribute constrains: OccupancySensorTypeBitmap"); + VerifyOrDo(!ShouldSkip("OCC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OccupancySensing::Id, + OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_OO_1_1Suite : public TestCommand { public: @@ -96478,217 +99780,6 @@ class Test_TC_FLW_2_2Suite : public TestCommand } }; -class Test_TC_OCC_2_2Suite : public TestCommand -{ -public: - Test_TC_OCC_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OCC_2_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OCC_2_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OCC_2_3Suite : public TestCommand -{ -public: - Test_TC_OCC_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OCC_2_3", 3, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OCC_2_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)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 3U)); - } - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "bitmap8", "bitmap8")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 7U)); - } - 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, "Reads mandatory attribute constrains: OccupancySensorType"); - VerifyOrDo(!ShouldSkip("OCC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OccupancySensing::Id, - OccupancySensing::Attributes::OccupancySensorType::Id, true, chip::NullOptional); - } - case 2: { - LogStep(2, "Reads mandatory attribute constrains: OccupancySensorTypeBitmap"); - VerifyOrDo(!ShouldSkip("OCC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OccupancySensing::Id, - OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id, true, chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OCC_2_4Suite : public TestCommand -{ -public: - Test_TC_OCC_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OCC_2_4", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OCC_2_4Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_OCC_3_1Suite : public TestCommand { public: @@ -101478,62 +104569,6 @@ class Test_TC_LCFG_2_1Suite : public TestCommand } }; -class Test_TC_LCFG_3_1Suite : public TestCommand -{ -public: - Test_TC_LCFG_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LCFG_3_1", 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_LCFG_3_1Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_LVL_2_3Suite : public TestCommand { public: @@ -103273,790 +106308,270 @@ class Test_TC_OO_2_3Suite : public TestCommand case 96: { LogStep(96, "Wait 10000ms"); ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 97: { - LogStep(97, "19b:Sends OnWithTimedOff command to DUT"); - VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; - value.onOffControl = static_cast>(0U); - value.onTime = 300U; - value.offWaitTime = 300U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, - chip::NullOptional - - ); - } - case 98: { - LogStep(98, "Wait 10000ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 99: { - LogStep(99, "19c:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 100: { - LogStep(100, "19c:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 101: { - LogStep(101, "19c:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 102: { - LogStep(102, "20a:Send Off Command"); - VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::Off::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - - ); - } - case 103: { - LogStep(103, "20b:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 104: { - LogStep(104, "20b:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 105: { - LogStep(105, "20b:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 106: { - LogStep(106, "21a:Sends OnWithTimedOff command to DUT"); - VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; - value.onOffControl = static_cast>(0U); - value.onTime = 300U; - value.offWaitTime = 300U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, - chip::NullOptional - - ); - } - case 107: { - LogStep(107, "Wait 10000ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 108: { - LogStep(108, "21b:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 109: { - LogStep(109, "21b:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 110: { - LogStep(110, "21b:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && PICS_SKIP_SAMPLE_APP && OO.S.C42.Rsp"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 111: { - LogStep(111, "22a:Send On Command"); - VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - 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 112: { - LogStep(112, "22b:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 113: { - LogStep(113, "22b:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 114: { - LogStep(114, "22b:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 115: { - LogStep(115, "Wait 10000ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 10000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 116: { - LogStep(116, "23a:Sends OnWithTimedOff command to DUT"); - VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; - value.onOffControl = static_cast>(0U); - value.onTime = 300U; - value.offWaitTime = 300U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, - chip::NullOptional - - ); - } - case 117: { - LogStep(117, "23b:Send Off Command"); - VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::Off::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - - ); - } - case 118: { - LogStep(118, "23c:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 119: { - LogStep(119, "23c:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 120: { - LogStep(120, "23c:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 121: { - LogStep(121, "Wait 40000ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 122: { - LogStep(122, "23d:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 123: { - LogStep(123, "23d:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 124: { - LogStep(124, "23d:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 125: { - LogStep(125, "24a:Sends OnWithTimedOff command to DUT"); - VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; - value.onOffControl = static_cast>(0U); - value.onTime = 300U; - value.offWaitTime = 300U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, - chip::NullOptional - - ); - } - case 126: { - LogStep(126, "24b:Reads OnOff attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); - } - case 127: { - LogStep(127, "24b:Reads OnTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, - chip::NullOptional); - } - case 128: { - LogStep(128, "24b:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - case 129: { - LogStep(129, "Wait 40000ms"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 40000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 130: { - LogStep(130, "24c:Reads OnOff attribute from DUT"); - 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 131: { - LogStep(131, "24c:Reads OnTime attribute from DUT"); - 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 132: { - LogStep(132, "24c:Reads OffWaitTime attribute from DUT"); - VerifyOrDo(!ShouldSkip("OO.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, - chip::NullOptional); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OO_3_1Suite : public TestCommand -{ -public: - Test_TC_OO_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OO_3_1", 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_OO_3_1Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OO_3_2Suite : public TestCommand -{ -public: - Test_TC_OO_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OO_3_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_OO_3_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_RH_2_2Suite : public TestCommand -{ -public: - Test_TC_RH_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_RH_2_2", 6, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_RH_2_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::app::DataModel::Nullable ValueBeforeChange; - - 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)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 9999U)); - } - break; - case 2: - 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", "int16u", "int16u")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 10000U)); - } - break; - case 3: - 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", "int16u", "int16u")); - VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 10000U)); - ValueBeforeChange = value; - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); - VerifyOrReturn(CheckConstraintNotValue("value", value, ValueBeforeChange)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 10000UL; + return WaitForMs(kIdentityAlpha, value); } + case 97: { + LogStep(97, "19b:Sends OnWithTimedOff command to DUT"); + VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; + value.onOffControl = static_cast>(0U); + value.onTime = 300U; + value.offWaitTime = 300U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, + chip::NullOptional - 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"); + case 98: { + LogStep(98, "Wait 10000ms"); ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 10000UL; + return WaitForMs(kIdentityAlpha, value); } - case 1: { - LogStep(1, "Reads constraints of attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("RH.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); + case 99: { + LogStep(99, "19c:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } - case 2: { - LogStep(2, "Reads constraints of attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("RH.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); + case 100: { + LogStep(100, "19c:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); } - case 3: { - LogStep(3, "Reads MeasuredValue attribute from DUT"); - VerifyOrDo(!ShouldSkip("RH.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + case 101: { + LogStep(101, "19c:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); } - case 4: { - LogStep(4, "Operate on device to change the relative humidity significantly"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 102: { + LogStep(102, "20a:Send Off Command"); + VerifyOrDo(!ShouldSkip("OO.S.C00.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); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + chip::app::Clusters::OnOff::Commands::Off::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional + + ); } - case 5: { - LogStep(5, "Read the mandatory attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("RH.S.A0000 && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + case 103: { + LogStep(103, "20b:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } + case 104: { + LogStep(104, "20b:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_SWTCH_2_2Suite : public TestCommand -{ -public: - Test_TC_SWTCH_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_2_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_SWTCH_2_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + case 105: { + LogStep(105, "20b:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); } + case 106: { + LogStep(106, "21a:Sends OnWithTimedOff command to DUT"); + VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; + value.onOffControl = static_cast>(0U); + value.onTime = 300U; + value.offWaitTime = 300U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, + chip::NullOptional - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); + ); } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { + case 107: { + LogStep(107, "Wait 10000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 10000UL; + return WaitForMs(kIdentityAlpha, value); } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_SWTCH_3_2Suite : public TestCommand -{ -public: - Test_TC_SWTCH_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_3_2", 0, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_SWTCH_3_2Suite() {} - - chip::System::Clock::Timeout GetWaitDuration() const override - { - return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); - } - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + case 108: { + LogStep(108, "21b:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); + case 109: { + LogStep(109, "21b:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { + case 110: { + LogStep(110, "21b:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && PICS_SKIP_SAMPLE_APP && OO.S.C42.Rsp"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_TMP_2_2Suite : public TestCommand -{ -public: - Test_TC_TMP_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TMP_2_2", 6, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_TMP_2_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::app::DataModel::Nullable valueBeforeChange; - - 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; + case 111: { + LogStep(111, "22a:Send On Command"); + VerifyOrDo(!ShouldSkip("OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::On::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id, value, chip::NullOptional - 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)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32766)); - } - break; - case 2: - 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", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); - } - break; - case 3: - 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", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); - valueBeforeChange = value; - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); - VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); - VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); - VerifyOrReturn(CheckConstraintNotValue("value", value, valueBeforeChange)); - } - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + ); + } + case 112: { + LogStep(112, "22b:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + case 113: { + LogStep(113, "22b:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); + } + case 114: { + LogStep(114, "22b:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C01.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); + } + case 115: { + LogStep(115, "Wait 10000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 10000UL; + return WaitForMs(kIdentityAlpha, value); } + case 116: { + LogStep(116, "23a:Sends OnWithTimedOff command to DUT"); + VerifyOrDo(!ShouldSkip("OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; + value.onOffControl = static_cast>(0U); + value.onTime = 300U; + value.offWaitTime = 300U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, + chip::NullOptional - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); + ); } - } + case 117: { + LogStep(117, "23b:Send Off Command"); + VerifyOrDo(!ShouldSkip("OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::OnOff::Commands::Off::Type value; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id, value, chip::NullOptional - 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"); + ); + } + case 118: { + LogStep(118, "23c:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + case 119: { + LogStep(119, "23c:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); + } + case 120: { + LogStep(120, "23c:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); + } + case 121: { + LogStep(121, "Wait 40000ms"); ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 40000UL; + return WaitForMs(kIdentityAlpha, value); } - case 1: { - LogStep(1, "Read the mandatory attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("TMP.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); + case 122: { + LogStep(122, "23d:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); } - case 2: { - LogStep(2, "Read the mandatory attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("TMP.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); + case 123: { + LogStep(123, "23d:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); } - case 3: { - LogStep(3, "Reads MeasuredValue attribute from DUT"); - VerifyOrDo(!ShouldSkip("TMP.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + case 124: { + LogStep(124, "23d:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); } - case 4: { - LogStep(4, "Operate on device to change the temperature significantly"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 125: { + LogStep(125, "24a:Sends OnWithTimedOff command to DUT"); + VerifyOrDo(!ShouldSkip("OO.S.C42.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); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + chip::app::Clusters::OnOff::Commands::OnWithTimedOff::Type value; + value.onOffControl = static_cast>(0U); + value.onTime = 300U; + value.offWaitTime = 300U; + return SendCommand(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id, value, + chip::NullOptional + + ); } - case 5: { - LogStep(5, "Read the mandatory attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("TMP.S.A0000 && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + case 126: { + LogStep(126, "24b:Reads OnOff attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A0000 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id, true, chip::NullOptional); + } + case 127: { + LogStep(127, "24b:Reads OnTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4001 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id, true, + chip::NullOptional); + } + case 128: { + LogStep(128, "24b:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002 && OO.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); + } + case 129: { + LogStep(129, "Wait 40000ms"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 40000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 130: { + LogStep(130, "24c:Reads OnOff attribute from DUT"); + 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 131: { + LogStep(131, "24c:Reads OnTime attribute from DUT"); + 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 132: { + LogStep(132, "24c:Reads OffWaitTime attribute from DUT"); + VerifyOrDo(!ShouldSkip("OO.S.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id, true, + chip::NullOptional); } } return CHIP_NO_ERROR; } }; -class Test_TC_TMP_3_1Suite : public TestCommand +class Test_TC_OO_3_1Suite : public TestCommand { public: - Test_TC_TMP_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TMP_3_1", 0, credsIssuerConfig) + Test_TC_OO_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OO_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104064,7 +106579,7 @@ class Test_TC_TMP_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TMP_3_1Suite() {} + ~Test_TC_OO_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104109,10 +106624,10 @@ class Test_TC_TMP_3_1Suite : public TestCommand } }; -class Test_TC_TSTAT_3_1Suite : public TestCommand +class Test_TC_OO_3_2Suite : public TestCommand { public: - Test_TC_TSTAT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_1", 0, credsIssuerConfig) + Test_TC_OO_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OO_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104120,7 +106635,7 @@ class Test_TC_TSTAT_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TSTAT_3_1Suite() {} + ~Test_TC_OO_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104165,10 +106680,10 @@ class Test_TC_TSTAT_3_1Suite : public TestCommand } }; -class Test_TC_TSTAT_3_2Suite : public TestCommand +class Test_TC_RH_2_2Suite : public TestCommand { public: - Test_TC_TSTAT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_2", 0, credsIssuerConfig) + Test_TC_RH_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_RH_2_2", 6, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104176,7 +106691,7 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TSTAT_3_2Suite() {} + ~Test_TC_RH_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104189,6 +106704,8 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + chip::app::DataModel::Nullable ValueBeforeChange; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -104201,6 +106718,54 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 9999U)); + } + break; + case 2: + 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", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 1U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 10000U)); + } + break; + case 3: + 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", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 10000U)); + ValueBeforeChange = value; + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintNotValue("value", value, ValueBeforeChange)); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -104216,72 +106781,56 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand 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); } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_TSUIC_3_1Suite : public TestCommand -{ -public: - Test_TC_TSUIC_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSUIC_3_1", 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_TSUIC_3_1Suite() {} - - 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)); + case 1: { + LogStep(1, "Reads constraints of attribute: MinMeasuredValue"); + VerifyOrDo(!ShouldSkip("RH.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); + case 2: { + LogStep(2, "Reads constraints of attribute: MaxMeasuredValue"); + VerifyOrDo(!ShouldSkip("RH.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Reads MeasuredValue attribute from DUT"); + VerifyOrDo(!ShouldSkip("RH.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "Operate on device to change the relative humidity significantly"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && RH.M.ManuallyControlled"), 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 5: { + LogStep(5, "Read the mandatory attribute: MeasuredValue"); + VerifyOrDo(!ShouldSkip("RH.S.A0000 && RH.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RelativeHumidityMeasurement::Id, + RelativeHumidityMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { } return CHIP_NO_ERROR; } }; -class Test_TC_DGTHREAD_2_5Suite : public TestCommand +class Test_TC_SWTCH_2_2Suite : public TestCommand { public: - Test_TC_DGTHREAD_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_2_5", 0, credsIssuerConfig) + Test_TC_SWTCH_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104289,7 +106838,7 @@ class Test_TC_DGTHREAD_2_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_2_5Suite() {} + ~Test_TC_SWTCH_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104334,11 +106883,10 @@ class Test_TC_DGTHREAD_2_5Suite : public TestCommand } }; -class Test_TC_DGTHREAD_3_1Suite : public TestCommand +class Test_TC_SWTCH_3_2Suite : public TestCommand { public: - Test_TC_DGTHREAD_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_3_1", 0, credsIssuerConfig) + Test_TC_SWTCH_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SWTCH_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104346,7 +106894,7 @@ class Test_TC_DGTHREAD_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_1Suite() {} + ~Test_TC_SWTCH_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104391,11 +106939,10 @@ class Test_TC_DGTHREAD_3_1Suite : public TestCommand } }; -class Test_TC_DGTHREAD_3_2Suite : public TestCommand +class Test_TC_TMP_2_2Suite : public TestCommand { public: - Test_TC_DGTHREAD_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_3_2", 0, credsIssuerConfig) + Test_TC_TMP_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TMP_2_2", 6, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104403,7 +106950,7 @@ class Test_TC_DGTHREAD_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_2Suite() {} + ~Test_TC_TMP_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104416,6 +106963,8 @@ class Test_TC_DGTHREAD_3_2Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mTimeout; + chip::app::DataModel::Nullable valueBeforeChange; + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } // @@ -104428,6 +106977,56 @@ class Test_TC_DGTHREAD_3_2Suite : public TestCommand switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27315)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32766)); + } + break; + case 2: + 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", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + } + break; + case 3: + 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", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + valueBeforeChange = value; + } + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::Nullable value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "int16s", "int16s")); + VerifyOrReturn(CheckConstraintMinValue("value", value, -27314)); + VerifyOrReturn(CheckConstraintMaxValue("value", value, 32767)); + VerifyOrReturn(CheckConstraintNotValue("value", value, valueBeforeChange)); + } + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -104443,16 +107042,56 @@ class Test_TC_DGTHREAD_3_2Suite : public TestCommand 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, "Read the mandatory attribute: MinMeasuredValue"); + VerifyOrDo(!ShouldSkip("TMP.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MinMeasuredValue::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Read the mandatory attribute: MaxMeasuredValue"); + VerifyOrDo(!ShouldSkip("TMP.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MaxMeasuredValue::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Reads MeasuredValue attribute from DUT"); + VerifyOrDo(!ShouldSkip("TMP.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "Operate on device to change the temperature significantly"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && TMP.M.ManuallyControlled"), 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 5: { + LogStep(5, "Read the mandatory attribute: MeasuredValue"); + VerifyOrDo(!ShouldSkip("TMP.S.A0000 && TMP.M.ManuallyControlled"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TemperatureMeasurement::Id, + TemperatureMeasurement::Attributes::MeasuredValue::Id, true, chip::NullOptional); + } } return CHIP_NO_ERROR; } }; -class Test_TC_DGTHREAD_3_3Suite : public TestCommand +class Test_TC_TMP_3_1Suite : public TestCommand { public: - Test_TC_DGTHREAD_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_3_3", 0, credsIssuerConfig) + Test_TC_TMP_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TMP_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104460,7 +107099,7 @@ class Test_TC_DGTHREAD_3_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_3Suite() {} + ~Test_TC_TMP_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104505,11 +107144,10 @@ class Test_TC_DGTHREAD_3_3Suite : public TestCommand } }; -class Test_TC_DGTHREAD_3_4Suite : public TestCommand +class Test_TC_TSTAT_3_1Suite : public TestCommand { public: - Test_TC_DGTHREAD_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_3_4", 0, credsIssuerConfig) + Test_TC_TSTAT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104517,7 +107155,7 @@ class Test_TC_DGTHREAD_3_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_4Suite() {} + ~Test_TC_TSTAT_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104562,11 +107200,10 @@ class Test_TC_DGTHREAD_3_4Suite : public TestCommand } }; -class Test_TC_DGTHREAD_3_5Suite : public TestCommand +class Test_TC_TSTAT_3_2Suite : public TestCommand { public: - Test_TC_DGTHREAD_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_3_5", 0, credsIssuerConfig) + Test_TC_TSTAT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104574,7 +107211,7 @@ class Test_TC_DGTHREAD_3_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_5Suite() {} + ~Test_TC_TSTAT_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104619,10 +107256,10 @@ class Test_TC_DGTHREAD_3_5Suite : public TestCommand } }; -class Test_TC_ACT_2_1Suite : public TestCommand +class Test_TC_TSUIC_3_1Suite : public TestCommand { public: - Test_TC_ACT_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_2_1", 0, credsIssuerConfig) + Test_TC_TSUIC_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSUIC_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104630,7 +107267,7 @@ class Test_TC_ACT_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_2_1Suite() {} + ~Test_TC_TSUIC_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104675,10 +107312,11 @@ class Test_TC_ACT_2_1Suite : public TestCommand } }; -class Test_TC_ACT_2_2Suite : public TestCommand +class Test_TC_DGTHREAD_2_5Suite : public TestCommand { public: - Test_TC_ACT_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_2_2", 0, credsIssuerConfig) + Test_TC_DGTHREAD_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_2_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104686,7 +107324,7 @@ class Test_TC_ACT_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_2_2Suite() {} + ~Test_TC_DGTHREAD_2_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104731,10 +107369,11 @@ class Test_TC_ACT_2_2Suite : public TestCommand } }; -class Test_TC_ACT_3_2Suite : public TestCommand +class Test_TC_DGTHREAD_3_1Suite : public TestCommand { public: - Test_TC_ACT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_3_2", 0, credsIssuerConfig) + Test_TC_DGTHREAD_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104742,7 +107381,7 @@ class Test_TC_ACT_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_3_2Suite() {} + ~Test_TC_DGTHREAD_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104787,10 +107426,11 @@ class Test_TC_ACT_3_2Suite : public TestCommand } }; -class Test_TC_LTIME_1_1Suite : public TestCommand +class Test_TC_DGTHREAD_3_2Suite : public TestCommand { public: - Test_TC_LTIME_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_1_1", 0, credsIssuerConfig) + Test_TC_DGTHREAD_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104798,7 +107438,7 @@ class Test_TC_LTIME_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LTIME_1_1Suite() {} + ~Test_TC_DGTHREAD_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104843,10 +107483,11 @@ class Test_TC_LTIME_1_1Suite : public TestCommand } }; -class Test_TC_LTIME_2_1Suite : public TestCommand +class Test_TC_DGTHREAD_3_3Suite : public TestCommand { public: - Test_TC_LTIME_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_2_1", 0, credsIssuerConfig) + Test_TC_DGTHREAD_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_3_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104854,7 +107495,7 @@ class Test_TC_LTIME_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LTIME_2_1Suite() {} + ~Test_TC_DGTHREAD_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104899,10 +107540,11 @@ class Test_TC_LTIME_2_1Suite : public TestCommand } }; -class Test_TC_LTIME_3_1Suite : public TestCommand +class Test_TC_DGTHREAD_3_4Suite : public TestCommand { public: - Test_TC_LTIME_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_3_1", 0, credsIssuerConfig) + Test_TC_DGTHREAD_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_3_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104910,7 +107552,7 @@ class Test_TC_LTIME_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LTIME_3_1Suite() {} + ~Test_TC_DGTHREAD_3_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -104955,10 +107597,11 @@ class Test_TC_LTIME_3_1Suite : public TestCommand } }; -class Test_TC_LUNIT_1_1Suite : public TestCommand +class Test_TC_DGTHREAD_3_5Suite : public TestCommand { public: - Test_TC_LUNIT_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LUNIT_1_1", 0, credsIssuerConfig) + Test_TC_DGTHREAD_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DGTHREAD_3_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -104966,7 +107609,7 @@ class Test_TC_LUNIT_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LUNIT_1_1Suite() {} + ~Test_TC_DGTHREAD_3_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105011,10 +107654,10 @@ class Test_TC_LUNIT_1_1Suite : public TestCommand } }; -class Test_TC_LUNIT_2_1Suite : public TestCommand +class Test_TC_ACT_2_1Suite : public TestCommand { public: - Test_TC_LUNIT_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LUNIT_2_1", 0, credsIssuerConfig) + Test_TC_ACT_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105022,7 +107665,7 @@ class Test_TC_LUNIT_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LUNIT_2_1Suite() {} + ~Test_TC_ACT_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105067,10 +107710,10 @@ class Test_TC_LUNIT_2_1Suite : public TestCommand } }; -class Test_TC_LUNIT_3_1Suite : public TestCommand +class Test_TC_ACT_2_2Suite : public TestCommand { public: - Test_TC_LUNIT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LUNIT_3_1", 9, credsIssuerConfig) + Test_TC_ACT_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105078,7 +107721,7 @@ class Test_TC_LUNIT_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LUNIT_3_1Suite() {} + ~Test_TC_ACT_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105103,54 +107746,6 @@ class Test_TC_LUNIT_3_1Suite : public TestCommand switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::UnitLocalization::TempUnit value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "enum8", "enum8")); - } - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::UnitLocalization::TempUnit value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("temperatureUnit", value, 0U)); - } - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::UnitLocalization::TempUnit value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("temperatureUnit", value, 1U)); - } - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::UnitLocalization::TempUnit value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("temperatureUnit", value, 2U)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -105166,82 +107761,15 @@ class Test_TC_LUNIT_3_1Suite : public TestCommand 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, "TH reads TemperatureUnit attribute from DUT"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); - } - case 2: { - LogStep(2, "TH writes 0 (Fahrenheit) to TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Fahrenheit"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::UnitLocalization::TempUnit value; - value = static_cast(0); - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); - } - case 3: { - LogStep(3, "TH reads TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Fahrenheit"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); - } - case 4: { - LogStep(4, "TH writes 1 (Celsius) to TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Celsius"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::UnitLocalization::TempUnit value; - value = static_cast(1); - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); - } - case 5: { - LogStep(5, "TH reads TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Celsius"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); - } - case 6: { - LogStep(6, "TH writes 2 (Kelvin) to TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Kelvin"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::UnitLocalization::TempUnit value; - value = static_cast(2); - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); - } - case 7: { - LogStep(7, "TH reads TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Kelvin"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, true, chip::NullOptional); - } - case 8: { - LogStep(8, "TH writes 5 to TemperatureUnit attribute"); - VerifyOrDo(!ShouldSkip("LUNIT.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::UnitLocalization::TempUnit value; - value = static_cast(5); - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), UnitLocalization::Id, - UnitLocalization::Attributes::TemperatureUnit::Id, value, chip::NullOptional, chip::NullOptional); - } } return CHIP_NO_ERROR; } }; -class Test_TC_BIND_2_1Suite : public TestCommand +class Test_TC_ACT_3_2Suite : public TestCommand { public: - Test_TC_BIND_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_1", 0, credsIssuerConfig) + Test_TC_ACT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105249,7 +107777,7 @@ class Test_TC_BIND_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BIND_2_1Suite() {} + ~Test_TC_ACT_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105294,10 +107822,10 @@ class Test_TC_BIND_2_1Suite : public TestCommand } }; -class Test_TC_BIND_2_2Suite : public TestCommand +class Test_TC_LTIME_1_1Suite : public TestCommand { public: - Test_TC_BIND_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_2", 0, credsIssuerConfig) + Test_TC_LTIME_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_1_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105305,7 +107833,7 @@ class Test_TC_BIND_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BIND_2_2Suite() {} + ~Test_TC_LTIME_1_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105350,10 +107878,10 @@ class Test_TC_BIND_2_2Suite : public TestCommand } }; -class Test_TC_BIND_2_3Suite : public TestCommand +class Test_TC_LTIME_2_1Suite : public TestCommand { public: - Test_TC_BIND_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_3", 0, credsIssuerConfig) + Test_TC_LTIME_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105361,7 +107889,7 @@ class Test_TC_BIND_2_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BIND_2_3Suite() {} + ~Test_TC_LTIME_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105406,10 +107934,10 @@ class Test_TC_BIND_2_3Suite : public TestCommand } }; -class Test_TC_S_1_1Suite : public TestCommand +class Test_TC_LTIME_3_1Suite : public TestCommand { public: - Test_TC_S_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_1_1", 0, credsIssuerConfig) + Test_TC_LTIME_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105417,7 +107945,7 @@ class Test_TC_S_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_S_1_1Suite() {} + ~Test_TC_LTIME_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105462,10 +107990,10 @@ class Test_TC_S_1_1Suite : public TestCommand } }; -class Test_TC_S_2_1Suite : public TestCommand +class Test_TC_BIND_2_1Suite : public TestCommand { public: - Test_TC_S_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_1", 0, credsIssuerConfig) + Test_TC_BIND_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105473,7 +108001,7 @@ class Test_TC_S_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_S_2_1Suite() {} + ~Test_TC_BIND_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105518,10 +108046,10 @@ class Test_TC_S_2_1Suite : public TestCommand } }; -class Test_TC_S_2_2Suite : public TestCommand +class Test_TC_BIND_2_2Suite : public TestCommand { public: - Test_TC_S_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_2", 0, credsIssuerConfig) + Test_TC_BIND_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105529,7 +108057,7 @@ class Test_TC_S_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_S_2_2Suite() {} + ~Test_TC_BIND_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105574,10 +108102,10 @@ class Test_TC_S_2_2Suite : public TestCommand } }; -class Test_TC_S_2_3Suite : public TestCommand +class Test_TC_BIND_2_3Suite : public TestCommand { public: - Test_TC_S_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_3", 0, credsIssuerConfig) + Test_TC_BIND_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105585,7 +108113,7 @@ class Test_TC_S_2_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_S_2_3Suite() {} + ~Test_TC_BIND_2_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105630,10 +108158,10 @@ class Test_TC_S_2_3Suite : public TestCommand } }; -class Test_TC_S_3_1Suite : public TestCommand +class Test_TC_S_1_1Suite : public TestCommand { public: - Test_TC_S_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_3_1", 0, credsIssuerConfig) + Test_TC_S_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_1_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105641,7 +108169,7 @@ class Test_TC_S_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_S_3_1Suite() {} + ~Test_TC_S_1_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105686,10 +108214,10 @@ class Test_TC_S_3_1Suite : public TestCommand } }; -class Test_TC_PCC_3_1Suite : public TestCommand +class Test_TC_S_2_1Suite : public TestCommand { public: - Test_TC_PCC_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_PCC_3_1", 0, credsIssuerConfig) + Test_TC_S_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105697,7 +108225,7 @@ class Test_TC_PCC_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_PCC_3_1Suite() {} + ~Test_TC_S_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105742,10 +108270,10 @@ class Test_TC_PCC_3_1Suite : public TestCommand } }; -class Test_TC_ACL_2_4Suite : public TestCommand +class Test_TC_S_2_2Suite : public TestCommand { public: - Test_TC_ACL_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_4", 0, credsIssuerConfig) + Test_TC_S_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105753,7 +108281,7 @@ class Test_TC_ACL_2_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_4Suite() {} + ~Test_TC_S_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105798,10 +108326,10 @@ class Test_TC_ACL_2_4Suite : public TestCommand } }; -class Test_TC_ACL_2_5Suite : public TestCommand +class Test_TC_S_2_3Suite : public TestCommand { public: - Test_TC_ACL_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_5", 0, credsIssuerConfig) + Test_TC_S_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105809,7 +108337,7 @@ class Test_TC_ACL_2_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_5Suite() {} + ~Test_TC_S_2_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105854,10 +108382,10 @@ class Test_TC_ACL_2_5Suite : public TestCommand } }; -class Test_TC_ACL_2_6Suite : public TestCommand +class Test_TC_S_3_1Suite : public TestCommand { public: - Test_TC_ACL_2_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_6", 0, credsIssuerConfig) + Test_TC_S_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105865,7 +108393,7 @@ class Test_TC_ACL_2_6Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_6Suite() {} + ~Test_TC_S_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105910,10 +108438,10 @@ class Test_TC_ACL_2_6Suite : public TestCommand } }; -class Test_TC_ACL_2_7Suite : public TestCommand +class Test_TC_PCC_3_1Suite : public TestCommand { public: - Test_TC_ACL_2_7Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_7", 0, credsIssuerConfig) + Test_TC_PCC_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_PCC_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105921,7 +108449,7 @@ class Test_TC_ACL_2_7Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_7Suite() {} + ~Test_TC_PCC_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -105966,10 +108494,10 @@ class Test_TC_ACL_2_7Suite : public TestCommand } }; -class Test_TC_ACL_2_8Suite : public TestCommand +class Test_TC_ACL_2_5Suite : public TestCommand { public: - Test_TC_ACL_2_8Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_8", 0, credsIssuerConfig) + Test_TC_ACL_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -105977,7 +108505,7 @@ class Test_TC_ACL_2_8Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_8Suite() {} + ~Test_TC_ACL_2_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -106022,10 +108550,10 @@ class Test_TC_ACL_2_8Suite : public TestCommand } }; -class Test_TC_ACL_2_9Suite : public TestCommand +class Test_TC_ACL_2_6Suite : public TestCommand { public: - Test_TC_ACL_2_9Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_9", 0, credsIssuerConfig) + Test_TC_ACL_2_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_6", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -106033,7 +108561,7 @@ class Test_TC_ACL_2_9Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_9Suite() {} + ~Test_TC_ACL_2_6Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -106078,10 +108606,10 @@ class Test_TC_ACL_2_9Suite : public TestCommand } }; -class Test_TC_ACL_2_10Suite : public TestCommand +class Test_TC_ACL_2_8Suite : public TestCommand { public: - Test_TC_ACL_2_10Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_10", 0, credsIssuerConfig) + Test_TC_ACL_2_8Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_8", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -106089,7 +108617,7 @@ class Test_TC_ACL_2_10Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACL_2_10Suite() {} + ~Test_TC_ACL_2_8Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -106134,10 +108662,10 @@ class Test_TC_ACL_2_10Suite : public TestCommand } }; -class Test_TC_ULABEL_3_1Suite : public TestCommand +class Test_TC_ACL_2_10Suite : public TestCommand { public: - Test_TC_ULABEL_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ULABEL_3_1", 0, credsIssuerConfig) + Test_TC_ACL_2_10Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACL_2_10", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -106145,7 +108673,7 @@ class Test_TC_ULABEL_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ULABEL_3_1Suite() {} + ~Test_TC_ACL_2_10Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -106431,6 +108959,9 @@ 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), make_unique(credsIssuerConfig), @@ -106488,6 +109019,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), @@ -106532,6 +109064,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), @@ -106868,9 +109401,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), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -106893,7 +109423,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), @@ -106920,9 +109449,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), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -106932,14 +109458,10 @@ 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), - 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 2e471589934d39..d51bece01aa2ef 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -91,6 +91,7 @@ class TestList : public Command { printf("Test_TC_LVL_6_1\n"); printf("Test_TC_LCFG_1_1\n"); printf("Test_TC_LUNIT_1_2\n"); + printf("Test_TC_LUNIT_3_1\n"); printf("Test_TC_LTIME_1_2\n"); printf("Test_TC_LOWPOWER_1_1\n"); printf("Test_TC_KEYPADINPUT_1_2\n"); @@ -132,6 +133,7 @@ class TestList : public Command { printf("OTA_SuccessfulTransfer\n"); printf("Test_TC_OCC_1_1\n"); printf("Test_TC_OCC_2_1\n"); + printf("Test_TC_OCC_2_3\n"); printf("Test_TC_OO_1_1\n"); printf("Test_TC_OO_2_1\n"); printf("Test_TC_OO_2_2\n"); @@ -34117,6 +34119,355 @@ class Test_TC_LUNIT_1_2 : public TestCommandBridge { } }; +class Test_TC_LUNIT_3_1 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_LUNIT_3_1() + : TestCommandBridge("Test_TC_LUNIT_3_1") + , 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_LUNIT_3_1() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_LUNIT_3_1\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_LUNIT_3_1\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 : TH reads TemperatureUnit attribute from DUT\n"); + if (ShouldSkip("LUNIT.S.A0000")) { + NextTest(); + return; + } + err = TestThReadsTemperatureUnitAttributeFromDut_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : TH writes 0 (Fahrenheit) to TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Fahrenheit")) { + NextTest(); + return; + } + err = TestThWrites0FahrenheitToTemperatureUnitAttribute_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : TH reads TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Fahrenheit")) { + NextTest(); + return; + } + err = TestThReadsTemperatureUnitAttribute_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : TH writes 1 (Celsius) to TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Celsius")) { + NextTest(); + return; + } + err = TestThWrites1CelsiusToTemperatureUnitAttribute_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH reads TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Celsius")) { + NextTest(); + return; + } + err = TestThReadsTemperatureUnitAttribute_5(); + break; + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : TH writes 2 (Kelvin) to TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Kelvin")) { + NextTest(); + return; + } + err = TestThWrites2KelvinToTemperatureUnitAttribute_6(); + break; + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH reads TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000 && LUNIT.TempUnit.Kelvin")) { + NextTest(); + return; + } + err = TestThReadsTemperatureUnitAttribute_7(); + break; + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH writes 5 to TemperatureUnit attribute\n"); + if (ShouldSkip("LUNIT.S.A0000")) { + NextTest(); + return; + } + err = TestThWrites5ToTemperatureUnitAttribute_8(); + 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)); + 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), EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + 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 = 9; + + 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 TestThReadsTemperatureUnitAttributeFromDut_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTemperatureUnitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads TemperatureUnit attribute from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("temperatureUnit", "enum8", "enum8")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites0FahrenheitToTemperatureUnitAttribute_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id temperatureUnitArgument; + temperatureUnitArgument = [NSNumber numberWithUnsignedChar:0U]; + [cluster writeAttributeTemperatureUnitWithValue:temperatureUnitArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH writes 0 (Fahrenheit) to TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsTemperatureUnitAttribute_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTemperatureUnitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("TemperatureUnit", actualValue, 0U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites1CelsiusToTemperatureUnitAttribute_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id temperatureUnitArgument; + temperatureUnitArgument = [NSNumber numberWithUnsignedChar:1U]; + [cluster writeAttributeTemperatureUnitWithValue:temperatureUnitArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH writes 1 (Celsius) to TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsTemperatureUnitAttribute_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTemperatureUnitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("TemperatureUnit", actualValue, 1U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites2KelvinToTemperatureUnitAttribute_6() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id temperatureUnitArgument; + temperatureUnitArgument = [NSNumber numberWithUnsignedChar:2U]; + [cluster writeAttributeTemperatureUnitWithValue:temperatureUnitArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH writes 2 (Kelvin) to TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThReadsTemperatureUnitAttribute_7() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTemperatureUnitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH reads TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("TemperatureUnit", actualValue, 2U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestThWrites5ToTemperatureUnitAttribute_8() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterUnitLocalization alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id temperatureUnitArgument; + temperatureUnitArgument = [NSNumber numberWithUnsignedChar:5U]; + [cluster writeAttributeTemperatureUnitWithValue:temperatureUnitArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH writes 5 to TemperatureUnit attribute Error: %@", err); + + VerifyOrReturn(CheckValue("status", + err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] + ? err.code + : EMBER_ZCL_STATUS_FAILURE) + : 0, + EMBER_ZCL_STATUS_CONSTRAINT_ERROR)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_LTIME_1_2 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -46046,6 +46397,157 @@ class Test_TC_OCC_2_1 : public TestCommandBridge { } }; +class Test_TC_OCC_2_3 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_OCC_2_3() + : TestCommandBridge("Test_TC_OCC_2_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_OCC_2_3() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_OCC_2_3\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_OCC_2_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 : Reads mandatory attribute constrains: OccupancySensorType\n"); + if (ShouldSkip("OCC.S.A0001")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributeConstrainsOccupancySensorType_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Reads mandatory attribute constrains: OccupancySensorTypeBitmap\n"); + if (ShouldSkip("OCC.S.A0002")) { + NextTest(); + return; + } + err = TestReadsMandatoryAttributeConstrainsOccupancySensorTypeBitmap_2(); + 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)); + 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; + } + + // 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 = 3; + + 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 TestReadsMandatoryAttributeConstrainsOccupancySensorType_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterOccupancySensing alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupancySensorTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads mandatory attribute constrains: OccupancySensorType Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("occupancySensorType", "enum8", "enum8")); + VerifyOrReturn(CheckConstraintMinValue("occupancySensorType", [value unsignedCharValue], 0U)); + VerifyOrReturn(CheckConstraintMaxValue("occupancySensorType", [value unsignedCharValue], 3U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestReadsMandatoryAttributeConstrainsOccupancySensorTypeBitmap_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterOccupancySensing alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeOccupancySensorTypeBitmapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Reads mandatory attribute constrains: OccupancySensorTypeBitmap Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("occupancySensorTypeBitmap", "bitmap8", "bitmap8")); + VerifyOrReturn(CheckConstraintMinValue("occupancySensorTypeBitmap", [value unsignedCharValue], 1U)); + VerifyOrReturn(CheckConstraintMaxValue("occupancySensorTypeBitmap", [value unsignedCharValue], 7U)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_OO_1_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -129223,6 +129725,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), @@ -129264,6 +129767,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), diff --git a/zzz_generated/placeholder/app1/zap-generated/CHIPClientCallbacks.h b/zzz_generated/placeholder/app1/zap-generated/CHIPClientCallbacks.h index 707be5dcd69d6f..c10efabe0e0d97 100644 --- a/zzz_generated/placeholder/app1/zap-generated/CHIPClientCallbacks.h +++ b/zzz_generated/placeholder/app1/zap-generated/CHIPClientCallbacks.h @@ -30,6 +30,8 @@ #include // List specific responses +typedef void (*LocalizationConfigurationSupportedLocalesListAttributeCallback)( + void * context, const chip::app::DataModel::DecodableList & data); typedef void (*GeneralCommissioningGeneratedCommandListListAttributeCallback)( void * context, const chip::app::DataModel::DecodableList & data); typedef void (*GeneralCommissioningAcceptedCommandListListAttributeCallback)( diff --git a/zzz_generated/placeholder/app1/zap-generated/CHIPClusters.h b/zzz_generated/placeholder/app1/zap-generated/CHIPClusters.h index 39cffc7788d3a2..aefeb49a4e45bc 100644 --- a/zzz_generated/placeholder/app1/zap-generated/CHIPClusters.h +++ b/zzz_generated/placeholder/app1/zap-generated/CHIPClusters.h @@ -39,6 +39,25 @@ class DLL_EXPORT OnOffCluster : public ClusterBase ~OnOffCluster() {} }; +class DLL_EXPORT LocalizationConfigurationCluster : public ClusterBase +{ +public: + LocalizationConfigurationCluster(Messaging::ExchangeManager & exchangeManager, const SessionHandle & session, + EndpointId endpoint) : + ClusterBase(exchangeManager, session, app::Clusters::LocalizationConfiguration::Id, endpoint) + {} + ~LocalizationConfigurationCluster() {} +}; + +class DLL_EXPORT UnitLocalizationCluster : public ClusterBase +{ +public: + UnitLocalizationCluster(Messaging::ExchangeManager & exchangeManager, const SessionHandle & session, EndpointId endpoint) : + ClusterBase(exchangeManager, session, app::Clusters::UnitLocalization::Id, endpoint) + {} + ~UnitLocalizationCluster() {} +}; + class DLL_EXPORT GeneralCommissioningCluster : public ClusterBase { public: diff --git a/zzz_generated/placeholder/app1/zap-generated/access.h b/zzz_generated/placeholder/app1/zap-generated/access.h index a4d242bb1e7d28..c86680f21431c5 100644 --- a/zzz_generated/placeholder/app1/zap-generated/access.h +++ b/zzz_generated/placeholder/app1/zap-generated/access.h @@ -40,6 +40,7 @@ 49, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \ 49, /* Cluster: Network Commissioning, Attribute: LastNetworkID, Privilege: administer */ \ 49, /* Cluster: Network Commissioning, Attribute: LastConnectErrorValue, Privilege: administer */ \ + /* Cluster: User Label, Attribute: label list, Privilege: view */ \ /* Cluster: Window Covering, Attribute: Mode, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: view */ \ @@ -55,6 +56,15 @@ /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: view */ \ /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: view */ \ /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: view */ \ } // Parallel array data (cluster, *attribute*, privilege) for read attribute @@ -70,6 +80,7 @@ 5, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \ 6, /* Cluster: Network Commissioning, Attribute: LastNetworkID, Privilege: administer */ \ 7, /* Cluster: Network Commissioning, Attribute: LastConnectErrorValue, Privilege: administer */ \ + /* Cluster: User Label, Attribute: label list, Privilege: view */ \ /* Cluster: Window Covering, Attribute: Mode, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: view */ \ @@ -85,6 +96,15 @@ /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: view */ \ /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: view */ \ /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: view */ \ } // Parallel array data (cluster, attribute, *privilege*) for read attribute @@ -100,6 +120,7 @@ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: LastNetworkID, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: LastConnectErrorValue, Privilege: administer */ \ + /* Cluster: User Label, Attribute: label list, Privilege: view */ \ /* Cluster: Window Covering, Attribute: Mode, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: view */ \ @@ -115,6 +136,15 @@ /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: view */ \ /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: view */ \ /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: view */ \ } //////////////////////////////////////////////////////////////////////////////// @@ -127,6 +157,7 @@ 40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \ 48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \ 49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \ + 65, /* Cluster: User Label, Attribute: label list, Privilege: manage */ \ 258, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \ 512, /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: manage */ \ 512, /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: manage */ \ @@ -142,6 +173,15 @@ 516, /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: manage */ \ 516, /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: manage */ \ 768, /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: manage */ \ } // Parallel array data (cluster, *attribute*, privilege) for write attribute @@ -152,6 +192,7 @@ 16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \ 0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \ 4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \ + 0, /* Cluster: User Label, Attribute: label list, Privilege: manage */ \ 23, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \ 21, /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: manage */ \ 23, /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: manage */ \ @@ -167,6 +208,15 @@ 1, /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: manage */ \ 2, /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: manage */ \ 16400, /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: manage */ \ + 16, /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: manage */ \ + 17, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: manage */ \ + 18, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: manage */ \ + 32, /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: manage */ \ + 33, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: manage */ \ + 34, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: manage */ \ + 48, /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: manage */ \ + 49, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: manage */ \ + 50, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: manage */ \ } // Parallel array data (cluster, attribute, *privilege*) for write attribute @@ -177,6 +227,7 @@ kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \ kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \ + kMatterAccessPrivilegeManage, /* Cluster: User Label, Attribute: label list, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: manage */ \ @@ -192,6 +243,15 @@ kMatterAccessPrivilegeManage, /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: manage */ \ } //////////////////////////////////////////////////////////////////////////////// diff --git a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h index d89ce5d05623d3..ef376538064083 100644 --- a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h @@ -68,7 +68,7 @@ } // This is an array of EmberAfAttributeMinMaxValue structures. -#define GENERATED_MIN_MAX_DEFAULT_COUNT 17 +#define GENERATED_MIN_MAX_DEFAULT_COUNT 27 #define GENERATED_MIN_MAX_DEFAULTS \ { \ \ @@ -98,15 +98,29 @@ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x5 }, /* keypad lockout */ \ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x1 }, /* schedule programming visibility */ \ \ - /* Endpoint: 1, Cluster: Color Control (server) */ \ + /* Endpoint: 1, Cluster: Unit Localization (server) */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x2 }, /* TemperatureUnit */ \ + \ + /* Endpoint: 1, Cluster: Color Control (server) */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF }, /* StartUpColorTemperatureMireds */ \ + \ + /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* PIR occupied to unoccupied delay */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* PIR unoccupied to occupied delay */ \ + { (uint16_t) 0x1, (uint16_t) 0x1, (uint16_t) 0xFE }, /* PIR unoccupied to occupied threshold */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* ultrasonic occupied to unoccupied delay */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* ultrasonic unoccupied to occupied delay */ \ + { (uint16_t) 0x1, (uint16_t) 0x1, (uint16_t) 0xFE }, /* ultrasonic unoccupied to occupied threshold */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* physical contact occupied to unoccupied delay */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* physical contact unoccupied to occupied delay */ \ { \ - (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF \ - } /* StartUpColorTemperatureMireds */ \ + (uint16_t) 0x1, (uint16_t) 0x1, (uint16_t) 0xFE \ + } /* physical contact unoccupied to occupied threshold */ \ } #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 338 +#define GENERATED_ATTRIBUTE_COUNT 362 #define GENERATED_ATTRIBUTES \ { \ \ @@ -622,10 +636,29 @@ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ + /* Endpoint: 1, Cluster: Localization Configuration (server) */ \ + { 0x00000000, ZAP_TYPE(CHAR_STRING), 36, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_EMPTY_DEFAULT() }, /* ActiveLocale */ \ + { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* SupportedLocales */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + \ + /* Endpoint: 1, Cluster: Unit Localization (server) */ \ + { 0x00000000, ZAP_TYPE(ENUM8), 1, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(16) }, /* TemperatureUnit */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + \ /* Endpoint: 1, Cluster: Fixed Label (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ + /* Endpoint: 1, Cluster: User Label (server) */ \ + { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_EMPTY_DEFAULT() }, /* label list */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */ \ + \ /* Endpoint: 1, Cluster: Color Control (server) */ \ { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x616B) }, /* CurrentX */ \ { 0x00000004, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x607D) }, /* CurrentY */ \ @@ -633,9 +666,34 @@ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* CoupleColorTempToLevelMinMireds */ \ { 0x00004010, ZAP_TYPE(INT16U), 2, \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(16) }, /* StartUpColorTemperatureMireds */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(17) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ + \ + /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ + { 0x00000000, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* occupancy */ \ + { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* occupancy sensor type */ \ + { 0x00000002, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* occupancy sensor type bitmap */ \ + { 0x00000010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(18) }, /* PIR occupied to unoccupied delay */ \ + { 0x00000011, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(19) }, /* PIR unoccupied to occupied delay */ \ + { 0x00000012, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(20) }, /* PIR unoccupied to occupied threshold */ \ + { 0x00000020, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(21) }, /* ultrasonic occupied to unoccupied delay */ \ + { 0x00000021, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(22) }, /* ultrasonic unoccupied to occupied delay */ \ + { 0x00000022, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(23) }, /* ultrasonic unoccupied to occupied threshold */ \ + { 0x00000030, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(24) }, /* physical contact occupied to unoccupied delay */ \ + { 0x00000031, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(25) }, /* physical contact unoccupied to occupied delay */ \ + { 0x00000032, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(26) }, /* physical contact unoccupied to occupied threshold */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */ \ } // This is an array of EmberAfCluster structures. @@ -680,8 +738,15 @@ const EmberAfGenericClusterFunction chipFuncArrayLevelControlServer[] = { \ (EmberAfGenericClusterFunction) emberAfLevelControlClusterServerInitCallback, \ }; \ + const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = { \ + (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback, \ + (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback, \ + }; \ const EmberAfGenericClusterFunction chipFuncArrayColorControlServer[] = { \ (EmberAfGenericClusterFunction) emberAfColorControlClusterServerInitCallback, \ + }; \ + const EmberAfGenericClusterFunction chipFuncArrayOccupancySensingServer[] = { \ + (EmberAfGenericClusterFunction) emberAfOccupancySensingClusterServerInitCallback, \ }; // clang-format off @@ -860,7 +925,7 @@ // clang-format on #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask -#define GENERATED_CLUSTER_COUNT 52 +#define GENERATED_CLUSTER_COUNT 58 // clang-format off #define GENERATED_CLUSTERS { \ @@ -1403,10 +1468,54 @@ .acceptedCommandList = nullptr ,\ .generatedCommandList = nullptr ,\ },\ + { \ + /* Endpoint: 1, Cluster: Localization Configuration (client) */ \ + .clusterId = 0x0000002B, \ + .attributes = ZAP_ATTRIBUTE_INDEX(329), \ + .attributeCount = 0, \ + .clusterSize = 0, \ + .mask = ZAP_CLUSTER_MASK(CLIENT), \ + .functions = NULL, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ + { \ + /* Endpoint: 1, Cluster: Localization Configuration (server) */ \ + .clusterId = 0x0000002B, \ + .attributes = ZAP_ATTRIBUTE_INDEX(329), \ + .attributeCount = 4, \ + .clusterSize = 42, \ + .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ + .functions = chipFuncArrayLocalizationConfigurationServer, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ + { \ + /* Endpoint: 1, Cluster: Unit Localization (client) */ \ + .clusterId = 0x0000002D, \ + .attributes = ZAP_ATTRIBUTE_INDEX(333), \ + .attributeCount = 0, \ + .clusterSize = 0, \ + .mask = ZAP_CLUSTER_MASK(CLIENT), \ + .functions = NULL, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ + { \ + /* Endpoint: 1, Cluster: Unit Localization (server) */ \ + .clusterId = 0x0000002D, \ + .attributes = ZAP_ATTRIBUTE_INDEX(333), \ + .attributeCount = 3, \ + .clusterSize = 7, \ + .mask = ZAP_CLUSTER_MASK(SERVER), \ + .functions = NULL, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ { \ /* Endpoint: 1, Cluster: Fixed Label (client) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(329), \ + .attributes = ZAP_ATTRIBUTE_INDEX(336), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1417,7 +1526,7 @@ { \ /* Endpoint: 1, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(329), \ + .attributes = ZAP_ATTRIBUTE_INDEX(336), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1425,10 +1534,21 @@ .acceptedCommandList = nullptr ,\ .generatedCommandList = nullptr ,\ },\ + { \ + /* Endpoint: 1, Cluster: User Label (server) */ \ + .clusterId = 0x00000041, \ + .attributes = ZAP_ATTRIBUTE_INDEX(338), \ + .attributeCount = 3, \ + .clusterSize = 4, \ + .mask = ZAP_CLUSTER_MASK(SERVER), \ + .functions = NULL, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(331), \ + .attributes = ZAP_ATTRIBUTE_INDEX(341), \ .attributeCount = 7, \ .clusterSize = 15, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1436,18 +1556,29 @@ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 117 ) ,\ .generatedCommandList = nullptr ,\ },\ + { \ + /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ + .clusterId = 0x00000406, \ + .attributes = ZAP_ATTRIBUTE_INDEX(348), \ + .attributeCount = 14, \ + .clusterSize = 22, \ + .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + .functions = chipFuncArrayOccupancySensingServer, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ } // clang-format on #define ZAP_CLUSTER_INDEX(index) (&generatedClusters[index]) -#define ZAP_FIXED_ENDPOINT_DATA_VERSION_COUNT 38 +#define ZAP_FIXED_ENDPOINT_DATA_VERSION_COUNT 42 // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 42, 792 }, { ZAP_CLUSTER_INDEX(42), 10, 100 }, \ + { ZAP_CLUSTER_INDEX(0), 42, 792 }, { ZAP_CLUSTER_INDEX(42), 16, 175 }, \ } // Largest attribute size is needed for various buffers @@ -1456,10 +1587,10 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, "ATTRIBUTE_LARGEST larger than expected"); // Total size of singleton attributes -#define ATTRIBUTE_SINGLETONS_SIZE (74) +#define ATTRIBUTE_SINGLETONS_SIZE (75) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (892) +#define ATTRIBUTE_MAX_SIZE (967) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (2) diff --git a/zzz_generated/placeholder/app1/zap-generated/gen_config.h b/zzz_generated/placeholder/app1/zap-generated/gen_config.h index ac5c952ee245c0..7a40fc5eb73e41 100644 --- a/zzz_generated/placeholder/app1/zap-generated/gen_config.h +++ b/zzz_generated/placeholder/app1/zap-generated/gen_config.h @@ -38,6 +38,10 @@ #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (2) +#define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_UNIT_LOCALIZATION_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_UNIT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_POWER_SOURCE_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) @@ -54,6 +58,7 @@ #define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_FIXED_LABEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_FIXED_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_BOOLEAN_STATE_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_MODE_SELECT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_MODE_SELECT_CLUSTER_SERVER_ENDPOINT_COUNT (1) @@ -70,6 +75,7 @@ #define EMBER_AF_FLOW_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_OCCUPANCY_SENSING_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_KEYPAD_INPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) @@ -141,6 +147,24 @@ #define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER #define EMBER_AF_PLUGIN_BASIC_INFORMATION +// Use this macro to check if the client side of the Localization Configuration cluster is included +#define ZCL_USING_LOCALIZATION_CONFIGURATION_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_LOCALIZATION_CONFIGURATION_CLIENT + +// Use this macro to check if the server side of the Localization Configuration cluster is included +#define ZCL_USING_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_LOCALIZATION_CONFIGURATION_SERVER +#define EMBER_AF_PLUGIN_LOCALIZATION_CONFIGURATION + +// Use this macro to check if the client side of the Unit Localization cluster is included +#define ZCL_USING_UNIT_LOCALIZATION_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_UNIT_LOCALIZATION_CLIENT + +// Use this macro to check if the server side of the Unit Localization cluster is included +#define ZCL_USING_UNIT_LOCALIZATION_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_UNIT_LOCALIZATION_SERVER +#define EMBER_AF_PLUGIN_UNIT_LOCALIZATION + // Use this macro to check if the server side of the Power Source Configuration cluster is included #define ZCL_USING_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER #define EMBER_AF_PLUGIN_POWER_SOURCE_CONFIGURATION_SERVER @@ -217,6 +241,11 @@ #define EMBER_AF_PLUGIN_FIXED_LABEL_SERVER #define EMBER_AF_PLUGIN_FIXED_LABEL +// Use this macro to check if the server side of the User Label cluster is included +#define ZCL_USING_USER_LABEL_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_USER_LABEL_SERVER +#define EMBER_AF_PLUGIN_USER_LABEL + // Use this macro to check if the server side of the Boolean State cluster is included #define ZCL_USING_BOOLEAN_STATE_CLUSTER_SERVER #define EMBER_AF_PLUGIN_BOOLEAN_STATE_SERVER @@ -297,6 +326,11 @@ #define EMBER_AF_PLUGIN_RELATIVE_HUMIDITY_MEASUREMENT_SERVER #define EMBER_AF_PLUGIN_RELATIVE_HUMIDITY_MEASUREMENT +// Use this macro to check if the server side of the Occupancy Sensing cluster is included +#define ZCL_USING_OCCUPANCY_SENSING_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_OCCUPANCY_SENSING_SERVER +#define EMBER_AF_PLUGIN_OCCUPANCY_SENSING + // Use this macro to check if the client side of the Target Navigator cluster is included #define ZCL_USING_TARGET_NAVIGATOR_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_TARGET_NAVIGATOR_CLIENT diff --git a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h index 2aa767a3d65ebb..1bf2477979ebdf 100644 --- a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h @@ -1725,6 +1725,513 @@ class Test_TC_WNCV_5_1_SimulatedSuite : public TestCommand } }; +class Test_TC_LCFG_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_LCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_LCFG_3_1_Simulated", 3) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LCFG_3_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads SupportedLocales attribute from TH"); + VerifyOrDo(!ShouldSkip("LCFG.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::SupportedLocales::Id); + } + case 2: { + LogStep(2, "DUT reads ActiveLocale attribute from TH"); + VerifyOrDo(!ShouldSkip("LCFG.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::ActiveLocale::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_LUNIT_1_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_LUNIT_1_1_SimulatedSuite() : TestCommand("Test_TC_LUNIT_1_1_Simulated", 6) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LUNIT_1_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT read (0xFFFD) ClusterRevision attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::ClusterRevision::Id); + } + case 2: { + LogStep(2, "DUT read (0xFFFC) FeatureMap attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::FeatureMap::Id); + } + case 3: { + LogStep(3, "DUT read (0xFFFB) AttributeList attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::AttributeList::Id); + } + case 4: { + LogStep(4, "DUT read (0xFFF9) AcceptedCommandList attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::AcceptedCommandList::Id); + } + case 5: { + LogStep(5, "DUT read (0xFFF8) GeneratedCommandList attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::GeneratedCommandList::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_LUNIT_2_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_LUNIT_2_1_SimulatedSuite() : TestCommand("Test_TC_LUNIT_2_1_Simulated", 4) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LUNIT_2_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads TemperatureUnit attribute from TH"); + VerifyOrDo(!ShouldSkip("LUNIT.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::TemperatureUnit::Id); + } + case 2: { + LogStep(2, "DUT writes 3 to TemperatureUnit attribute on TH"); + VerifyOrDo(!ShouldSkip("LUNIT.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::TemperatureUnit::Id); + } + case 3: { + LogStep(3, "DUT reads TemperatureUnit attribute from TH"); + VerifyOrDo(!ShouldSkip("LUNIT.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::TemperatureUnit::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_OCC_2_2_SimulatedSuite : public TestCommand +{ +public: + Test_TC_OCC_2_2_SimulatedSuite() : TestCommand("Test_TC_OCC_2_2_Simulated", 13) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_OCC_2_2_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads from the TH the (0x0000) Occupancy attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::Occupancy::Id); + } + case 2: { + LogStep(2, "DUT reads from the TH the (0x0001) OccupancySensorType attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); + } + case 3: { + LogStep(3, "DUT reads from the TH the (0x0002) OccupancySensorType attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); + } + case 4: { + LogStep(4, "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::Id); + } + case 5: { + LogStep(5, "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::Id); + } + case 6: { + LogStep(6, "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::Id); + } + case 7: { + LogStep(7, "DUT reads from the TH the (0x0020) UltrasonicOccupiedToUnoccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::Id); + } + case 8: { + LogStep(8, "DUT reads from the TH the (0x0021) UltrasonicUnoccupiedToOccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::Id); + } + case 9: { + LogStep(9, "DUT reads from the TH the (0x0022) UltrasonicUnoccupiedToOccupiedThreshold optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::Id); + } + case 10: { + LogStep(10, "DUT reads from the TH the (0x0030) PhysicalContactOccupiedToUnoccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::Id); + } + case 11: { + LogStep(11, "DUT reads from the TH the (0x0031) PhysicalContactUnoccupiedToOccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::Id); + } + case 12: { + LogStep(12, "DUT reads from the TH the (0x0032) PhysicalContactUnoccupiedToOccupiedThreshold optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_OCC_2_4_SimulatedSuite : public TestCommand +{ +public: + Test_TC_OCC_2_4_SimulatedSuite() : TestCommand("Test_TC_OCC_2_4_Simulated", 3) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_OCC_2_4_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "TH reads OccupancySensorType attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); + } + case 2: { + LogStep(2, "TH reads OccupancySensorTypeBitmap attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_ULABEL_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_ULABEL_3_1_SimulatedSuite() : TestCommand("Test_TC_ULABEL_3_1_Simulated", 3) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_ULABEL_3_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Read attribute: LabelList"); + VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), UserLabel::Id, UserLabel::Attributes::LabelList::Id); + } + case 2: { + LogStep(2, "write attribute: LabelList"); + VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), UserLabel::Id, UserLabel::Attributes::LabelList::Id); + } + } + return CHIP_NO_ERROR; + } +}; + std::unique_ptr GetTestCommand(std::string testName) { if (testName == "Test_TC_BINFO_2_3_Simulated") @@ -1803,6 +2310,30 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_WNCV_5_1_SimulatedSuite()); } + if (testName == "Test_TC_LCFG_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_LCFG_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_1_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_1_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_2_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_2_1_SimulatedSuite()); + } + if (testName == "Test_TC_OCC_2_2_Simulated") + { + return std::unique_ptr(new Test_TC_OCC_2_2_SimulatedSuite()); + } + if (testName == "Test_TC_OCC_2_4_Simulated") + { + return std::unique_ptr(new Test_TC_OCC_2_4_SimulatedSuite()); + } + if (testName == "Test_TC_ULABEL_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_ULABEL_3_1_SimulatedSuite()); + } return nullptr; } @@ -1829,4 +2360,10 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_RH_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_SWTCH_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_WNCV_5_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_LCFG_3_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_LUNIT_1_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_LUNIT_2_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_OCC_2_2_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_OCC_2_4_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_ULABEL_3_1_Simulated"); } diff --git a/zzz_generated/placeholder/app2/zap-generated/access.h b/zzz_generated/placeholder/app2/zap-generated/access.h index a4d242bb1e7d28..c86680f21431c5 100644 --- a/zzz_generated/placeholder/app2/zap-generated/access.h +++ b/zzz_generated/placeholder/app2/zap-generated/access.h @@ -40,6 +40,7 @@ 49, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \ 49, /* Cluster: Network Commissioning, Attribute: LastNetworkID, Privilege: administer */ \ 49, /* Cluster: Network Commissioning, Attribute: LastConnectErrorValue, Privilege: administer */ \ + /* Cluster: User Label, Attribute: label list, Privilege: view */ \ /* Cluster: Window Covering, Attribute: Mode, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: view */ \ @@ -55,6 +56,15 @@ /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: view */ \ /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: view */ \ /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: view */ \ } // Parallel array data (cluster, *attribute*, privilege) for read attribute @@ -70,6 +80,7 @@ 5, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \ 6, /* Cluster: Network Commissioning, Attribute: LastNetworkID, Privilege: administer */ \ 7, /* Cluster: Network Commissioning, Attribute: LastConnectErrorValue, Privilege: administer */ \ + /* Cluster: User Label, Attribute: label list, Privilege: view */ \ /* Cluster: Window Covering, Attribute: Mode, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: view */ \ @@ -85,6 +96,15 @@ /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: view */ \ /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: view */ \ /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: view */ \ } // Parallel array data (cluster, attribute, *privilege*) for read attribute @@ -100,6 +120,7 @@ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: LastNetworkingStatus, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: LastNetworkID, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: LastConnectErrorValue, Privilege: administer */ \ + /* Cluster: User Label, Attribute: label list, Privilege: view */ \ /* Cluster: Window Covering, Attribute: Mode, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: view */ \ /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: view */ \ @@ -115,6 +136,15 @@ /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: view */ \ /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: view */ \ /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: view */ \ + /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: view */ \ } //////////////////////////////////////////////////////////////////////////////// @@ -127,6 +157,7 @@ 40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \ 48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \ 49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \ + 65, /* Cluster: User Label, Attribute: label list, Privilege: manage */ \ 258, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \ 512, /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: manage */ \ 512, /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: manage */ \ @@ -142,6 +173,15 @@ 516, /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: manage */ \ 516, /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: manage */ \ 768, /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: manage */ \ + 1030, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: manage */ \ } // Parallel array data (cluster, *attribute*, privilege) for write attribute @@ -152,6 +192,7 @@ 16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \ 0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \ 4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \ + 0, /* Cluster: User Label, Attribute: label list, Privilege: manage */ \ 23, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \ 21, /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: manage */ \ 23, /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: manage */ \ @@ -167,6 +208,15 @@ 1, /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: manage */ \ 2, /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: manage */ \ 16400, /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: manage */ \ + 16, /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: manage */ \ + 17, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: manage */ \ + 18, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: manage */ \ + 32, /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: manage */ \ + 33, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: manage */ \ + 34, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: manage */ \ + 48, /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: manage */ \ + 49, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: manage */ \ + 50, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: manage */ \ } // Parallel array data (cluster, attribute, *privilege*) for write attribute @@ -177,6 +227,7 @@ kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \ kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \ + kMatterAccessPrivilegeManage, /* Cluster: User Label, Attribute: label list, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Pump Configuration and Control, Attribute: LifetimeRunningHours, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Pump Configuration and Control, Attribute: LifetimeEnergyConsumed, Privilege: manage */ \ @@ -192,6 +243,15 @@ kMatterAccessPrivilegeManage, /* Cluster: Thermostat User Interface Configuration, Attribute: keypad lockout, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Thermostat User Interface Configuration, Attribute: schedule programming visibility, Privilege: manage */ \ kMatterAccessPrivilegeManage, /* Cluster: Color Control, Attribute: StartUpColorTemperatureMireds, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: PIR occupied to unoccupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: PIR unoccupied to occupied threshold, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: ultrasonic occupied to unoccupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: ultrasonic unoccupied to occupied threshold, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: physical contact occupied to unoccupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied delay, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Occupancy Sensing, Attribute: physical contact unoccupied to occupied threshold, Privilege: manage */ \ } //////////////////////////////////////////////////////////////////////////////// diff --git a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h index f093105b6d1d17..8178333b2e0d40 100644 --- a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h @@ -68,13 +68,16 @@ } // This is an array of EmberAfAttributeMinMaxValue structures. -#define GENERATED_MIN_MAX_DEFAULT_COUNT 17 +#define GENERATED_MIN_MAX_DEFAULT_COUNT 27 #define GENERATED_MIN_MAX_DEFAULTS \ { \ \ /* Endpoint: 0, Cluster: On/Off (server) */ \ { (uint16_t) 0xFF, (uint16_t) 0x0, (uint16_t) 0x2 }, /* StartUpOnOff */ \ \ + /* Endpoint: 0, Cluster: Unit Localization (server) */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x2 }, /* TemperatureUnit */ \ + \ /* Endpoint: 0, Cluster: Window Covering (server) */ \ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xF }, /* Mode */ \ \ @@ -98,15 +101,26 @@ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x5 }, /* keypad lockout */ \ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x1 }, /* schedule programming visibility */ \ \ - /* Endpoint: 1, Cluster: Color Control (server) */ \ + /* Endpoint: 1, Cluster: Color Control (server) */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF }, /* StartUpColorTemperatureMireds */ \ + \ + /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* PIR occupied to unoccupied delay */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* PIR unoccupied to occupied delay */ \ + { (uint16_t) 0x1, (uint16_t) 0x1, (uint16_t) 0xFE }, /* PIR unoccupied to occupied threshold */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* ultrasonic occupied to unoccupied delay */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* ultrasonic unoccupied to occupied delay */ \ + { (uint16_t) 0x1, (uint16_t) 0x1, (uint16_t) 0xFE }, /* ultrasonic unoccupied to occupied threshold */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* physical contact occupied to unoccupied delay */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFFFE }, /* physical contact unoccupied to occupied delay */ \ { \ - (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF \ - } /* StartUpColorTemperatureMireds */ \ + (uint16_t) 0x1, (uint16_t) 0x1, (uint16_t) 0xFE \ + } /* physical contact unoccupied to occupied threshold */ \ } #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 338 +#define GENERATED_ATTRIBUTE_COUNT 362 #define GENERATED_ATTRIBUTES \ { \ \ @@ -182,6 +196,19 @@ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ + /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ + { 0x00000000, ZAP_TYPE(CHAR_STRING), 36, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_EMPTY_DEFAULT() }, /* ActiveLocale */ \ + { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* SupportedLocales */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + \ + /* Endpoint: 0, Cluster: Unit Localization (server) */ \ + { 0x00000000, ZAP_TYPE(ENUM8), 1, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(1) }, /* TemperatureUnit */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* Sources */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ @@ -349,6 +376,12 @@ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ + /* Endpoint: 0, Cluster: User Label (server) */ \ + { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_EMPTY_DEFAULT() }, /* label list */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */ \ + \ /* Endpoint: 0, Cluster: Boolean State (server) */ \ { 0x00000000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0) }, /* StateValue */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ @@ -396,7 +429,7 @@ ZAP_SIMPLE_DEFAULT(0xFFFF) }, /* InstalledClosedLimitTilt */ \ { 0x00000017, ZAP_TYPE(BITMAP8), 1, \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(1) }, /* Mode */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(2) }, /* Mode */ \ { 0x0000001A, ZAP_TYPE(BITMAP16), 2, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* SafetyStatus */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0x17) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ @@ -426,9 +459,9 @@ { 0x00000017, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_SIMPLE_DEFAULT(0x00000000) }, /* LifetimeEnergyConsumed */ \ { 0x00000020, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(2) }, /* OperationMode */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(3) }, /* OperationMode */ \ { 0x00000021, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(3) }, /* ControlMode */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(4) }, /* ControlMode */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* ClusterRevision */ \ \ @@ -438,23 +471,23 @@ { 0x00000005, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0x0640) }, /* AbsMinCoolSetpointLimit */ \ { 0x00000006, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0x0C80) }, /* AbsMaxCoolSetpointLimit */ \ { 0x00000011, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(4) }, /* OccupiedCoolingSetpoint */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(5) }, /* OccupiedCoolingSetpoint */ \ { 0x00000012, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(5) }, /* OccupiedHeatingSetpoint */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(6) }, /* OccupiedHeatingSetpoint */ \ { 0x00000015, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(6) }, /* MinHeatSetpointLimit */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(7) }, /* MinHeatSetpointLimit */ \ { 0x00000016, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(7) }, /* MaxHeatSetpointLimit */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(8) }, /* MaxHeatSetpointLimit */ \ { 0x00000017, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(8) }, /* MinCoolSetpointLimit */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(9) }, /* MinCoolSetpointLimit */ \ { 0x00000018, ZAP_TYPE(INT16S), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(9) }, /* MaxCoolSetpointLimit */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(10) }, /* MaxCoolSetpointLimit */ \ { 0x00000019, ZAP_TYPE(INT8S), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(10) }, /* MinSetpointDeadBand */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(11) }, /* MinSetpointDeadBand */ \ { 0x0000001B, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(11) }, /* ControlSequenceOfOperation */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(12) }, /* ControlSequenceOfOperation */ \ { 0x0000001C, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(12) }, /* SystemMode */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(13) }, /* SystemMode */ \ { 0x00000020, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0) }, /* StartOfWeek */ \ { 0x00000021, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(7) }, /* NumberOfWeeklyTransitions */ \ { 0x00000022, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(4) }, /* NumberOfDailyTransitions */ \ @@ -463,11 +496,11 @@ \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (server) */ \ { 0x00000000, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(13) }, /* temperature display mode */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(14) }, /* temperature display mode */ \ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(14) }, /* keypad lockout */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(15) }, /* keypad lockout */ \ { 0x00000002, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(15) }, /* schedule programming visibility */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(16) }, /* schedule programming visibility */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* ClusterRevision */ \ \ @@ -633,9 +666,34 @@ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* CoupleColorTempToLevelMinMireds */ \ { 0x00004010, ZAP_TYPE(INT16U), 2, \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_MIN_MAX_DEFAULTS_INDEX(16) }, /* StartUpColorTemperatureMireds */ \ + ZAP_MIN_MAX_DEFAULTS_INDEX(17) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ + \ + /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ + { 0x00000000, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* occupancy */ \ + { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* occupancy sensor type */ \ + { 0x00000002, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* occupancy sensor type bitmap */ \ + { 0x00000010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(18) }, /* PIR occupied to unoccupied delay */ \ + { 0x00000011, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(19) }, /* PIR unoccupied to occupied delay */ \ + { 0x00000012, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(20) }, /* PIR unoccupied to occupied threshold */ \ + { 0x00000020, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(21) }, /* ultrasonic occupied to unoccupied delay */ \ + { 0x00000021, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(22) }, /* ultrasonic unoccupied to occupied delay */ \ + { 0x00000022, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(23) }, /* ultrasonic unoccupied to occupied threshold */ \ + { 0x00000030, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(24) }, /* physical contact occupied to unoccupied delay */ \ + { 0x00000031, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(25) }, /* physical contact unoccupied to occupied delay */ \ + { 0x00000032, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_MIN_MAX_DEFAULTS_INDEX(26) }, /* physical contact unoccupied to occupied threshold */ \ + { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */ \ } // This is an array of EmberAfCluster structures. @@ -648,6 +706,10 @@ const EmberAfGenericClusterFunction chipFuncArrayOnOffServer[] = { \ (EmberAfGenericClusterFunction) emberAfOnOffClusterServerInitCallback, \ }; \ + const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = { \ + (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback, \ + (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback, \ + }; \ const EmberAfGenericClusterFunction chipFuncArrayModeSelectServer[] = { \ (EmberAfGenericClusterFunction) emberAfModeSelectClusterServerInitCallback, \ (EmberAfGenericClusterFunction) MatterModeSelectClusterServerPreAttributeChangedCallback, \ @@ -682,6 +744,9 @@ }; \ const EmberAfGenericClusterFunction chipFuncArrayColorControlServer[] = { \ (EmberAfGenericClusterFunction) emberAfColorControlClusterServerInitCallback, \ + }; \ + const EmberAfGenericClusterFunction chipFuncArrayOccupancySensingServer[] = { \ + (EmberAfGenericClusterFunction) emberAfOccupancySensingClusterServerInitCallback, \ }; // clang-format off @@ -860,7 +925,7 @@ // clang-format on #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask -#define GENERATED_CLUSTER_COUNT 52 +#define GENERATED_CLUSTER_COUNT 56 // clang-format off #define GENERATED_CLUSTERS { \ @@ -919,10 +984,32 @@ .acceptedCommandList = nullptr ,\ .generatedCommandList = nullptr ,\ },\ + { \ + /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ + .clusterId = 0x0000002B, \ + .attributes = ZAP_ATTRIBUTE_INDEX(40), \ + .attributeCount = 4, \ + .clusterSize = 42, \ + .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ + .functions = chipFuncArrayLocalizationConfigurationServer, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ + { \ + /* Endpoint: 0, Cluster: Unit Localization (server) */ \ + .clusterId = 0x0000002D, \ + .attributes = ZAP_ATTRIBUTE_INDEX(44), \ + .attributeCount = 3, \ + .clusterSize = 7, \ + .mask = ZAP_CLUSTER_MASK(SERVER), \ + .functions = NULL, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ { \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ .clusterId = 0x0000002E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(40), \ + .attributes = ZAP_ATTRIBUTE_INDEX(47), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -933,7 +1020,7 @@ { \ /* Endpoint: 0, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(43), \ + .attributes = ZAP_ATTRIBUTE_INDEX(50), \ .attributeCount = 33, \ .clusterSize = 228, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -944,7 +1031,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (client) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(76), \ + .attributes = ZAP_ATTRIBUTE_INDEX(83), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -955,7 +1042,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(76), \ + .attributes = ZAP_ATTRIBUTE_INDEX(83), \ .attributeCount = 7, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -966,7 +1053,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(83), \ + .attributes = ZAP_ATTRIBUTE_INDEX(90), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -977,7 +1064,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(93), \ + .attributes = ZAP_ATTRIBUTE_INDEX(100), \ .attributeCount = 11, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -988,7 +1075,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(104), \ + .attributes = ZAP_ATTRIBUTE_INDEX(111), \ .attributeCount = 6, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -999,7 +1086,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(110), \ + .attributes = ZAP_ATTRIBUTE_INDEX(117), \ .attributeCount = 15, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1010,7 +1097,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(125), \ + .attributes = ZAP_ATTRIBUTE_INDEX(132), \ .attributeCount = 11, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1021,7 +1108,7 @@ { \ /* Endpoint: 0, Cluster: Switch (client) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(136), \ + .attributes = ZAP_ATTRIBUTE_INDEX(143), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1032,7 +1119,7 @@ { \ /* Endpoint: 0, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(136), \ + .attributes = ZAP_ATTRIBUTE_INDEX(143), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1043,7 +1130,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(141), \ + .attributes = ZAP_ATTRIBUTE_INDEX(148), \ .attributeCount = 5, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1054,7 +1141,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (client) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(146), \ + .attributes = ZAP_ATTRIBUTE_INDEX(153), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1065,7 +1152,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(146), \ + .attributes = ZAP_ATTRIBUTE_INDEX(153), \ .attributeCount = 7, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1073,10 +1160,21 @@ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 38 ) ,\ .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 47 ) ,\ },\ + { \ + /* Endpoint: 0, Cluster: User Label (server) */ \ + .clusterId = 0x00000041, \ + .attributes = ZAP_ATTRIBUTE_INDEX(160), \ + .attributeCount = 3, \ + .clusterSize = 4, \ + .mask = ZAP_CLUSTER_MASK(SERVER), \ + .functions = NULL, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ { \ /* Endpoint: 0, Cluster: Boolean State (server) */ \ .clusterId = 0x00000045, \ - .attributes = ZAP_ATTRIBUTE_INDEX(153), \ + .attributes = ZAP_ATTRIBUTE_INDEX(163), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1087,7 +1185,7 @@ { \ /* Endpoint: 0, Cluster: Mode Select (client) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(156), \ + .attributes = ZAP_ATTRIBUTE_INDEX(166), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1098,7 +1196,7 @@ { \ /* Endpoint: 0, Cluster: Mode Select (server) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(156), \ + .attributes = ZAP_ATTRIBUTE_INDEX(166), \ .attributeCount = 7, \ .clusterSize = 41, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1109,7 +1207,7 @@ { \ /* Endpoint: 0, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(163), \ + .attributes = ZAP_ATTRIBUTE_INDEX(173), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1120,7 +1218,7 @@ { \ /* Endpoint: 0, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(183), \ + .attributes = ZAP_ATTRIBUTE_INDEX(193), \ .attributeCount = 25, \ .clusterSize = 52, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1131,7 +1229,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(208), \ + .attributes = ZAP_ATTRIBUTE_INDEX(218), \ .attributeCount = 18, \ .clusterSize = 32, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1142,7 +1240,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (client) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(226), \ + .attributes = ZAP_ATTRIBUTE_INDEX(236), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1153,7 +1251,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(226), \ + .attributes = ZAP_ATTRIBUTE_INDEX(236), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1164,7 +1262,7 @@ { \ /* Endpoint: 0, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(231), \ + .attributes = ZAP_ATTRIBUTE_INDEX(241), \ .attributeCount = 7, \ .clusterSize = 15, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1175,7 +1273,7 @@ { \ /* Endpoint: 0, Cluster: Temperature Measurement (client) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(238), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1186,7 +1284,7 @@ { \ /* Endpoint: 0, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(238), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1197,7 +1295,7 @@ { \ /* Endpoint: 0, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(244), \ + .attributes = ZAP_ATTRIBUTE_INDEX(254), \ .attributeCount = 11, \ .clusterSize = 23, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1208,7 +1306,7 @@ { \ /* Endpoint: 0, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(255), \ + .attributes = ZAP_ATTRIBUTE_INDEX(265), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1219,7 +1317,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (client) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(261), \ + .attributes = ZAP_ATTRIBUTE_INDEX(271), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1230,7 +1328,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(261), \ + .attributes = ZAP_ATTRIBUTE_INDEX(271), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1241,7 +1339,7 @@ { \ /* Endpoint: 0, Cluster: Target Navigator (client) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(267), \ + .attributes = ZAP_ATTRIBUTE_INDEX(277), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1252,7 +1350,7 @@ { \ /* Endpoint: 0, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(267), \ + .attributes = ZAP_ATTRIBUTE_INDEX(277), \ .attributeCount = 4, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1263,7 +1361,7 @@ { \ /* Endpoint: 0, Cluster: Keypad Input (client) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(271), \ + .attributes = ZAP_ATTRIBUTE_INDEX(281), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1274,7 +1372,7 @@ { \ /* Endpoint: 0, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(271), \ + .attributes = ZAP_ATTRIBUTE_INDEX(281), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1285,7 +1383,7 @@ { \ /* Endpoint: 0, Cluster: Content Launcher (client) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(273), \ + .attributes = ZAP_ATTRIBUTE_INDEX(283), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1296,7 +1394,7 @@ { \ /* Endpoint: 0, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(273), \ + .attributes = ZAP_ATTRIBUTE_INDEX(283), \ .attributeCount = 4, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1307,7 +1405,7 @@ { \ /* Endpoint: 0, Cluster: Application Basic (client) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(277), \ + .attributes = ZAP_ATTRIBUTE_INDEX(287), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1318,7 +1416,7 @@ { \ /* Endpoint: 0, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(277), \ + .attributes = ZAP_ATTRIBUTE_INDEX(287), \ .attributeCount = 10, \ .clusterSize = 110, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1329,7 +1427,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(287), \ + .attributes = ZAP_ATTRIBUTE_INDEX(297), \ .attributeCount = 4, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1340,7 +1438,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(291), \ + .attributes = ZAP_ATTRIBUTE_INDEX(301), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1351,7 +1449,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(294), \ + .attributes = ZAP_ATTRIBUTE_INDEX(304), \ .attributeCount = 7, \ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1362,7 +1460,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (client) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(301), \ + .attributes = ZAP_ATTRIBUTE_INDEX(311), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1373,7 +1471,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(301), \ + .attributes = ZAP_ATTRIBUTE_INDEX(311), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1384,7 +1482,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(304), \ + .attributes = ZAP_ATTRIBUTE_INDEX(314), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1395,7 +1493,7 @@ { \ /* Endpoint: 1, Cluster: Basic Information (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(307), \ + .attributes = ZAP_ATTRIBUTE_INDEX(317), \ .attributeCount = 22, \ .clusterSize = 41, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1406,7 +1504,7 @@ { \ /* Endpoint: 1, Cluster: Fixed Label (client) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(329), \ + .attributes = ZAP_ATTRIBUTE_INDEX(339), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1417,7 +1515,7 @@ { \ /* Endpoint: 1, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(329), \ + .attributes = ZAP_ATTRIBUTE_INDEX(339), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1428,7 +1526,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(331), \ + .attributes = ZAP_ATTRIBUTE_INDEX(341), \ .attributeCount = 7, \ .clusterSize = 15, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1436,18 +1534,29 @@ .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 117 ) ,\ .generatedCommandList = nullptr ,\ },\ + { \ + /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ + .clusterId = 0x00000406, \ + .attributes = ZAP_ATTRIBUTE_INDEX(348), \ + .attributeCount = 14, \ + .clusterSize = 22, \ + .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + .functions = chipFuncArrayOccupancySensingServer, \ + .acceptedCommandList = nullptr ,\ + .generatedCommandList = nullptr ,\ + },\ } // clang-format on #define ZAP_CLUSTER_INDEX(index) (&generatedClusters[index]) -#define ZAP_FIXED_ENDPOINT_DATA_VERSION_COUNT 38 +#define ZAP_FIXED_ENDPOINT_DATA_VERSION_COUNT 42 // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 42, 792 }, { ZAP_CLUSTER_INDEX(42), 10, 100 }, \ + { ZAP_CLUSTER_INDEX(0), 45, 845 }, { ZAP_CLUSTER_INDEX(45), 11, 122 }, \ } // Largest attribute size is needed for various buffers @@ -1456,10 +1565,10 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE, "ATTRIBUTE_LARGEST larger than expected"); // Total size of singleton attributes -#define ATTRIBUTE_SINGLETONS_SIZE (74) +#define ATTRIBUTE_SINGLETONS_SIZE (75) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (892) +#define ATTRIBUTE_MAX_SIZE (967) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (2) diff --git a/zzz_generated/placeholder/app2/zap-generated/gen_config.h b/zzz_generated/placeholder/app2/zap-generated/gen_config.h index ac5c952ee245c0..86462f05105369 100644 --- a/zzz_generated/placeholder/app2/zap-generated/gen_config.h +++ b/zzz_generated/placeholder/app2/zap-generated/gen_config.h @@ -38,6 +38,8 @@ #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (2) +#define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_UNIT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_POWER_SOURCE_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) @@ -54,6 +56,7 @@ #define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_FIXED_LABEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_FIXED_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_BOOLEAN_STATE_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_MODE_SELECT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_MODE_SELECT_CLUSTER_SERVER_ENDPOINT_COUNT (1) @@ -70,6 +73,7 @@ #define EMBER_AF_FLOW_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_OCCUPANCY_SENSING_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_KEYPAD_INPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) @@ -141,6 +145,16 @@ #define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER #define EMBER_AF_PLUGIN_BASIC_INFORMATION +// Use this macro to check if the server side of the Localization Configuration cluster is included +#define ZCL_USING_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_LOCALIZATION_CONFIGURATION_SERVER +#define EMBER_AF_PLUGIN_LOCALIZATION_CONFIGURATION + +// Use this macro to check if the server side of the Unit Localization cluster is included +#define ZCL_USING_UNIT_LOCALIZATION_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_UNIT_LOCALIZATION_SERVER +#define EMBER_AF_PLUGIN_UNIT_LOCALIZATION + // Use this macro to check if the server side of the Power Source Configuration cluster is included #define ZCL_USING_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER #define EMBER_AF_PLUGIN_POWER_SOURCE_CONFIGURATION_SERVER @@ -217,6 +231,11 @@ #define EMBER_AF_PLUGIN_FIXED_LABEL_SERVER #define EMBER_AF_PLUGIN_FIXED_LABEL +// Use this macro to check if the server side of the User Label cluster is included +#define ZCL_USING_USER_LABEL_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_USER_LABEL_SERVER +#define EMBER_AF_PLUGIN_USER_LABEL + // Use this macro to check if the server side of the Boolean State cluster is included #define ZCL_USING_BOOLEAN_STATE_CLUSTER_SERVER #define EMBER_AF_PLUGIN_BOOLEAN_STATE_SERVER @@ -297,6 +316,11 @@ #define EMBER_AF_PLUGIN_RELATIVE_HUMIDITY_MEASUREMENT_SERVER #define EMBER_AF_PLUGIN_RELATIVE_HUMIDITY_MEASUREMENT +// Use this macro to check if the server side of the Occupancy Sensing cluster is included +#define ZCL_USING_OCCUPANCY_SENSING_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_OCCUPANCY_SENSING_SERVER +#define EMBER_AF_PLUGIN_OCCUPANCY_SENSING + // Use this macro to check if the client side of the Target Navigator cluster is included #define ZCL_USING_TARGET_NAVIGATOR_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_TARGET_NAVIGATOR_CLIENT diff --git a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h index 2aa767a3d65ebb..1bf2477979ebdf 100644 --- a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h @@ -1725,6 +1725,513 @@ class Test_TC_WNCV_5_1_SimulatedSuite : public TestCommand } }; +class Test_TC_LCFG_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_LCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_LCFG_3_1_Simulated", 3) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LCFG_3_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads SupportedLocales attribute from TH"); + VerifyOrDo(!ShouldSkip("LCFG.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::SupportedLocales::Id); + } + case 2: { + LogStep(2, "DUT reads ActiveLocale attribute from TH"); + VerifyOrDo(!ShouldSkip("LCFG.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), LocalizationConfiguration::Id, + LocalizationConfiguration::Attributes::ActiveLocale::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_LUNIT_1_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_LUNIT_1_1_SimulatedSuite() : TestCommand("Test_TC_LUNIT_1_1_Simulated", 6) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LUNIT_1_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT read (0xFFFD) ClusterRevision attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::ClusterRevision::Id); + } + case 2: { + LogStep(2, "DUT read (0xFFFC) FeatureMap attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::FeatureMap::Id); + } + case 3: { + LogStep(3, "DUT read (0xFFFB) AttributeList attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::AttributeList::Id); + } + case 4: { + LogStep(4, "DUT read (0xFFF9) AcceptedCommandList attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::AcceptedCommandList::Id); + } + case 5: { + LogStep(5, "DUT read (0xFFF8) GeneratedCommandList attribute"); + VerifyOrDo(!ShouldSkip("LUNIT.C.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::GeneratedCommandList::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_LUNIT_2_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_LUNIT_2_1_SimulatedSuite() : TestCommand("Test_TC_LUNIT_2_1_Simulated", 4) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_LUNIT_2_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads TemperatureUnit attribute from TH"); + VerifyOrDo(!ShouldSkip("LUNIT.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::TemperatureUnit::Id); + } + case 2: { + LogStep(2, "DUT writes 3 to TemperatureUnit attribute on TH"); + VerifyOrDo(!ShouldSkip("LUNIT.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::TemperatureUnit::Id); + } + case 3: { + LogStep(3, "DUT reads TemperatureUnit attribute from TH"); + VerifyOrDo(!ShouldSkip("LUNIT.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), UnitLocalization::Id, UnitLocalization::Attributes::TemperatureUnit::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_OCC_2_2_SimulatedSuite : public TestCommand +{ +public: + Test_TC_OCC_2_2_SimulatedSuite() : TestCommand("Test_TC_OCC_2_2_Simulated", 13) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_OCC_2_2_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "DUT reads from the TH the (0x0000) Occupancy attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::Occupancy::Id); + } + case 2: { + LogStep(2, "DUT reads from the TH the (0x0001) OccupancySensorType attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); + } + case 3: { + LogStep(3, "DUT reads from the TH the (0x0002) OccupancySensorType attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); + } + case 4: { + LogStep(4, "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::Id); + } + case 5: { + LogStep(5, "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::Id); + } + case 6: { + LogStep(6, "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::Id); + } + case 7: { + LogStep(7, "DUT reads from the TH the (0x0020) UltrasonicOccupiedToUnoccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::Id); + } + case 8: { + LogStep(8, "DUT reads from the TH the (0x0021) UltrasonicUnoccupiedToOccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::Id); + } + case 9: { + LogStep(9, "DUT reads from the TH the (0x0022) UltrasonicUnoccupiedToOccupiedThreshold optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::Id); + } + case 10: { + LogStep(10, "DUT reads from the TH the (0x0030) PhysicalContactOccupiedToUnoccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::Id); + } + case 11: { + LogStep(11, "DUT reads from the TH the (0x0031) PhysicalContactUnoccupiedToOccupiedDelay optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::Id); + } + case 12: { + LogStep(12, "DUT reads from the TH the (0x0032) PhysicalContactUnoccupiedToOccupiedThreshold optional attribute"); + VerifyOrDo(!ShouldSkip("OCC.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, + OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_OCC_2_4_SimulatedSuite : public TestCommand +{ +public: + Test_TC_OCC_2_4_SimulatedSuite() : TestCommand("Test_TC_OCC_2_4_Simulated", 3) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_OCC_2_4_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "TH reads OccupancySensorType attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); + } + case 2: { + LogStep(2, "TH reads OccupancySensorTypeBitmap attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); + } + } + return CHIP_NO_ERROR; + } +}; + +class Test_TC_ULABEL_3_1_SimulatedSuite : public TestCommand +{ +public: + Test_TC_ULABEL_3_1_SimulatedSuite() : TestCommand("Test_TC_ULABEL_3_1_Simulated", 3) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_ULABEL_3_1_SimulatedSuite() {} + +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; + 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 device to be commissioned"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissioning::Type value; + return WaitForCommissioning(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "Read attribute: LabelList"); + VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), UserLabel::Id, UserLabel::Attributes::LabelList::Id); + } + case 2: { + LogStep(2, "write attribute: LabelList"); + VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), UserLabel::Id, UserLabel::Attributes::LabelList::Id); + } + } + return CHIP_NO_ERROR; + } +}; + std::unique_ptr GetTestCommand(std::string testName) { if (testName == "Test_TC_BINFO_2_3_Simulated") @@ -1803,6 +2310,30 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_WNCV_5_1_SimulatedSuite()); } + if (testName == "Test_TC_LCFG_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_LCFG_3_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_1_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_1_1_SimulatedSuite()); + } + if (testName == "Test_TC_LUNIT_2_1_Simulated") + { + return std::unique_ptr(new Test_TC_LUNIT_2_1_SimulatedSuite()); + } + if (testName == "Test_TC_OCC_2_2_Simulated") + { + return std::unique_ptr(new Test_TC_OCC_2_2_SimulatedSuite()); + } + if (testName == "Test_TC_OCC_2_4_Simulated") + { + return std::unique_ptr(new Test_TC_OCC_2_4_SimulatedSuite()); + } + if (testName == "Test_TC_ULABEL_3_1_Simulated") + { + return std::unique_ptr(new Test_TC_ULABEL_3_1_SimulatedSuite()); + } return nullptr; } @@ -1829,4 +2360,10 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_RH_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_SWTCH_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_WNCV_5_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_LCFG_3_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_LUNIT_1_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_LUNIT_2_1_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_OCC_2_2_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_OCC_2_4_Simulated"); + ChipLogError(chipTool, "\t* Test_TC_ULABEL_3_1_Simulated"); } From 89df4acc2cc47c82633d1c18a45a28586e3cb121 Mon Sep 17 00:00:00 2001 From: joonhaengHeo <85541460+joonhaengHeo@users.noreply.github.com> Date: Sat, 7 Jan 2023 05:34:04 +0900 Subject: [PATCH 16/20] Implement unpairDevice API in android and chip-tool (#24127) * Implement unpairDevice * Check restyle * Delete unused file * Add default value * Update from review * Modify from reviewer comments * Modify from comment * Fix clang-tidy validation * Change check state --- .../google/chip/chiptool/CHIPToolActivity.kt | 5 + .../chip/chiptool/SelectActionFragment.kt | 3 + .../provisioning/UnpairDeviceFragment.kt | 60 ++++++ .../res/layout/select_action_fragment.xml | 8 + .../res/layout/unpair_device_fragment.xml | 27 +++ .../app/src/main/res/values/strings.xml | 2 + .../commands/pairing/PairingCommand.cpp | 22 ++- .../commands/pairing/PairingCommand.h | 10 +- src/controller/BUILD.gn | 2 + src/controller/CHIPDeviceController.cpp | 7 +- src/controller/CurrentFabricRemover.cpp | 184 ++++++++++++++++++ src/controller/CurrentFabricRemover.h | 108 ++++++++++ .../java/AndroidCurrentFabricRemover.cpp | 102 ++++++++++ .../java/AndroidCurrentFabricRemover.h | 48 +++++ src/controller/java/BUILD.gn | 3 + .../java/CHIPDeviceController-JNI.cpp | 18 ++ .../ChipDeviceController.java | 7 + .../UnpairDeviceCallback.java | 24 +++ 18 files changed, 634 insertions(+), 6 deletions(-) create mode 100644 examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/provisioning/UnpairDeviceFragment.kt create mode 100644 examples/android/CHIPTool/app/src/main/res/layout/unpair_device_fragment.xml create mode 100644 src/controller/CurrentFabricRemover.cpp create mode 100644 src/controller/CurrentFabricRemover.h create mode 100644 src/controller/java/AndroidCurrentFabricRemover.cpp create mode 100644 src/controller/java/AndroidCurrentFabricRemover.h create mode 100644 src/controller/java/src/chip/devicecontroller/UnpairDeviceCallback.java diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/CHIPToolActivity.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/CHIPToolActivity.kt index ce37951915e283..e7005477deb898 100644 --- a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/CHIPToolActivity.kt +++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/CHIPToolActivity.kt @@ -44,6 +44,7 @@ import com.google.chip.chiptool.provisioning.AddressCommissioningFragment import com.google.chip.chiptool.provisioning.DeviceProvisioningFragment import com.google.chip.chiptool.provisioning.EnterNetworkFragment import com.google.chip.chiptool.provisioning.ProvisionNetworkType +import com.google.chip.chiptool.provisioning.UnpairDeviceFragment import com.google.chip.chiptool.setuppayloadscanner.BarcodeFragment import com.google.chip.chiptool.setuppayloadscanner.CHIPDeviceDetailsFragment import com.google.chip.chiptool.setuppayloadscanner.CHIPDeviceInfo @@ -191,6 +192,10 @@ class CHIPToolActivity : showFragment(BarcodeFragment.newInstance()) } + override fun handleUnpairDeviceClicked() { + showFragment(UnpairDeviceFragment.newInstance()) + } + private fun showFragment(fragment: Fragment, showOnBack: Boolean = true) { val fragmentTransaction = supportFragmentManager .beginTransaction() diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/SelectActionFragment.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/SelectActionFragment.kt index 263e979bb12b28..4816469c187f61 100644 --- a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/SelectActionFragment.kt +++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/SelectActionFragment.kt @@ -60,6 +60,7 @@ class SelectActionFragment : Fragment() { clusterInteractionBtn.setOnClickListener { getCallback()?.handleClusterInteractionClicked() } provisionCustomFlowBtn.setOnClickListener{ getCallback()?.handleCustomFlowClicked() } wildcardBtn.setOnClickListener { getCallback()?.handleWildcardClicked() } + unpairDeviceBtn.setOnClickListener{ getCallback()?.handleUnpairDeviceClicked() } } } @@ -157,6 +158,8 @@ class SelectActionFragment : Fragment() { fun handleWildcardClicked() /** Notifies listener of provision-custom-flow button click. */ fun handleCustomFlowClicked() + /** Notifies listener of unpair button click. */ + fun handleUnpairDeviceClicked() } companion object { diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/provisioning/UnpairDeviceFragment.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/provisioning/UnpairDeviceFragment.kt new file mode 100644 index 00000000000000..801d4fc1272836 --- /dev/null +++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/provisioning/UnpairDeviceFragment.kt @@ -0,0 +1,60 @@ +package com.google.chip.chiptool.provisioning + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope +import chip.devicecontroller.ChipDeviceController +import chip.devicecontroller.UnpairDeviceCallback +import com.google.chip.chiptool.ChipClient +import com.google.chip.chiptool.R +import com.google.chip.chiptool.clusterclient.AddressUpdateFragment +import kotlinx.android.synthetic.main.unpair_device_fragment.view.unpairDeviceBtn +import kotlinx.coroutines.* + +class UnpairDeviceFragment : Fragment() { + private val deviceController: ChipDeviceController + get() = ChipClient.getDeviceController(requireContext()) + + private lateinit var scope: CoroutineScope + + private lateinit var addressUpdateFragment: AddressUpdateFragment + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + scope = viewLifecycleOwner.lifecycleScope + + return inflater.inflate(R.layout.unpair_device_fragment, container, false).apply { + addressUpdateFragment = + childFragmentManager.findFragmentById(R.id.addressUpdateFragment) as AddressUpdateFragment + + unpairDeviceBtn.setOnClickListener { scope.launch { unpairDeviceClick() } } + } + } + + inner class ChipUnpairDeviceCallback : UnpairDeviceCallback { + override fun onError(status: Int, remoteDeviceId: Long) { + Log.d(TAG, "onError : $remoteDeviceId, $status") + } + + override fun onSuccess(remoteDeviceId: Long) { + Log.d(TAG, "onSuccess : $remoteDeviceId") + } + } + + private fun unpairDeviceClick() { + deviceController.unpairDeviceCallback(addressUpdateFragment.deviceId, ChipUnpairDeviceCallback()) + } + + + companion object { + private const val TAG = "UnpairDeviceFragment" + fun newInstance(): UnpairDeviceFragment = UnpairDeviceFragment() + } +} diff --git a/examples/android/CHIPTool/app/src/main/res/layout/select_action_fragment.xml b/examples/android/CHIPTool/app/src/main/res/layout/select_action_fragment.xml index 3098a324158270..cfc6b90be5853b 100644 --- a/examples/android/CHIPTool/app/src/main/res/layout/select_action_fragment.xml +++ b/examples/android/CHIPTool/app/src/main/res/layout/select_action_fragment.xml @@ -104,6 +104,14 @@ android:layout_marginTop="8dp" android:text="@string/cluster_interaction_tool" /> +