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/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. 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/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 00000000000000..ab43a33ac40d22 Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_ESP_Matter_PAA_test_vid_0x131B.der differ 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 00000000000000..d8b27845f7f7f4 Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Heiman_Matter_Test_PAA_vid_0x120B.der differ 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 00000000000000..bc2efdaa0768bf Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.der differ diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.pem new file mode 100644 index 00000000000000..690fd2e497f68d --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_HooRii_Matter_Development_PAA_With_VID_0x1351_vid_0x1351.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB+DCCAZ6gAwIBAgIIBk27AsFF0LswCgYIKoZIzj0EAwIwTjE2MDQGA1UEAwwt +SG9vUmlpIE1hdHRlciBEZXZlbG9wbWVudCBQQUEgV2l0aCBWSUQgMHgxMzUxMRQw +EgYKKwYBBAGConwCAQwEMTM1MTAeFw0yMDEwMTUxNDIzNDNaFw00MDEwMTUxNDIz +NDJaME4xNjA0BgNVBAMMLUhvb1JpaSBNYXR0ZXIgRGV2ZWxvcG1lbnQgUEFBIFdp +dGggVklEIDB4MTM1MTEUMBIGCisGAQQBgqJ8AgEMBDEzNTEwWTATBgcqhkjOPQIB +BggqhkjOPQMBBwNCAAST3wykHyzHsM7EAnY07y+DGj+fk3GfzclOt+Ahlv8+24pL +u6/6vngSibE2oTyeSMkDtyUNgZw+T8HaMpf9Sm9Ao2YwZDASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU0KpTU6mb/AdvdypNFGSD +1bGOxGwwHwYDVR0jBBgwFoAU0KpTU6mb/AdvdypNFGSD1bGOxGwwCgYIKoZIzj0E +AwIDSAAwRQIhAPGKnOdwgO4Rc6HBWSudEJTeOv9+d47WUnSlrVCoQ63ZAiBElSjW ++g2uNYxW4Iwst7tFtMZ39TfWGo7RFoLP7+pPGQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.der new file mode 100644 index 00000000000000..52accdbc52ccc0 Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Kasa_Matter_Test_PAA_vid_0x1391.der differ 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 00000000000000..bafcf483f1d72a Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.der differ diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.pem new file mode 100644 index 00000000000000..eeb3c834c72ce5 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_PV_Test_PAA_vid_0x1381.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBuDCCAV+gAwIBAgIQXp0/DDCeJVpuI1QbL5nTRzAKBggqhkjOPQQDAjAsMRQw +EgYDVQQDDAtQViBUZXN0IFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEzODEwHhcNMjIx +MTAzMDAwMzA4WhcNMjMxMTAzMDEwMzA4WjAsMRQwEgYDVQQDDAtQViBUZXN0IFBB +QTEUMBIGCisGAQQBgqJ8AgEMBDEzODEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC +AAQsEql6YspiEmKJG4dn2Pah8IHTLr8NVHjTwyoiSUBNVVI+9kuCa4xONZb0H9ZZ +zHm5iM6B1/h6B3m8+eJ6La2lo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBQqdZ9deiUhrsmPljLHfjSRC/8UOzAOBgNVHQ8BAf8EBAMCAYYwHwYDVR0jBBgw +FoAUKnWfXXolIa7Jj5Yyx340kQv/FDswCgYIKoZIzj0EAwIDRwAwRAIgLYPIJnkx +ipTW8uIIsFWXF8fZ3WOWENz0YJOITz5kibgCIDpeP4vmJ/fEeDyVYdtg0PhevH6U +hx8lVhYmRLmEaZk3 +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.der new file mode 100644 index 00000000000000..3e4254ad8a9a3e Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.der differ diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.pem new file mode 100644 index 00000000000000..c4ed733425a7b1 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Pankore_Matter_Test_PAA.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAUigAwIBAgIIIh3zuRPQUMkwCgYIKoZIzj0EAwIwIjEgMB4GA1UEAwwX +UGFua29yZSBNYXR0ZXIgVGVzdCBQQUEwIBcNMjIwNzEwMTQyMzQzWhgPOTk5OTEy +MzEyMzU5NTlaMCIxIDAeBgNVBAMMF1BhbmtvcmUgTWF0dGVyIFRlc3QgUEFBMFkw +EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOGjZ9QwkghR9TPHTVj+XdOZ79o1/ID4q +YNwLFQpBcucwUm0y2RlwtNVqOk+zwaeajZ1jVyj/c/kHMLotIHlTVqNmMGQwEgYD +VR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNSQNtX8 +TpteNV68FR6mU90YXcOCMB8GA1UdIwQYMBaAFNSQNtX8TpteNV68FR6mU90YXcOC +MAoGCCqGSM49BAMCA0kAMEYCIQDdof47JpWuW8GwCxvB1L25NdGaN9esVcTo0BYA +VBoswAIhANS7fxnh+SGV+hPEF1YQop84fhU+k4aDnjoCgEh9qBtv +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.der b/credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.der new file mode 100644 index 00000000000000..c09d3943223eeb Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.der differ diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.pem new file mode 100644 index 00000000000000..9fa4b3c0315851 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_SAVANT_Matter_PAA_vid_0x1339.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBwDCCAWagAwIBAgIIahMWpBqqgC8wCgYIKoZIzj0EAwIwMjEaMBgGA1UEAwwR +U0FWQU5UIE1hdHRlciBQQUExFDASBgorBgEEAYKifAIBDAQxMzM5MB4XDTIyMTEz +MDE1MjM0M1oXDTQyMTEzMDE1MjM0MlowMjEaMBgGA1UEAwwRU0FWQU5UIE1hdHRl +ciBQQUExFDASBgorBgEEAYKifAIBDAQxMzM5MFkwEwYHKoZIzj0CAQYIKoZIzj0D +AQcDQgAEm8sEuUyhzBEU6159qtAra4WvPIO9XrTdQuakpI2g2gn6hxcvljTsiG0Q +BW5j6KTbUFStNDexVi4wfmDPELhwt6NmMGQwEgYDVR0TAQH/BAgwBgEB/wIBATAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFI/Y+33CensBfNAfXboQS8bs124lMB8G +A1UdIwQYMBaAFI/Y+33CensBfNAfXboQS8bs124lMAoGCCqGSM49BAMCA0gAMEUC +IQCTURyxOR0OEPsQdmXrf6Liyg442V/Vk8Zf/jWzbNNjOwIgGK0ZaBjhgawCk/NC +6PltqRbuc7OqeoyKcyNhe70MlBQ= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.der b/credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.der new file mode 100644 index 00000000000000..88fb9ebb9c9665 Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.der differ diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.pem new file mode 100644 index 00000000000000..7457f63be57f06 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_SIEGENIA_Testnet_PAA_vid_0x135A.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBxjCCAWygAwIBAgIIEDD67HZUoa0wCgYIKoZIzj0EAwIwNTEdMBsGA1UEAwwU +U0lFR0VOSUEgVGVzdG5ldCBQQUExFDASBgorBgEEAYKifAIBDAQxMzVBMB4XDTIy +MTExNjAwMDAwMFoXDTMyMTExMjIzNTk1OVowNTEdMBsGA1UEAwwUU0lFR0VOSUEg +VGVzdG5ldCBQQUExFDASBgorBgEEAYKifAIBDAQxMzVBMFkwEwYHKoZIzj0CAQYI +KoZIzj0DAQcDQgAEs2PplHaSf6mVZo9Nhc9Vvx8/HkKi+ufMh5eLheZ8tvFbcCXc +q3bQ6fnK3UIkD2BywaYo6yG57zabM6SdnQFZNKNmMGQwEgYDVR0TAQH/BAgwBgEB +/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ8AEJ0oGFHjM3qhcXzT4XNL +psLhMB8GA1UdIwQYMBaAFJ8AEJ0oGFHjM3qhcXzT4XNLpsLhMAoGCCqGSM49BAMC +A0gAMEUCIQCJzeEmROipdHOofDoPt8pVydozYnTrhiyOZYxxr8Z0wQIgCRRTV0aP +ntrFDv4WNPKfyHQ4sdBx/ecyb2cN4fS21nA= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.der new file mode 100644 index 00000000000000..585a0944178069 Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Tapo_Matter_Test_PAA_vid_0x1392.der differ 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 00000000000000..c11e4f5b9ff36a Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Telink_Matter_Development_PAA_01_vid_0x1141.der differ 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 00000000000000..22faa441566ad7 Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der differ diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem b/credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem new file mode 100644 index 00000000000000..ac90a091b71803 --- /dev/null +++ b/credentials/development/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem @@ -0,0 +1,13 @@ +Subject: CN=Tuya Matter PAA,vid=0x125D +-----BEGIN CERTIFICATE----- +MIIBvDCCAWKgAwIBAgIGAYRXDp5eMAoGCCqGSM49BAMCMDAxGDAWBgNVBAMMD1R1 +eWEgTWF0dGVyIFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEyNUQwIBcNMjIxMTA4MTE0 +NDQ2WhgPOTk5OTEyMzEyMzU5NTlaMDAxGDAWBgNVBAMMD1R1eWEgTWF0dGVyIFBB +QTEUMBIGCisGAQQBgqJ8AgEMBDEyNUQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC +AAQEUjCg9l3KEG1clKDMUifywrM0K9Gov0bHuoyvLM814ROF+0n5pZCxFLBi6B9k +DcZVia3LIHu7cN3VdvZbw+SSo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEBMB8GA1Ud +IwQYMBaAFDVXUqOnIFgzdx76vqUyZwywsx0JMB0GA1UdDgQWBBQ1V1KjpyBYM3ce ++r6lMmcMsLMdCTAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwIDSAAwRQIgBM5O +Zkgp6kiwdTX8ubii0/zzeh6/ZlVS8Cr4CW7lzSgCIQDzcQyiTX7t5+K7MZ+26Vgu +cXq+8bBdhTUbaM1CpHa2zw== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.der b/credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.der new file mode 100644 index 00000000000000..16dcb616b3a46e Binary files /dev/null and b/credentials/development/paa-root-certs/dcld_mirror_CN_Uascent_Matter_Development_PAA_01_vid_0x1400.der differ 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 00000000000000..a5d8af96d4fb19 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.pem new file mode 100644 index 00000000000000..3af8819994bb1e --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_ACK_PAA_vid_0x137A.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBtDCCAVqgAwIBAgIRAKmlv/NkWcbEmD8lf53gJ8IwCgYIKoZIzj0EAwIwKDEQ +MA4GA1UEAwwHQUNLIFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEzN0EwIBcNMjIxMjIx +MTcyODI4WhgPMjEyMjExMjcxODI4MjhaMCgxEDAOBgNVBAMMB0FDSyBQQUExFDAS +BgorBgEEAYKifAIBDAQxMzdBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEm4U8 +MVedT5hVlDTuDO31lnEHWbjW2euLdkcwWoK50S1wHnIHGdtmQwVFfl/QsfR2vknr +u09p1W/8pHbwmPbq7aNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUsmX4 +RnbkZc9s0jK2k4MwyOowZAYwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFLJl ++EZ25GXPbNIytpODMMjqMGQGMAoGCCqGSM49BAMCA0gAMEUCIQCrjO6txs7d8VA4 +hFHM4ZYAcSXTNWKYKIFRNEIbGOlJXwIgYGjCddu3ddzOnjXEd3kK1oO+Exs4Wtzw +XHHTB2RisdU= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.der new file mode 100644 index 00000000000000..8cccdfe5d6053c Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.pem new file mode 100644 index 00000000000000..fdd6d2f528df8d --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Basics_PAA_vid_0x137B.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBujCCAV+gAwIBAgIQWLcxV1Mfj6lftudYrsmyljAKBggqhkjOPQQDAjArMRMw +EQYDVQQDDApCYXNpY3MgUEFBMRQwEgYKKwYBBAGConwCAQwEMTM3QjAgFw0yMjEy +MjExNzM3NThaGA8yMTIyMTEyNzE4Mzc1OFowKzETMBEGA1UEAwwKQmFzaWNzIFBB +QTEUMBIGCisGAQQBgqJ8AgEMBDEzN0IwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC +AASnpaiASxMZDfqgC3oYe18bkB25PWJI+jI7MvKWnhq2+FxdaByMU1P6Sv2qoBCg +ikN54BMhJNthnQQL8bGtrE/Co2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBQ/4wy1FSZGe0TBECIIbihQpVCcqjAOBgNVHQ8BAf8EBAMCAYYwHwYDVR0jBBgw +FoAUP+MMtRUmRntEwRAiCG4oUKVQnKowCgYIKoZIzj0EAwIDSQAwRgIhAPaRP+mH +VnXvZaYIkyoAh34JVfTJvhOcPxmgaywmvqh3AiEAqrsuiz6oZnU0j+fqyhXj7w1S +Mwzbg5//iCLEUET36XU= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.der new file mode 100644 index 00000000000000..f4299e6374d6c8 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.pem new file mode 100644 index 00000000000000..735a6d0f233298 --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Espressif_Matter_PAA_O_Espressif_Systems_vid_0x131B.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICCDCCAa6gAwIBAgIQaAJCUN1IiECssOZIuhJXPDAKBggqhkjOPQQDAjBRMR0w +GwYDVQQDDBRFc3ByZXNzaWYgTWF0dGVyIFBBQTEaMBgGA1UECgwRRXNwcmVzc2lm +IFN5c3RlbXMxFDASBgorBgEEAYKifAIBDAQxMzFCMCAXDTIyMTEyODA4MTM0MVoY +Dzk5OTkxMjMxMjM1OTU5WjBRMR0wGwYDVQQDDBRFc3ByZXNzaWYgTWF0dGVyIFBB +QTEaMBgGA1UECgwRRXNwcmVzc2lmIFN5c3RlbXMxFDASBgorBgEEAYKifAIBDAQx +MzFCMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEi6YLVYUIZ85zY/OZtse5csL6 +Uthd9R+IjpZ1j6SBLysbzbjt3EqGVAew1pQUkzrwmzEXpoXgkUGLSRqdSh5PcqNm +MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAfBgNVHSMEGDAWgBRNEvWAG3XTI4XFVZDv +RSe8s7px4DAdBgNVHQ4EFgQUTRL1gBt10yOFxVWQ70UnvLO6ceAwDgYDVR0PAQH/ +BAQDAgGGMAoGCCqGSM49BAMCA0gAMEUCIQDcyYwJvBkl+VaU1bfqF4EcJ0SYq+u2 +keLIKJofbHZS4AIgO12+Flxj9X6XwL2z1g9G6JoOHKJMgZjcmRiTDwib3Vs= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.der new file mode 100644 index 00000000000000..134fbb01f8fc4a Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.pem new file mode 100644 index 00000000000000..1578cb8b04636c --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Kasa_Matter_PAA_vid_0x1391.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBvzCCAWSgAwIBAgIIQZCTp/8AkHgwCgYIKoZIzj0EAwIwMDEYMBYGA1UEAwwP +S2FzYSBNYXR0ZXIgUEFBMRQwEgYKKwYBBAGConwCAQwEMTM5MTAgFw0yMjExMDMx +NDIzNDNaGA85OTk5MTIzMTIzNTk1OVowMDEYMBYGA1UEAwwPS2FzYSBNYXR0ZXIg +UEFBMRQwEgYKKwYBBAGConwCAQwEMTM5MTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABFcDxlEI/cWsbO5KrwHFCdr5q/LsDk7v8U/6e6BMuHegByEgnavT7A0FqM7f +3rhBFrM6lPzceCuhrLwASsDZcgqjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQ1Z89ZefZaomCA9PHJWq1uiVGdLzAfBgNV +HSMEGDAWgBQ1Z89ZefZaomCA9PHJWq1uiVGdLzAKBggqhkjOPQQDAgNJADBGAiEA +nMzUHVyjTvsLuBycTO4x1cvqNn9yJeHDqrmpBk7SjO0CIQDxjC9RCLIMTjFoOMiT +e2ziOfYvaGnKzXdGQja5pSfmog== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.der b/credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.der new file mode 100644 index 00000000000000..2a8ac3010cd8b6 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_LEEDARSON-MATTER-PAA_vid_0x1168.der differ 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 00000000000000..e8b9ed7e981c09 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.pem new file mode 100644 index 00000000000000..347ced27f3f81b --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Legrand_Group_Matter_PAA_vid_0x1021.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIB3DCCAYKgAwIBAgIUVyXsUE9uwOsz3WIzCwpjyxHpuRowCgYIKoZIzj0EAwIw +OTEhMB8GA1UEAwwYTGVncmFuZCBHcm91cCBNYXR0ZXIgUEFBMRQwEgYKKwYBBAGC +onwCAQwEMTAyMTAgFw0yMjEwMTExODQzMjNaGA8yMDc5MDYwNTIzNTk1OVowOTEh +MB8GA1UEAwwYTGVncmFuZCBHcm91cCBNYXR0ZXIgUEFBMRQwEgYKKwYBBAGConwC +AQwEMTAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNxf8IrVTUSMZIC1mO/p +NeEvJxiRi+luZmMCydMzWZ4JTWz5ue96T1HbsTmrn8BCnHz7zwE3d1wuxtEfSoTc +WpyjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB8GA1Ud +IwQYMBaAFAtRB7zeDTBB1iaJGMp9epKGQqHxMB0GA1UdDgQWBBQLUQe83g0wQdYm +iRjKfXqShkKh8TAKBggqhkjOPQQDAgNIADBFAiAX46VlfsA+SgimfSPbrm3EFRrV +6yOCBGcyOQaXWZ9C5wIhANukApPkPni8AEEtZBXcTlahRBIYochPoxeG7dXQOZK0 +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.der new file mode 100644 index 00000000000000..de608b97680b8e Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Leviton_PAA_vid_0x109B.der differ 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 00000000000000..70bd97aef43fff Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.pem new file mode 100644 index 00000000000000..c8585a407ff55d --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_PAA_1_O_ubisys_technologies_GmbH_vid_0x10F2.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICBzCCAa6gAwIBAgIQTnUMFODg5jtpD4m9eotV3TAKBggqhkjOPQQDAjBRMSEw +HwYDVQQKDBh1YmlzeXMgdGVjaG5vbG9naWVzIEdtYkgxFjAUBgNVBAMMDU1hdHRl +ciBQQUEgIzExFDASBgorBgEEAYKifAIBDAQxMEYyMCAXDTIyMTEyNTEyNTYxN1oY +Dzk5OTkxMjMxMjM1OTU5WjBRMSEwHwYDVQQKDBh1YmlzeXMgdGVjaG5vbG9naWVz +IEdtYkgxFjAUBgNVBAMMDU1hdHRlciBQQUEgIzExFDASBgorBgEEAYKifAIBDAQx +MEYyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdPTdLt56VwHY8+KZ0MuFI4QQ +LJh7uV0572NtDQJx+riMmyAKt/2w1m9XBbecxhPIkpj9ml+/aaWChJoFQtnUA6Nm +MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FKXRsL+UiUhnmYbXBhFNlIr6h/kCMB8GA1UdIwQYMBaAFKXRsL+UiUhnmYbXBhFN +lIr6h/kCMAoGCCqGSM49BAMCA0cAMEQCIEMl/Ej0pjTjONuPq1Du45cZJpGmUq2l +UZ7zhejPZVWvAiACI2re2e5TA+p3C+l4w2sfn6LWt3W2UsAACJ1bJit/3w== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.der new file mode 100644 index 00000000000000..582eef1d8c97d6 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.pem new file mode 100644 index 00000000000000..c86cb93cc7660d --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Matter_Signify_PAA_1_vid_0x100B.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBrTCCAVOgAwIBAgIRAPoJEqfBRt1UehNPUgdd+AYwCgYIKoZIzj0EAwIwNTEd +MBsGA1UEAwwUTWF0dGVyIFNpZ25pZnkgUEFBIDExFDASBgorBgEEAYKifAIBDAQx +MDBCMCAXDTIyMTIwNzE0MDMxMVoYDzk5OTkxMjMxMjM1OTU5WjA1MR0wGwYDVQQD +DBRNYXR0ZXIgU2lnbmlmeSBQQUEgMTEUMBIGCisGAQQBgqJ8AgEMBDEwMEIwWTAT +BgcqhkjOPQIBBggqhkjOPQMBBwNCAARnPmL7AcztXBr4UhQcu6Y2EHzCPbNmJtyz +v1hjHQpYNv9k3MmVihOgBTqc4cUoyiYHpyILqbx/I68sQNkN4H29o0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQQ3kVZvKqAgoZ4ecCaf47sioh+9zAOBgNV +HQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwIDSAAwRQIgN6ZuBdfkHctkuLAn4kbGM+O+ +sEUneAk1cFzwKQpL0ZkCIQCykokHD3R5+0+ZGLtXkjCKqRVEX62YklSjJ7HRJa9c +7g== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.der new file mode 100644 index 00000000000000..e3adb2e269f409 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.pem new file mode 100644 index 00000000000000..3896aff3f51a7c --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Meross_Matter_PAA_vid_0x1345.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBwTCCAWigAwIBAgIIEy+0SI9K220wCgYIKoZIzj0EAwIwMjEaMBgGA1UEAwwR +TWVyb3NzIE1hdHRlciBQQUExFDASBgorBgEEAYKifAIBDAQxMzQ1MCAXDTIyMTEw +MTAwMDAwMFoYDzIxMjIxMDA3MjM1OTU5WjAyMRowGAYDVQQDDBFNZXJvc3MgTWF0 +dGVyIFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEzNDUwWTATBgcqhkjOPQIBBggqhkjO +PQMBBwNCAARv1gvpF64D9mmepNE2vdKg2NS1CWrVnl9Ol5cEFTxDNsfv2vELo9lY +20tqtA29vmxnw0i0ca0QgW0HjjjbDQoro2YwZDASBgNVHRMBAf8ECDAGAQH/AgEB +MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUQJdGpD1+8VG2zdignqR2+pvfdWMw +HwYDVR0jBBgwFoAUQJdGpD1+8VG2zdignqR2+pvfdWMwCgYIKoZIzj0EAwIDRwAw +RAIgXDpmGQ3lC1TOwzgFE3kajyNCcb2jc8yL8CrWrfln+sMCIHBvg6KH7X52m7nT +ri9So5ut4XgTf3Mm5oPzEYnl+2c+ +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.der new file mode 100644 index 00000000000000..bb14e504ff7123 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Midea_Group_Matter_PAA_G1_Prod_vid_0x118C.der differ 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 00000000000000..e170a9d793a6c7 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Prime_PAA_vid_0x1381.der differ 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 00000000000000..63ce01d106293b Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.pem new file mode 100644 index 00000000000000..885056c9a77350 --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Sengled_Matter_PAA_vid_0x1160.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBqDCCAU6gAwIBAgIQaVnpV7d9umB4dm0aORnqpDAKBggqhkjOPQQDAjAzMRsw +GQYDVQQDDBJTZW5nbGVkIE1hdHRlciBQQUExFDASBgorBgEEAYKifAIBDAQxMTYw +MCAXDTIyMTIyODA3NDA0N1oYDzIwNTIxMjI4MDg0MTAzWjAzMRswGQYDVQQDDBJT +ZW5nbGVkIE1hdHRlciBQQUExFDASBgorBgEEAYKifAIBDAQxMTYwMFkwEwYHKoZI +zj0CAQYIKoZIzj0DAQcDQgAEXp+xXQ144JichnUkcPlLvge/CYh1phyiqLNY4cnS +GPGesd09HqXufT7yHsQV6ajICocsW8GWnH84FP+AntMLOKNCMEAwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUD9nH1i8cU0+V9Q9RUg+7AHW1kpAwDgYDVR0PAQH/ +BAQDAgGGMAoGCCqGSM49BAMCA0gAMEUCIE7cEn6mE7IiiWGw7ZJajo50jfFGupei +Hb5v7ko0QAyvAiEA3PD5vJhIUIuF1H2UyOMz8nTzOc24yS56/epUBwisS6w= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.der b/credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.der new file mode 100644 index 00000000000000..2c16b00dd3fa84 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Tapo_Matter_PAA_vid_0x1392.der differ 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 00000000000000..22faa441566ad7 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem b/credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem new file mode 100644 index 00000000000000..729f81a554fc26 --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_CN_Tuya_Matter_PAA_vid_0x125D.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBvDCCAWKgAwIBAgIGAYRXDp5eMAoGCCqGSM49BAMCMDAxGDAWBgNVBAMMD1R1 +eWEgTWF0dGVyIFBBQTEUMBIGCisGAQQBgqJ8AgEMBDEyNUQwIBcNMjIxMTA4MTE0 +NDQ2WhgPOTk5OTEyMzEyMzU5NTlaMDAxGDAWBgNVBAMMD1R1eWEgTWF0dGVyIFBB +QTEUMBIGCisGAQQBgqJ8AgEMBDEyNUQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC +AAQEUjCg9l3KEG1clKDMUifywrM0K9Gov0bHuoyvLM814ROF+0n5pZCxFLBi6B9k +DcZVia3LIHu7cN3VdvZbw+SSo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEBMB8GA1Ud +IwQYMBaAFDVXUqOnIFgzdx76vqUyZwywsx0JMB0GA1UdDgQWBBQ1V1KjpyBYM3ce ++r6lMmcMsLMdCTAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwIDSAAwRQIgBM5O +Zkgp6kiwdTX8ubii0/zzeh6/ZlVS8Cr4CW7lzSgCIQDzcQyiTX7t5+K7MZ+26Vgu +cXq+8bBdhTUbaM1CpHa2zw== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.der b/credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.der new file mode 100644 index 00000000000000..ebca45453896c6 Binary files /dev/null and b/credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.der differ diff --git a/credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.pem b/credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.pem new file mode 100644 index 00000000000000..bf4fd769683fcb --- /dev/null +++ b/credentials/production/paa-root-certs/dcld_mirror_SERIALNUMBER_63709330400001_CN_NXP_Matter_PAA_O_NXP_Semiconductors_NV_C_NL.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKjCCAc6gAwIBAgIQZIhrnLD8JtUdBFKOg5azKDAMBggqhkjOPQQDAgUAMGEx +FzAVBgNVBAUMDjYzNzA5MzMwNDAwMDAxMSAwHgYDVQQKDBdOWFAgU2VtaWNvbmR1 +Y3RvcnMgTi5WLjELMAkGA1UEBgwCTkwxFzAVBgNVBAMMDk5YUCBNYXR0ZXIgUEFB +MB4XDTIyMTAwMTE0MjM0M1oXDTQ5MTIzMTIzNTk1OVowYTEXMBUGA1UEBQwONjM3 +MDkzMzA0MDAwMDExIDAeBgNVBAoMF05YUCBTZW1pY29uZHVjdG9ycyBOLlYuMQsw +CQYDVQQGDAJOTDEXMBUGA1UEAwwOTlhQIE1hdHRlciBQQUEwWTATBgcqhkjOPQIB +BggqhkjOPQMBBwNCAAQmG9CGuc3THfDL4EvdtnLGVa7HLvsWKITV6EDfswaqKGid +k2TYwuUIVKwU6LxEWhensDfKkEx05I33Gv8bNaAvo2YwZDASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUl5ekL40HbyPDiIBNTYJC +2T3Xcf0wHwYDVR0jBBgwFoAUl5ekL40HbyPDiIBNTYJC2T3Xcf0wDAYIKoZIzj0E +AwIFAANIADBFAiAoIKgE0cFKmvPSG07jpNrjFX5+9BzTUrnY+ZzItV4q4wIhAKar ++mfA4WFw1ZlFODuQ1NeD7sAqEzDzgqzj+8Loafcn +-----END CERTIFICATE----- \ No newline at end of file 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..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 @@ -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; @@ -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; @@ -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 { @@ -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..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 @@ -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", @@ -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-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/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index 78a720bf22610c..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 @@ -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; @@ -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 { @@ -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..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 @@ -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", @@ -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/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/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 9e196b071bb2df..fd11bac0562806 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; @@ -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; @@ -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 { @@ -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..a0e07d51d636a0 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", @@ -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 20770992d3c6de..f13eaa6810ebe1 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; @@ -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; @@ -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 { @@ -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..7d9c91a966953d 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", @@ -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.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_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap index b8f4d837892f1a..30876a6f5d7d6a 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", @@ -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.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_contactsensor_lFAGG1bfRO.zap b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap index 8e49bac0c5fbb9..7300d725d57911 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", @@ -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.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_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap index 622d97c5033235..63645911051bde 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", @@ -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.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_doorlock_aNKYAreMXE.zap b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap index cfcba042044c38..43383ea912b116 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", @@ -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.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_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap index 4a6c20dc3678d3..c7a16d13f57ed4 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", @@ -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.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_fan_7N2TobIlOX.zap b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap index 15bea4e9f4e799..bc4042f5ff46b6 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", @@ -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.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_flowsensor_1zVxHedlaV.zap b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap index 05284278d50fde..2ec904036f07ca 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", @@ -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.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_heatingcoolingunit_ncdGai1E5a.zap b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap index 44ce0f1b32df80..baaaef0506cce8 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", @@ -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.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_humiditysensor_Xyj4gda6Hb.zap b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap index 5114019f8d73f5..cd8199ba90edaa 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", @@ -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.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_lightsensor_lZQycTFcJK.zap b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap index 223b4e055cda69..5bb8164029b32a 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", @@ -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.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_occupancysensor_iHyVgifZuo.zap b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap index 36b8f09ea009af..1039a3e8768889 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", @@ -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.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_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap index f366046581c6ea..0ee26065d436d5 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", @@ -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.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_onofflightswitch_FsPlMr090Q.zap b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap index 9a251571ccd7e0..6e2fb0d28dd43e 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", @@ -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.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_onoffpluginunit_Wtf8ss5EBY.zap b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap index 905f811e581e9d..e71dc662cc3417 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", @@ -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.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_pressuresensor_s0qC9wLH4k.zap b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap index 87acceec68559e..268700dc6007b8 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", @@ -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.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_speaker_RpzeXdimqA.zap b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap index ee674ca36239af..34bcecd5fd1e8d 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", @@ -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.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_temperaturesensor_Qy1zkNW7c3.zap b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap index deb4316ea5b8da..7062ae0e908b2a 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", @@ -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.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_thermostat_bm3fb8dhYi.zap b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap index a275cc7a7c50d4..7447417cbf8774 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", @@ -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.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/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap index 613186058c068a..bbbb67fc105dc8 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", @@ -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 0696014926b2f5..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 @@ -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; @@ -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; @@ -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 { @@ -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..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 @@ -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", @@ -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/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/thermostat/efr32/third_party/connectedhomeip b/examples/contact-sensor-app/telink/third_party/connectedhomeip similarity index 100% rename from examples/thermostat/efr32/third_party/connectedhomeip rename to examples/contact-sensor-app/telink/third_party/connectedhomeip 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/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter index 9e196b071bb2df..fd11bac0562806 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; @@ -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; @@ -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 { @@ -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..a0e07d51d636a0 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", @@ -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 af2fc54a7ec4ee..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 @@ -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; @@ -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; @@ -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 { @@ -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..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 @@ -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", @@ -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/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/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 34d79e80f4df80..0744c2442a011b 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; @@ -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; @@ -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 { @@ -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..5d94b32c9dd469 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", @@ -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.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index ce768f1eda4bbe..c76cc902b026b1 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; @@ -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..f6fed920720628 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", @@ -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/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/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 2e7ff08d46cbaa..ea281eb3f1be27 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; @@ -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; @@ -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 { @@ -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..b480ac6c8dc2ca 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", @@ -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/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/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/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/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 f8ffde9dff6c9b..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; @@ -1025,7 +1076,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 +1090,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; @@ -1072,12 +1123,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 { @@ -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 53334068acb830..38e76b10033723 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", @@ -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 f8ffde9dff6c9b..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; @@ -1025,7 +1053,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 +1067,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; @@ -1072,12 +1100,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 { @@ -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 a39673d9ba9459..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, @@ -2495,7 +2695,7 @@ "enabled": 1, "attributes": [ { - "name": "bssid", + "name": "BSSID", "code": 0, "mfgCode": null, "side": "server", @@ -2559,7 +2759,7 @@ "reportableChange": 0 }, { - "name": "Rssi", + "name": "RSSI", "code": 4, "mfgCode": null, "side": "server", @@ -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/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/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/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/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/.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 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/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 15d06410def29c..c27fbb86c90054 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; @@ -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; @@ -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 { @@ -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..40a770305947e1 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", @@ -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 e3c07dd6d3bd8b..ea9fc62b1ab12b 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; @@ -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; @@ -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 { @@ -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..b1f7772d0cc071 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", @@ -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 b073a35a99aea5..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 @@ -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; @@ -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; @@ -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 { @@ -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..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 @@ -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", @@ -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 c29a4d437cd2d4..e163597567a927 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; @@ -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; @@ -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 { @@ -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..8e577510944e12 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", @@ -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/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 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} \ 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/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 { 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/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/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/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_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/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/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/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/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/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 3fc66139e925a4..ee7578e6e297f9 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", @@ -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 8634aaebb488d2..8ef2220096366d 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", @@ -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 f7573977ba4a49..cad9e69558887a 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; } @@ -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; @@ -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; @@ -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 2f2bfda6bfb730..31e84b180cd424 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", @@ -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/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index 80499454d11ed1..ec79f9a7041a34 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; @@ -5590,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) @@ -5732,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/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/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index ff4b34a235d11a..c603c5e3ecfbde 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); } @@ -9069,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(); @@ -9088,7 +9090,7 @@ CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CHIPThreadNetwor } } -CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::~CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback() +CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback::~CHIPThreadNetworkDiagnosticsNeighborTableAttributeCallback() { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); if (env == nullptr) @@ -9099,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) @@ -9111,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; @@ -9258,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(); @@ -9277,7 +9279,7 @@ CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::CHIPThreadNetworkDi } } -CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::~CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback() +CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback::~CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback() { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); if (env == nullptr) @@ -9288,7 +9290,7 @@ CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::~CHIPThreadNetworkD env->DeleteGlobalRef(javaCallbackRef); } -void CHIPThreadNetworkDiagnosticsRouteTableListAttributeCallback::CallbackFn( +void CHIPThreadNetworkDiagnosticsRouteTableAttributeCallback::CallbackFn( void * context, const chip::app::DataModel::DecodableList & list) @@ -9300,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 7101e2a5f43d2a..9d32dfdfc966e3 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( @@ -3776,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); } } @@ -3799,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))); }; @@ -3808,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); } } @@ -3831,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 caf489666d2783..9f3d52253c5244 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); } @@ -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); @@ -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/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 19c2f02ba4c287..b66c3be90ad143 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); } @@ -2781,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); } @@ -2868,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; @@ -2895,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 6dea0ef9539d5d..d593a182e73d6c 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 @@ -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): @@ -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): @@ -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 79510e723f9877..73e5f9c75dd643 100644 --- a/src/darwin/Framework/CHIP/templates/availability.yaml +++ b/src/darwin/Framework/CHIP/templates/availability.yaml @@ -4715,6 +4715,12 @@ - AttributeList - FeatureMap - ClusterRevision + ThreadNetworkDiagnostics: + - NeighborTable + - RouteTable + WiFiNetworkDiagnostics: + - BSSID + - RSSI commands: OTASoftwareUpdateProvider: - QueryImage @@ -4935,6 +4941,10 @@ OnOff: OffWithEffect: - effectIdentifier + DiagnosticLogs: + RetrieveLogsResponse: + - logContent + - utcTimeStamp structs: OTASoftwareUpdateRequestor: - ProviderLocation @@ -4953,6 +4963,8 @@ AccessControl: - AccessControlEntryStruct - AccessControlExtensionStruct + SoftwareDiagnostics: + - ThreadMetricsStruct struct fields: UnitTesting: SimpleStruct: @@ -5030,6 +5042,13 @@ AccessControlExtensionStruct: - data - fabricIndex + SoftwareDiagnostics: + ThreadMetricsStruct: + - id + - name + - stackFreeCurrent + - stackFreeMinimum + - stackSize events: OTASoftwareUpdateRequestor: - StateTransition @@ -5106,6 +5125,8 @@ AccessControl: - AccessControlEntryPrivilegeEnum - AccessControlEntryAuthModeEnum + ThreadNetworkDiagnostics: + - ConnectionStatusEnum enum values: OTASoftwareUpdateProvider: OTAApplyUpdateAction: @@ -5166,6 +5187,18 @@ PowerSource: BatChargeLevel: - OK + ThreadNetworkDiagnostics: + ConnectionStatusEnum: + - Connected + - NotConnected + WiFiNetworkDiagnostics: + WiFiVersionType: + - A + - B + - G + - N + - Ac + - Ax bitmaps: UnitTesting: - Bitmap8MaskMap @@ -5227,6 +5260,12 @@ - PirOccupiedToUnoccupiedDelay - PirUnoccupiedToOccupiedDelay - PirUnoccupiedToOccupiedThreshold + ThreadNetworkDiagnostics: + - NeighborTableList + - RouteTableList + WiFiNetworkDiagnostics: + - Bssid + - Rssi command fields: Groups: AddGroup: @@ -5246,6 +5285,10 @@ OnOff: OffWithEffect: - effectId + DiagnosticLogs: + RetrieveLogsResponse: + - content + - timeStamp structs: Descriptor: - DeviceType @@ -5256,6 +5299,8 @@ - WiredFaultChangeType - BatFaultChangeType - BatChargeFaultChangeType + SoftwareDiagnostics: + - ThreadMetrics struct fields: Descriptor: DeviceTypeStruct: @@ -5268,6 +5313,8 @@ AccessControl: - Privilege - AuthMode + ThreadNetworkDiagnostics: + - ThreadConnectionStatus enum values: GeneralCommissioning: CommissioningError: @@ -5275,6 +5322,14 @@ PowerSource: BatChargeLevel: - Ok + WiFiNetworkDiagnostics: + WiFiVersionType: + - 80211a + - 80211b + - 80211g + - 80211n + - 80211ac + - 80211ax bitmap values: NetworkCommissioning: WiFiSecurity: @@ -5307,6 +5362,12 @@ PIRUnoccupiedToOccupiedThreshold: PirUnoccupiedToOccupiedThreshold OTASoftwareUpdateRequestor: DefaultOTAProviders: DefaultOtaProviders + ThreadNetworkDiagnostics: + NeighborTable: NeighborTableList + RouteTable: RouteTableList + WiFiNetworkDiagnostics: + BSSID: Bssid + RSSI: Rssi commands: OTASoftwareUpdateRequestor: AnnounceOTAProvider: AnnounceOtaProvider @@ -5337,10 +5398,16 @@ OnOff: OffWithEffect: effectIdentifier: effectId + DiagnosticLogs: + RetrieveLogsResponse: + logContent: content + utcTimeStamp: timeStamp structs: AccessControl: AccessControlEntryStruct: AccessControlEntry AccessControlExtensionStruct: ExtensionEntry + SoftwareDiagnostics: + ThreadMetricsStruct: ThreadMetrics struct fields: Descriptor: DeviceTypeStruct: @@ -5353,6 +5420,8 @@ AccessControl: AccessControlEntryPrivilegeEnum: Privilege AccessControlEntryAuthModeEnum: AuthMode + ThreadNetworkDiagnostics: + ConnectionStatusEnum: ThreadConnectionStatus enum values: GeneralCommissioning: CommissioningError: @@ -5360,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/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm index eeaace2ac88f61..56457b9a04d0cd 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() @@ -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..2a795a455f1ada 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 @@ -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 @@ -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, @@ -17674,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) { @@ -24844,7 +24870,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 +24878,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 +24898,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 @@ -26090,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 @@ -26165,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 93619cc8647e50..6b95fba6b82199 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 (^)( @@ -33964,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; @@ -33972,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 { @@ -33982,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 @@ -34138,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; @@ -34146,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 { @@ -34156,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 @@ -34774,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); }]; @@ -34792,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. @@ -34804,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) { @@ -34945,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); }]; @@ -34963,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. @@ -34975,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/MTRCallbackBridge.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h index d4be5addf9050e..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)( @@ -737,19 +737,19 @@ 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)( 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); @@ -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 @@ -5139,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; @@ -14715,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 { @@ -14853,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 a77aee371cc2aa..0b5d84469441f1 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() @@ -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; @@ -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]; @@ -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..986d15366af4a7 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, @@ -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 d2c390fd1d0968..4c9a458da0907d 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)); @@ -1930,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)); @@ -1942,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)); @@ -7332,6 +7328,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) @@ -7352,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 218565e36c7bdc..fa256ffa99ce71 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 @@ -9042,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]; } @@ -9074,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]; } @@ -9219,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/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/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/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/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/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/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/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(); 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/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/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", 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..f7d01747746db2 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), \ @@ -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 154d25138dfe81..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 @@ -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), \ @@ -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/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/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-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h index 353227918e2f72..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 @@ -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) { @@ -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 bb5cf6a6e78b5d..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 @@ -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 { @@ -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/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index 2d1476bdf79ff7..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 @@ -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)); @@ -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 { @@ -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 d9a23bfe1012e6..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 @@ -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); }; @@ -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; } @@ -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/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/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..1ec2bd2a6003f8 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), \ @@ -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 23daa85192a4cc..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 @@ -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), \ @@ -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/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/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 5e4ec741353506..bca49c76875991 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, "{"); { @@ -3891,8 +3892,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; @@ -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); @@ -5732,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; @@ -5764,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; @@ -5785,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; @@ -6084,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; @@ -6104,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/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/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/contact-sensor-app/zap-generated/endpoint_config.h b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h index ca9bcd81f14275..f65581cc45b5fd 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), \ @@ -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/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h index af6596c690186a..d3f4385626f182 100644 --- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h +++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h @@ -208,19 +208,19 @@ 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)( 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..1e576e960e6289 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); }]; @@ -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); }]; @@ -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/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 896ae2a97537f1..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 @@ -62044,7 +62546,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 +62650,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)); @@ -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/dynamic-bridge-app/zap-generated/endpoint_config.h b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h index fd09812c0d6212..1ec2bd2a6003f8 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), \ @@ -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 e5eeeb83a3fe2a..813b729d5c95a5 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), \ @@ -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/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..56967881e74922 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), \ @@ -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 79e3d6509d3956..cf0398be95da64 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), \ @@ -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/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 d56322d5664e35..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 \ { \ \ @@ -277,7 +291,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 +299,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), \ @@ -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 7a04e417d5fea8..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 */ \ @@ -277,7 +304,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 +312,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), \ @@ -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"); } 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/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 310aefd1aa0c9b..1647ce93393cea 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), \ @@ -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 43e87049517ee1..15ad0f8690c0a4 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), \ @@ -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 18555e81e4aee8..bafd2d9c704b1f 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), \ @@ -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 bf6f9654516527..0edabc57e5c5df 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), \ @@ -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), \