From 297237761aada83f9974dd02a451be6da0bbfc0f Mon Sep 17 00:00:00 2001 From: manjunath-grl <102359958+manjunath-grl@users.noreply.github.com> Date: Wed, 9 Aug 2023 06:11:14 +0530 Subject: [PATCH] Modified script Jul 28 (#28361) Co-authored-by: Restyled.io --- .../placeholder/linux/apps/app1/ciTests.json | 32 +- scripts/tests/chiptest/__init__.py | 3 + src/app/tests/suites/certification/PICS.yaml | 328 +- .../suites/certification/Test_TC_ACE_1_6.yaml | 2 +- .../certification/Test_TC_ACFREMON_1_1.yaml | 26 +- .../suites/certification/Test_TC_ACL_2_2.yaml | 4 +- .../Test_TC_ACT_3_1_Simulated.yaml | 562 -- .../certification/Test_TC_BOOL_2_2.yaml | 14 +- .../Test_TC_BOOL_3_1_Simulated.yaml | 356 - .../certification/Test_TC_BRBINFO_1_1.yaml | 25 +- .../certification/Test_TC_CADMIN_1_25.yaml | 2139 +++++ .../certification/Test_TC_CADMIN_1_26.yaml | 2121 +++++ .../suites/certification/Test_TC_CC_1_1.yaml | 24 +- .../Test_TC_CC_2_2_Simulated.yaml | 318 - .../suites/certification/Test_TC_CC_3_1.yaml | 4 +- .../suites/certification/Test_TC_CC_4_3.yaml | 4 +- .../suites/certification/Test_TC_CC_6_1.yaml | 2 +- .../suites/certification/Test_TC_CC_8_1.yaml | 2 +- .../certification/Test_TC_CDOCONC_1_1.yaml | 69 +- .../certification/Test_TC_CMOCONC_1_1.yaml | 61 +- .../certification/Test_TC_CNET_4_17.yaml | 681 -- .../certification/Test_TC_CNET_4_18.yaml | 193 - .../certification/Test_TC_CNET_4_19.yaml | 517 -- .../certification/Test_TC_CNET_4_9.yaml | 4 +- .../suites/certification/Test_TC_DD_1_7.yaml | 6 +- .../certification/Test_TC_DESC_1_1.yaml | 14 +- .../certification/Test_TC_DESC_2_1.yaml | 11 +- .../Test_TC_DESC_2_2_Simulated.yaml | 61 - .../Test_TC_DGETH_3_1_Simulated.yaml | 73 - .../certification/Test_TC_DGGEN_3_1.yaml | 864 -- .../Test_TC_DGSW_3_1_Simulated.yaml | 48 - .../Test_TC_DGTHREAD_3_1_Simulated.yaml | 174 - .../Test_TC_DGTHREAD_3_2_Simulated.yaml | 113 - .../Test_TC_DGTHREAD_3_3_Simulated.yaml | 113 - .../Test_TC_DGWIFI_3_1_Simulated.yaml | 94 - .../certification/Test_TC_DISHM_1_1.yaml | 93 +- .../certification/Test_TC_DISHM_1_2.yaml | 115 +- .../certification/Test_TC_DISHM_2_1.yaml | 219 +- .../certification/Test_TC_DISHM_3_1.yaml | 154 +- .../certification/Test_TC_DISHM_3_2.yaml | 230 +- .../certification/Test_TC_DISHM_3_3.yaml | 288 +- .../certification/Test_TC_DRLK_2_1.yaml | 2 +- .../certification/Test_TC_DRLK_2_2.yaml | 2 +- .../certification/Test_TC_DRLK_2_9.yaml | 148 +- .../Test_TC_DRLK_3_1_Simulated.yaml | 212 - .../certification/Test_TC_DRLK_3_3.yaml | 995 --- .../suites/certification/Test_TC_FAN_3_2.yaml | 8 +- .../suites/certification/Test_TC_FAN_3_3.yaml | 175 - .../suites/certification/Test_TC_FAN_3_5.yaml | 592 -- .../Test_TC_FLABEL_3_1_Simulated.yaml | 33 - .../certification/Test_TC_FLDCONC_1_1.yaml | 61 +- .../Test_TC_FLW_3_1_Simulated.yaml | 415 - .../certification/Test_TC_GRPKEY_1_1.yaml | 232 + .../suites/certification/Test_TC_G_2_4.yaml | 435 + .../Test_TC_G_3_1_Simulated.yaml | 33 - .../certification/Test_TC_HEPAFREMON_1_1.yaml | 30 +- .../certification/Test_TC_IDM_10_1.yaml | 290 + .../certification/Test_TC_IDM_11_1.yaml | 81 + .../suites/certification/Test_TC_IDM_1_2.yaml | 39 +- .../suites/certification/Test_TC_IDM_4_1.yaml | 63 +- .../suites/certification/Test_TC_IDM_4_2.yaml | 754 +- .../suites/certification/Test_TC_IDM_4_3.yaml | 91 +- .../Test_TC_ILL_3_1_Simulated.yaml | 240 - .../Test_TC_I_3_1_Simulated.yaml | 527 -- .../Test_TC_LCFG_3_1_Simulated.yaml | 40 - .../Test_TC_LTIME_1_1_Simulated.yaml | 59 - .../certification/Test_TC_LTIME_2_1.yaml | 938 --- .../Test_TC_LUNIT_1_1_Simulated.yaml | 54 - .../Test_TC_LUNIT_2_1_Simulated.yaml | 48 - .../suites/certification/Test_TC_LVL_8_1.yaml | 314 - .../suites/certification/Test_TC_LWM_1_1.yaml | 88 +- .../suites/certification/Test_TC_LWM_1_2.yaml | 94 +- .../suites/certification/Test_TC_LWM_2_1.yaml | 170 +- .../suites/certification/Test_TC_LWM_3_1.yaml | 132 +- .../suites/certification/Test_TC_LWM_3_2.yaml | 194 +- .../certification/Test_TC_NDOCONC_1_1.yaml | 61 +- .../Test_TC_OCC_2_2_Simulated.yaml | 108 - .../Test_TC_OCC_2_4_Simulated.yaml | 2 +- .../Test_TC_OO_3_1_Simulated.yaml | 374 - .../certification/Test_TC_OPSTATE_2_1.yaml | 5 + .../certification/Test_TC_OPSTATE_2_2.yaml | 5 + .../certification/Test_TC_OPSTATE_2_3.yaml | 5 + .../certification/Test_TC_OPSTATE_2_4.yaml | 17 +- .../certification/Test_TC_OZCONC_1_1.yaml | 61 +- .../Test_TC_PCC_3_1_Simulated.yaml | 494 -- .../certification/Test_TC_PMHCONC_1_1.yaml | 61 +- .../certification/Test_TC_PMICONC_1_1.yaml | 60 +- .../certification/Test_TC_PMKCONC_1_1.yaml | 61 +- .../Test_TC_PRS_3_1_Simulated.yaml | 264 - .../suites/certification/Test_TC_PS_3_1.yaml | 710 +- .../Test_TC_RH_3_1_Simulated.yaml | 399 - .../certification/Test_TC_RNCONC_1_1.yaml | 61 +- .../certification/Test_TC_RVCCLEANM_1_2.yaml | 108 +- .../certification/Test_TC_RVCCLEANM_2_1.yaml | 217 +- .../certification/Test_TC_RVCCLEANM_3_1.yaml | 119 +- .../certification/Test_TC_RVCCLEANM_3_2.yaml | 196 +- .../certification/Test_TC_RVCCLEANM_3_3.yaml | 261 +- .../certification/Test_TC_RVCOPSTATE_1_1.yaml | 36 +- .../certification/Test_TC_RVCRUNM_1_2.yaml | 103 +- .../certification/Test_TC_RVCRUNM_2_1.yaml | 199 +- .../certification/Test_TC_RVCRUNM_3_1.yaml | 131 +- .../certification/Test_TC_RVCRUNM_3_2.yaml | 209 +- .../certification/Test_TC_RVCRUNM_3_3.yaml | 276 +- .../suites/certification/Test_TC_SC_5_3.yaml | 229 +- .../Test_TC_SWTCH_3_1_Simulated.yaml | 369 - .../suites/certification/Test_TC_S_2_1.yaml | 8 +- .../suites/certification/Test_TC_S_2_2.yaml | 257 +- .../suites/certification/Test_TC_S_2_3.yaml | 47 +- .../suites/certification/Test_TC_S_2_4.yaml | 62 +- .../suites/certification/Test_TC_S_3_1.yaml | 608 -- .../certification/Test_TC_TCCM_1_1.yaml | 88 +- .../certification/Test_TC_TCCM_1_2.yaml | 77 +- .../certification/Test_TC_TCCM_2_1.yaml | 152 +- .../certification/Test_TC_TCCM_3_1.yaml | 115 +- .../certification/Test_TC_TCCM_3_2.yaml | 165 +- .../certification/Test_TC_TCCM_3_3.yaml | 194 +- .../certification/Test_TC_TCTL_2_1.yaml | 11 + .../certification/Test_TC_TCTL_2_2.yaml | 25 + .../certification/Test_TC_TIMESYNC_2_15.yaml | 163 - .../Test_TC_TMP_3_1_Simulated.yaml | 659 -- .../certification/Test_TC_TSTAT_1_1.yaml | 356 +- .../certification/Test_TC_TSTAT_3_1.yaml | 979 --- .../Test_TC_TSUIC_3_1_Simulated.yaml | 635 -- .../certification/Test_TC_TVOCCONC_1_1.yaml | 61 +- .../Test_TC_ULABEL_3_1_Simulated.yaml | 40 - .../tests/suites/certification/ci-pics-values | 99 +- src/app/tests/suites/ciTests.json | 4 + src/app/tests/suites/manualTests.json | 36 +- .../chip-tool/zap-generated/test/Commands.h | 7048 +++++++---------- .../zap-generated/test/Commands.h | 5734 ++++++++++---- .../app1/zap-generated/test/Commands.h | 5480 ++----------- .../app2/zap-generated/test/Commands.h | 5480 ++----------- 132 files changed, 18680 insertions(+), 32854 deletions(-) delete mode 100644 src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_CADMIN_1_25.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_CADMIN_1_26.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DESC_2_2_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGETH_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGSW_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DGWIFI_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_FAN_3_3.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_FAN_3_5.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_FLABEL_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_GRPKEY_1_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_G_2_4.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_G_3_1_Simulated.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_IDM_10_1.yaml create mode 100644 src/app/tests/suites/certification/Test_TC_IDM_11_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_ILL_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LCFG_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LTIME_1_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LUNIT_1_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_OCC_2_2_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_OO_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_PCC_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_RH_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_S_3_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_TIMESYNC_2_15.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_TMP_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_TSUIC_3_1_Simulated.yaml delete mode 100644 src/app/tests/suites/certification/Test_TC_ULABEL_3_1_Simulated.yaml diff --git a/examples/placeholder/linux/apps/app1/ciTests.json b/examples/placeholder/linux/apps/app1/ciTests.json index 6313a9621b7290..66abad400a442f 100644 --- a/examples/placeholder/linux/apps/app1/ciTests.json +++ b/examples/placeholder/linux/apps/app1/ciTests.json @@ -1,28 +1,7 @@ { "Test": [ - "Test_TC_ACT_3_1_Simulated", - "Test_TC_BOOL_3_1_Simulated", - "Test_TC_DESC_2_2_Simulated", - "Test_TC_DGETH_3_1_Simulated", - "Test_TC_DGSW_3_1_Simulated", - "Test_TC_DGWIFI_3_1_Simulated", - "Test_TC_FLW_3_1_Simulated", - "Test_TC_G_3_1_Simulated", - "Test_TC_I_3_1_Simulated", - "Test_TC_PRS_3_1_Simulated", - "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_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", - "Test_TC_FLABEL_3_1_Simulated", - "Test_TC_LTIME_1_1_Simulated", - "Test_TC_ILL_3_1_Simulated", "Test_TC_DGSW_3_2_Simulated", "Test_TC_DGETH_3_2_Simulated", "Test_TC_DGWIFI_3_2_Simulated", @@ -34,18 +13,9 @@ "Test_TC_CC_6_4_Simulated", "Test_TC_CC_7_5_Simulated", "Test_TC_CC_9_4_Simulated", - "Test_TC_DGTHREAD_3_2_Simulated", - "Test_TC_DGTHREAD_3_3_Simulated", "Test_TC_DGTHREAD_3_4_Simulated", "Test_TC_LVL_2_3_Simulated", - "Test_TC_OO_3_1_Simulated", - "Test_TC_OO_3_2_Simulated", - "Test_TC_TSUIC_3_1_Simulated", - "Test_TC_PCC_3_1_Simulated", - "Test_TC_TMP_3_1_Simulated", - "Test_TC_CC_2_2_Simulated", - "Test_TC_DGTHREAD_3_1_Simulated", - "Test_TC_DRLK_3_1_Simulated" + "Test_TC_OO_3_2_Simulated" ], "collection": ["Test"] } diff --git a/scripts/tests/chiptest/__init__.py b/scripts/tests/chiptest/__init__.py index c00d1ce6735d91..e3d2f25d2db368 100644 --- a/scripts/tests/chiptest/__init__.py +++ b/scripts/tests/chiptest/__init__.py @@ -171,6 +171,9 @@ def _GetChipReplUnsupportedTests() -> Set[str]: "Test_TC_ACE_1_6.yaml", # Test fails only in chip-repl: Refer--> https://github.com/project-chip/connectedhomeip/pull/27910#issuecomment-1632485584 "Test_TC_IDM_1_2.yaml", # chip-repl does not support AnyCommands (19/07/2023) "TestGroupKeyManagementCluster.yaml", # chip-repl does not support EqualityCommands (2023-08-04) + "Test_TC_S_2_2.yaml", # chip-repl does not support scenes cluster commands + "Test_TC_S_2_3.yaml", # chip-repl does not support scenes cluster commands + "Test_TC_S_2_4.yaml", # chip-repl does not support scenes cluster commands } diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index dce34aca81dbcd..6afdb3f929d185 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -336,6 +336,11 @@ PICS: "Does commissionee provide a Firmware Information field in the AttestationResponse?" id: MCORE.DA.ATTESTELEMENT_FW_INFO + # + #IDM + # + - label: "Does the device implement the ICD Management cluster as a server?" + id: ICDM.S - label: "Is the device a Server" id: MCORE.IDM.S @@ -1847,6 +1852,11 @@ PICS: - label: "Does the device implement the DISHM cluster as a server?" id: DISHM.S + - label: + "Id of mode the device will fail to transition to, given its current + state" + id: PIXIT.DISHM.CAN_TEST_MODE_FAILURE + # # server / features # @@ -1890,27 +1900,6 @@ PICS: - label: "Does the device implement the Descriptor cluster as a client?" id: DESC.C - #DESC -- Global Attributes - - label: "Does the device implement the ClusterRevision(DESC) attribute?" - id: DESC.S.Afffd - - - label: "Does the device implement the FeatureMap(DESC) attribute?" - id: DESC.S.Afffc - - - label: "Does the device implement the AttributeList(DESC) attribute?" - id: DESC.S.Afffb - - - label: "Does the device implement the EventList(DESC) attribute?" - id: DESC.S.Afffa - - - label: - "Does the device implement the AcceptedCommandList(DESC) attribute?" - id: DESC.S.Afff9 - - - label: - "Does the device implement the GeneratedCommandList(DESC) attribute?" - id: DESC.S.Afff8 - # # server / attributes # @@ -1926,6 +1915,9 @@ PICS: - label: "Does the DUT(server) support the PARTSLIST attribute?" id: DESC.S.A0003 + - label: "Does the DUT(server) support the TAGLIST attribute?" + id: DESC.S.A0004 + # # client / attributes # @@ -5946,6 +5938,15 @@ PICS: - label: "Does the device implement the Scene Names feature?" id: S.S.F00 + - label: "Does the device implement the Scene Explicit feature?" + id: S.S.F01 + + - label: "Does the device implement the Scene TableSize feature?" + id: S.S.F02 + + - label: "Does the device implement the Scene FabricScenes feature?" + id: S.S.F03 + # # server / manually # @@ -5988,6 +5989,11 @@ PICS: - label: "Does the device implement sending the CopyScene command?" id: S.C.C42.Tx + - label: + "Does the device process the TransitionTime parameter of the + RecallScene command?" + id: PICS_SC_RECALL_SCENE_TRANSITION_TIME + # # client / manually # @@ -6563,6 +6569,9 @@ PICS: - label: "Supports a System Mode of Auto" id: TSTAT.S.F05 + - label: "Supports a local temperature not exposed" + id: TSTAT.S.F06 + # # server / manually # @@ -8243,28 +8252,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: CDOCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: CDOCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: CDOCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: CDOCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: CDOCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: CDOCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: CDOCONC.S.Afffd - # Carbon Monoxide Concentration Measurement Cluster Test Plan - label: "Does the device implement the Carbon Monoxide Concentration @@ -8339,28 +8326,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: CMOCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: CMOCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: CMOCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: CMOCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: CMOCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: CMOCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: CMOCONC.S.Afffd - # Nitrogen Dioxide Concentration Measurement Cluster Test Plan - label: "Does the device implement the Nitrogen Dioxide Concentration @@ -8435,28 +8400,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: NDOCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: NDOCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: NDOCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: NDOCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: NDOCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: NDOCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: NDOCONC.S.Afffd - # Ozone Concentration Measurement Cluster Test Plan - label: "Does the device implement the Ozone Concentration Measurement Cluster @@ -8531,28 +8474,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: OZCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: OZCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: OZCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: OZCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: OZCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: OZCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: OZCONC.S.Afffd - # PM2.5 Concentration Measurement Cluster Test Plan - label: "Does the device implement the PM2.5 Concentration Measurement Cluster @@ -8627,28 +8548,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: PMICONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: PMICONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: PMICONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: PMICONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: PMICONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: PMICONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: PMICONC.S.Afffd - # Formaldehyde Concentration Measurement Cluster Test Plan - label: "Does the device implement the Formaldehyde Concentration Measurement @@ -8723,28 +8622,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: FLDCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: FLDCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: FLDCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: FLDCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: FLDCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: FLDCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: FLDCONC.S.Afffd - # PM1 Concentration Measurement Cluster Test Plan - label: "Does the device implement the PM1 Concentration Measurement Cluster @@ -8819,28 +8696,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: PMHCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: PMHCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: PMHCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: PMHCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: PMHCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: PMHCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: PMHCONC.S.Afffd - # PM10 Concentration Measurement Cluster Test Plan - label: "Does the device implement the PM10 Concentration Measurement Cluster @@ -8915,28 +8770,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: PMKCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: PMKCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: PMKCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: PMKCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: PMKCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: PMKCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: PMKCONC.S.Afffd - # Total Volatile Organic Compounds Concentration Measurement Cluster Test Plan - label: "Does the device implement the Total Volatile Organic Compounds @@ -9011,28 +8844,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: TVOCCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: TVOCCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: TVOCCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: TVOCCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: TVOCCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: TVOCCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: TVOCCONC.S.Afffd - # Radon Concentration Measurement Cluster Test Plan - label: "Does the device implement the Radon Concentration Measurement Cluster @@ -9107,28 +8918,6 @@ PICS: - label: "Does the DUT(server) implement the LevelValue attribute?" id: RNCONC.S.A000a - - label: - "Does the device implement the (0xFFF8) GeneratedCommandList - attribute?" - id: RNCONC.S.Afff8 - - - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute?" - id: RNCONC.S.Afff9 - - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: RNCONC.S.Afffa - - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: RNCONC.S.Afffb - - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: RNCONC.S.Afffc - - - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: RNCONC.S.Afffd - ## Fan control # Features @@ -9273,43 +9062,6 @@ PICS: command?" id: ICDM.C.C00.Rsp - # - #RVC Clean Mode Select - # - #Feature - - label: - "Does the device support depending on an On/Off cluster implemented on - the same DUT?" - id: RVCCLEANMS.S.F00 - - - label: "Does the device support the extended status feature?" - id: RVCCLEANMS.S.F01 - - - label: - "Does the device implementation deprecate the ChangeToMode command?" - id: RVCCLEANMS.S.F02 - - #Server Attributes - - label: "Does the device implement the StartUpMode attribute?" - id: RVCCLEANMS.S.A0004 - - - label: "Does the device implement the OnMode attribute?" - id: RVCCLEANMS.S.A0005 - - #Server Commands recived - - label: "Does the device implement receiving the ChangeToMode command?" - id: RVCCLEANMS.S.C00.Rsp - - - label: - "Does the device implement receiving the ChangeToModeWithStatus - command?" - id: RVCCLEANMS.S.C01.Rsp - - #server commands generated - - label: - "Does the device implement sending the ChangeToModeResponse command?" - id: RVCCLEANMS.S.C03.Tx - # #Operational State # @@ -9506,6 +9258,11 @@ PICS: - label: "Does the device implement the LWM cluster as a server?" id: LWM.S + - label: + "Id of mode the device will fail to transition to, given its current + state" + id: PIXIT.LWM.CAN_TEST_MODE_FAILURE + # # server / features # @@ -9586,12 +9343,22 @@ PICS: "Does the device implement sending the ChangeToModeResponse command?" id: RVCCLEANM.S.C01.Tx + - label: + "Id of mode the device will fail to transition to, given its current + state" + id: PIXIT.RVCCLEANM.CAN_TEST_MODE_FAILURE + # #Temperature Controlled Cabinet Mode Cluster # - label: "Does the device implement the TCCM cluster as a server?" id: TCCM.S + - label: + "Id of mode the device will fail to transition to, given its current + state" + id: PIXIT.TCCM.CAN_TEST_MODE_FAILURE + #Features - label: "Does the device support depending on an On/Off cluster implemented on @@ -9725,6 +9492,11 @@ PICS: - label: "Does the device implement the RVCRUNM cluster as a server?" id: RVCRUNM.S + - label: + "Id of mode the device will fail to transition to, given its current + state" + id: PIXIT.RVCRUNM.CAN_TEST_MODE_FAILURE + #Features - label: "Does the device support depending on an On/Off cluster implemented on diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml index e4038e0a627e28..877d116305da25 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_6.yaml @@ -188,7 +188,7 @@ tests: - name: "ms" value: 1000 - #Issue : https://github.com/project-chip/connectedhomeip/issues/27967 + #Issue : https://github.com/project-chip/connectedhomeip/issues/27982 - label: "Step 7: TH sends a AddGroup Command to the Groups cluster with the GroupID field set to 0x0105 and the GroupName set to an empty string. diff --git a/src/app/tests/suites/certification/Test_TC_ACFREMON_1_1.yaml b/src/app/tests/suites/certification/Test_TC_ACFREMON_1_1.yaml index 6fc09312d09a22..59284c86d30d55 100644 --- a/src/app/tests/suites/certification/Test_TC_ACFREMON_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACFREMON_1_1.yaml @@ -112,8 +112,8 @@ tests: - label: "Step 4c: Read the optional attribute InPlaceIndicator - (ACFREMON.S.A0002) in AttributeList" - PICS: ACFREMON.S.A0002 + (ACFREMON.S.A0003) in AttributeList" + PICS: ACFREMON.S.A0003 command: "readAttribute" attribute: "AttributeList" response: @@ -121,6 +121,28 @@ tests: type: list contains: [3] + - label: + "Step 4d: Read the optional attribute LastChangedTime + (ACFREMON.S.A0004) in AttributeList" + PICS: ACFREMON.S.A0004 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [4] + + - label: + "Step 4e: Read the optional attribute ReplacementProductList + (ACFREMON.S.F02) in AttributeList" + PICS: ACFREMON.S.F02 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [5] + - label: "Step 5: TH reads EventList attribute from DUT" PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml index 24e18d9207082c..a5aa622fe7aa3b 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_2.yaml @@ -35,7 +35,7 @@ tests: value: nodeId - label: - "Step 2: TH reads DUT Descriptor cluster ServerList attribute from + "Step 2: TH1 reads DUT Descriptor cluster ServerList attribute from Endpoint 0" cluster: "Descriptor" command: "readAttribute" @@ -46,7 +46,7 @@ tests: contains: [31] - label: - "Step 3: TH reads DUT Descriptor cluster ServerList attribute from + "Step 3: TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0" endpoint: Endpoint_Except_Zero cluster: "Descriptor" diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml deleted file mode 100644 index ba30cad1ed39ac..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml +++ /dev/null @@ -1,562 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 77.2.3. [TC-ACT-3.1] GLobal attributes with client as DUT - -PICS: - - ACT.C - - ACT.C.AM-READ - - ACT.C.AO-READ - - ACT.C.AM-WRITE - - ACT.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Actions" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: ActionList" - PICS: ACT.C.AM-READ - wait: "readAttribute" - attribute: "ActionList" - - - label: "Read attribute: EndpointLists" - PICS: ACT.C.AM-READ - wait: "readAttribute" - attribute: "EndpointLists" - - - label: "Read attribute: SetupURL" - PICS: ACT.C.AO-READ - wait: "readAttribute" - attribute: "SetupURL" - - - 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 actions read feature-map 1 1 - - Verify none of the optional feature of the server-side of the cluster is listed on TH(all-clusters-minnimal-app) Log - - [1666952667.233980][217377:217377] CHIP:IM: Received Read request - [1666952667.234042][217377:217377] CHIP:DMG: ReadRequestMessage = - [1666952667.234055][217377:217377] CHIP:DMG: { - [1666952667.234066][217377:217377] CHIP:DMG: AttributePathIBs = - [1666952667.234080][217377:217377] CHIP:DMG: [ - [1666952667.234092][217377:217377] CHIP:DMG: AttributePathIB = - [1666952667.234106][217377:217377] CHIP:DMG: { - [1666952667.234121][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952667.234135][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952667.234150][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666952667.234162][217377:217377] CHIP:DMG: } - [1666952667.234177][217377:217377] CHIP:DMG: - [1666952667.234189][217377:217377] CHIP:DMG: ], - [1666952667.234205][217377:217377] CHIP:DMG: - [1666952667.234218][217377:217377] CHIP:DMG: isFabricFiltered = true, - [1666952667.234230][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952667.234242][217377:217377] CHIP:DMG: }, - [1666952667.234299][217377:217377] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952667.234351][217377:217377] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952667.234366][217377:217377] CHIP:DMG: Cluster 25, Attribute fffc is dirty - [1666952667.234378][217377:217377] CHIP:DMG: Reading attribute: Cluster=0x0000_0025 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1666952667.234396][217377:217377] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0025 e=1 p=v - [1666952667.234416][217377:217377] CHIP:DMG: AccessControl: allowed - [1666952667.234450][217377:217377] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666952667.234672][217377:217377] CHIP:EM: <<< [E:30993r M:147872011 (Ack:47982410)] (S) Msg TX to 1:000000000001B669 [AE59] --- Type 0001:05 (IM:ReportData) - [1666952667.234702][217377:217377] CHIP:IN: (S) Sending msg 147872011 on secure session with LSID: 63117 - [1666952667.234980][217377:217377] CHIP:DMG: >> to UDP:[fe80::485c:bace:6107:3682%wlp3s0]:60986 | 147872011 | [Interaction Model (1) / Report Data (0x05) / Session = 46893 / Exchange = 30993] - [1666952667.235009][217377:217377] CHIP:DMG: Header Flags = - [1666952667.235021][217377:217377] CHIP:DMG: { - [1666952667.235046][217377:217377] CHIP:DMG: Exchange (0x06) = - [1666952667.235058][217377:217377] CHIP:DMG: { - [1666952667.235072][217377:217377] CHIP:DMG: AckMsg = 47982410 - [1666952667.235084][217377:217377] CHIP:DMG: NeedsAck = true - [1666952667.235127][217377:217377] CHIP:DMG: } - [1666952667.235147][217377:217377] CHIP:DMG: } - [1666952667.235158][217377:217377] CHIP:DMG: - [1666952667.235175][217377:217377] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666952667.235186][217377:217377] CHIP:DMG: { - [1666952667.235197][217377:217377] CHIP:DMG: data = 002db7000b59d0088ab820a8595145a1757b47b8f77026a7a93316c7d5ad7381b9aa5cc8f40b5855924b4832512700a6d52a6435b0ba5340e5cb92b95b512bfae5b4d6393b0a9f - [1666952667.235211][217377:217377] CHIP:DMG: buffer_ptr = 94384713812592 - [1666952667.235222][217377:217377] CHIP:DMG: } - [1666952667.235233][217377:217377] CHIP:DMG: - [1666952667.235262][217377:217377] CHIP:DMG: Decrypted Payload (37 bytes) = - [1666952667.235274][217377:217377] CHIP:DMG: { - [1666952667.235285][217377:217377] CHIP:DMG: data = 1536011535012600e0b2edc537012402012403252504fcff18240200181818290424ff0118 - [1666952667.235297][217377:217377] CHIP:DMG: } - [1666952667.235308][217377:217377] CHIP:DMG: - [1666952667.235365][217377:217377] CHIP:DMG: ReportDataMessage = - [1666952667.235379][217377:217377] CHIP:DMG: { - [1666952667.235391][217377:217377] CHIP:DMG: AttributeReportIBs = - [1666952667.235411][217377:217377] CHIP:DMG: [ - [1666952667.235423][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952667.235442][217377:217377] CHIP:DMG: { - [1666952667.235455][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952667.235471][217377:217377] CHIP:DMG: { - [1666952667.235486][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952667.235499][217377:217377] CHIP:DMG: AttributePathIB = - [1666952667.235514][217377:217377] CHIP:DMG: { - [1666952667.235529][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952667.235545][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952667.235564][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666952667.235580][217377:217377] CHIP:DMG: } - [1666952667.235598][217377:217377] CHIP:DMG: - [1666952667.235614][217377:217377] CHIP:DMG: Data = 0, - [1666952667.235630][217377:217377] CHIP:DMG: }, - [1666952667.235647][217377:217377] CHIP:DMG: - [1666952667.235659][217377:217377] CHIP:DMG: }, - [1666952667.235675][217377:217377] CHIP:DMG: - [1666952667.235687][217377:217377] CHIP:DMG: ], - [1666952667.235706][217377:217377] CHIP:DMG: - [1666952667.235719][217377:217377] CHIP:DMG: SuppressResponse = true, - [1666952667.235732][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952667.235744][217377:217377] CHIP:DMG: } - - - - ./chip-tool actions read attribute-list 1 1 - - Verify attribute-list attribute contains 7 entries on TH(all-clusters-minimal-app) - - [1666952338.541227][217377:217377] CHIP:DMG: ReportDataMessage = - [1666952338.541262][217377:217377] CHIP:DMG: { - [1666952338.541289][217377:217377] CHIP:DMG: AttributeReportIBs = - [1666952338.541330][217377:217377] CHIP:DMG: [ - [1666952338.541352][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.541390][217377:217377] CHIP:DMG: { - [1666952338.541412][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.541442][217377:217377] CHIP:DMG: { - [1666952338.541470][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.541502][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.541532][217377:217377] CHIP:DMG: { - [1666952338.541563][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.541595][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.541629][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.541659][217377:217377] CHIP:DMG: } - [1666952338.541693][217377:217377] CHIP:DMG: - [1666952338.541720][217377:217377] CHIP:DMG: Data = [ - [1666952338.541748][217377:217377] CHIP:DMG: - [1666952338.541784][217377:217377] CHIP:DMG: ], - [1666952338.541812][217377:217377] CHIP:DMG: }, - [1666952338.541847][217377:217377] CHIP:DMG: - [1666952338.541871][217377:217377] CHIP:DMG: }, - [1666952338.541916][217377:217377] CHIP:DMG: - [1666952338.541948][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.541990][217377:217377] CHIP:DMG: { - [1666952338.542013][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.542043][217377:217377] CHIP:DMG: { - [1666952338.542068][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.542096][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.542125][217377:217377] CHIP:DMG: { - [1666952338.542153][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.542186][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.542225][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.542256][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.542286][217377:217377] CHIP:DMG: } - [1666952338.542321][217377:217377] CHIP:DMG: - [1666952338.542353][217377:217377] CHIP:DMG: Data = 0, - [1666952338.542376][217377:217377] CHIP:DMG: }, - [1666952338.542413][217377:217377] CHIP:DMG: - [1666952338.542435][217377:217377] CHIP:DMG: }, - [1666952338.542482][217377:217377] CHIP:DMG: - [1666952338.542503][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.542540][217377:217377] CHIP:DMG: { - [1666952338.542562][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.542590][217377:217377] CHIP:DMG: { - [1666952338.542617][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.542641][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.542673][217377:217377] CHIP:DMG: { - [1666952338.542700][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.542733][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.542763][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.542793][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.542826][217377:217377] CHIP:DMG: } - [1666952338.542862][217377:217377] CHIP:DMG: - [1666952338.542890][217377:217377] CHIP:DMG: Data = 1, - [1666952338.542912][217377:217377] CHIP:DMG: }, - [1666952338.542950][217377:217377] CHIP:DMG: - [1666952338.542971][217377:217377] CHIP:DMG: }, - [1666952338.543018][217377:217377] CHIP:DMG: - [1666952338.543039][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.543076][217377:217377] CHIP:DMG: { - [1666952338.543128][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.543161][217377:217377] CHIP:DMG: { - [1666952338.543187][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.543218][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.543250][217377:217377] CHIP:DMG: { - [1666952338.543277][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.543311][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.543346][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.543381][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.543410][217377:217377] CHIP:DMG: } - [1666952338.543444][217377:217377] CHIP:DMG: - [1666952338.543473][217377:217377] CHIP:DMG: Data = 65528, - [1666952338.543499][217377:217377] CHIP:DMG: }, - [1666952338.543534][217377:217377] CHIP:DMG: - [1666952338.543556][217377:217377] CHIP:DMG: }, - [1666952338.543603][217377:217377] CHIP:DMG: - [1666952338.543624][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.543666][217377:217377] CHIP:DMG: { - [1666952338.543688][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.543716][217377:217377] CHIP:DMG: { - [1666952338.543743][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.543767][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.543797][217377:217377] CHIP:DMG: { - [1666952338.543826][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.543859][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.543893][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.543929][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.543955][217377:217377] CHIP:DMG: } - [1666952338.543990][217377:217377] CHIP:DMG: - [1666952338.544019][217377:217377] CHIP:DMG: Data = 65529, - [1666952338.544042][217377:217377] CHIP:DMG: }, - [1666952338.544077][217377:217377] CHIP:DMG: - [1666952338.544098][217377:217377] CHIP:DMG: }, - [1666952338.544145][217377:217377] CHIP:DMG: - [1666952338.544166][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.544204][217377:217377] CHIP:DMG: { - [1666952338.544225][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.544255][217377:217377] CHIP:DMG: { - [1666952338.544283][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.544311][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.544339][217377:217377] CHIP:DMG: { - [1666952338.544376][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.544405][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.544439][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.544474][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.544498][217377:217377] CHIP:DMG: } - [1666952338.544532][217377:217377] CHIP:DMG: - [1666952338.544566][217377:217377] CHIP:DMG: Data = 65531, - [1666952338.544592][217377:217377] CHIP:DMG: }, - [1666952338.544629][217377:217377] CHIP:DMG: - [1666952338.544651][217377:217377] CHIP:DMG: }, - [1666952338.544702][217377:217377] CHIP:DMG: - [1666952338.544717][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.544743][217377:217377] CHIP:DMG: { - [1666952338.544758][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.544777][217377:217377] CHIP:DMG: { - [1666952338.544796][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.544814][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.544834][217377:217377] CHIP:DMG: { - [1666952338.544856][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.544878][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.544901][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.544922][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.544945][217377:217377] CHIP:DMG: } - [1666952338.544971][217377:217377] CHIP:DMG: - [1666952338.544991][217377:217377] CHIP:DMG: Data = 65532, - [1666952338.545007][217377:217377] CHIP:DMG: }, - [1666952338.545032][217377:217377] CHIP:DMG: - [1666952338.545047][217377:217377] CHIP:DMG: }, - [1666952338.545081][217377:217377] CHIP:DMG: - [1666952338.545095][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952338.545122][217377:217377] CHIP:DMG: { - [1666952338.545136][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952338.545158][217377:217377] CHIP:DMG: { - [1666952338.545176][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952338.545193][217377:217377] CHIP:DMG: AttributePathIB = - [1666952338.545212][217377:217377] CHIP:DMG: { - [1666952338.545233][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952338.545254][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952338.545278][217377:217377] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666952338.545306][217377:217377] CHIP:DMG: ListIndex = Null, - [1666952338.545328][217377:217377] CHIP:DMG: } - [1666952338.545351][217377:217377] CHIP:DMG: - [1666952338.545374][217377:217377] CHIP:DMG: Data = 65533, - [1666952338.545391][217377:217377] CHIP:DMG: }, - [1666952338.545415][217377:217377] CHIP:DMG: - [1666952338.545429][217377:217377] CHIP:DMG: }, - [1666952338.545454][217377:217377] CHIP:DMG: - [1666952338.545468][217377:217377] CHIP:DMG: ], - [1666952338.545537][217377:217377] CHIP:DMG: - [1666952338.545557][217377:217377] CHIP:DMG: SuppressResponse = true, - [1666952338.545576][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952338.545592][217377:217377] CHIP:DMG: } - - - ./chip-tool actions read action-list 1 1 - - Verify read command is received on TH(all-clusters-minimal-app) Log - - [1666937311.802976][2651:2651] CHIP:EM: Handling via exchange: 38920r, Delegate: 0xaaaacd7f80e0 - [1666937311.803077][2651:2651] CHIP:IM: Received Read request - [1666937311.803295][2651:2651] CHIP:DMG: ReadRequestMessage = - [1666937311.803549][2651:2651] CHIP:DMG: { - [1666937311.803611][2651:2651] CHIP:DMG: AttributePathIBs = - [1666937311.803678][2651:2651] CHIP:DMG: [ - [1666937311.803739][2651:2651] CHIP:DMG: AttributePathIB = - [1666937311.803841][2651:2651] CHIP:DMG: { - [1666937311.803920][2651:2651] CHIP:DMG: Endpoint = 0x1, - [1666937311.804008][2651:2651] CHIP:DMG: Cluster = 0x25, - [1666937311.804120][2651:2651] CHIP:DMG: Attribute = 0x0000_0000, - [1666937311.804204][2651:2651] CHIP:DMG: } - [1666937311.804282][2651:2651] CHIP:DMG: - [1666937311.804374][2651:2651] CHIP:DMG: ], - [1666937311.804446][2651:2651] CHIP:DMG: - [1666937311.804539][2651:2651] CHIP:DMG: isFabricFiltered = true, - [1666937311.804603][2651:2651] CHIP:DMG: InteractionModelRevision = 1 - [1666937311.804663][2651:2651] CHIP:DMG: }, - [1666937311.804852][2651:2651] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666937311.805117][2651:2651] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666937311.805190][2651:2651] CHIP:DMG: Cluster 25, Attribute 0 is dirty - [1666937311.805274][2651:2651] CHIP:DMG: Reading attribute: Cluster=0x0000_0025 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1666937311.805343][2651:2651] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0025 e=1 p=v - [1666937311.805419][2651:2651] CHIP:DMG: AccessControl: allowed - [1666937311.805533][2651:2651] CHIP:DMG: Sending report (payload has 36 bytes)... - [1666937311.806139][2651:2651] CHIP:EM: <<< [E:38920r M:78085855 (Ack:55508733)] (S) Msg TX to 1:000000000001B669 [A6ED] --- Type 0001:05 (IM:ReportData) - [1666937311.806241][2651:2651] CHIP:IN: (S) Sending msg 78085855 on secure session with LSID: 49558 - [1666937311.806996][2651:2651] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:38538 | 78085855 | [Interaction Model (1) / Report Data (0x05) / Session = 20559 / Exchange = 38920] - [1666937311.807095][2651:2651] CHIP:DMG: Header Flags = - [1666937311.807154][2651:2651] CHIP:DMG: { - [1666937311.807242][2651:2651] CHIP:DMG: Exchange (0x06) = - [1666937311.807300][2651:2651] CHIP:DMG: { - [1666937311.807359][2651:2651] CHIP:DMG: AckMsg = 55508733 - [1666937311.807439][2651:2651] CHIP:DMG: NeedsAck = true - [1666937311.807493][2651:2651] CHIP:DMG: } - [1666937311.807566][2651:2651] CHIP:DMG: } - [1666937311.807645][2651:2651] CHIP:DMG: - [1666937311.807713][2651:2651] CHIP:DMG: Encrypted Payload (70 bytes) = - [1666937311.807768][2651:2651] CHIP:DMG: { - [1666937311.807847][2651:2651] CHIP:DMG: data = 004f5000df7ea7040f921e0e13849a6fa0d777922f58d03152781bd36b6cbf9f22d882cc1c7c6d8afbd1b63303ffb3fb09c08e7160a33fb680d7f74a7696a47c4fe7b213b3cc - [1666937311.807904][2651:2651] CHIP:DMG: buffer_ptr = 187651028908208 - [1666937311.807958][2651:2651] CHIP:DMG: } - [1666937311.808031][2651:2651] CHIP:DMG: - [1666937311.808216][2651:2651] CHIP:DMG: ReportDataMessage = - [1666937311.808282][2651:2651] CHIP:DMG: { - [1666937311.808337][2651:2651] CHIP:DMG: AttributeReportIBs = - [1666937311.808413][2651:2651] CHIP:DMG: [ - [1666937311.808503][2651:2651] CHIP:DMG: AttributeReportIB = - [1666937311.808593][2651:2651] CHIP:DMG: { - [1666937311.808664][2651:2651] CHIP:DMG: AttributeDataIB = - [1666937311.808752][2651:2651] CHIP:DMG: { - [1666937311.808842][2651:2651] CHIP:DMG: DataVersion = 0x8d1127c2, - [1666937311.808924][2651:2651] CHIP:DMG: AttributePathIB = - [1666937311.809007][2651:2651] CHIP:DMG: { - [1666937311.809101][2651:2651] CHIP:DMG: Endpoint = 0x1, - [1666937311.809201][2651:2651] CHIP:DMG: Cluster = 0x25, - [1666937311.809300][2651:2651] CHIP:DMG: Attribute = 0x0000_0000, - [1666937311.809384][2651:2651] CHIP:DMG: } - [1666937311.809481][2651:2651] CHIP:DMG: - [1666937311.809573][2651:2651] CHIP:DMG: Data = [ - [1666937311.809662][2651:2651] CHIP:DMG: - [1666937311.809759][2651:2651] CHIP:DMG: ], - [1666937311.809840][2651:2651] CHIP:DMG: }, - [1666937311.809927][2651:2651] CHIP:DMG: - [1666937311.809998][2651:2651] CHIP:DMG: }, - [1666937311.810080][2651:2651] CHIP:DMG: - [1666937311.810140][2651:2651] CHIP:DMG: ], - - ./chip-tool actions read endpoint-lists 1 1 - - Verify read command is received on TH(all-clusters-minimal-app) - - [1666952448.529080][217377:217377] CHIP:DMG: ReadRequestMessage = - [1666952448.529101][217377:217377] CHIP:DMG: { - [1666952448.529119][217377:217377] CHIP:DMG: AttributePathIBs = - [1666952448.529140][217377:217377] CHIP:DMG: [ - [1666952448.529159][217377:217377] CHIP:DMG: AttributePathIB = - [1666952448.529181][217377:217377] CHIP:DMG: { - [1666952448.529204][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952448.529226][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952448.529249][217377:217377] CHIP:DMG: Attribute = 0x0000_0001, - [1666952448.529269][217377:217377] CHIP:DMG: } - [1666952448.529293][217377:217377] CHIP:DMG: - [1666952448.529312][217377:217377] CHIP:DMG: ], - [1666952448.529337][217377:217377] CHIP:DMG: - [1666952448.529358][217377:217377] CHIP:DMG: isFabricFiltered = true, - [1666952448.529378][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952448.529396][217377:217377] CHIP:DMG: }, - [1666952448.529481][217377:217377] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952448.529543][217377:217377] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952448.529567][217377:217377] CHIP:DMG: Cluster 25, Attribute 1 is dirty - [1666952448.529586][217377:217377] CHIP:DMG: Reading attribute: Cluster=0x0000_0025 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) - [1666952448.529611][217377:217377] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0025 e=1 p=v - [1666952448.529639][217377:217377] CHIP:DMG: AccessControl: allowed - [1666952448.529683][217377:217377] CHIP:DMG: Sending report (payload has 36 bytes)... - [1666952448.530029][217377:217377] CHIP:EM: <<< [E:12078r M:26716965 (Ack:2683412)] (S) Msg TX to 1:000000000001B669 [AE59] --- Type 0001:05 (IM:ReportData) - [1666952448.530072][217377:217377] CHIP:IN: (S) Sending msg 26716965 on secure session with LSID: 63115 - [1666952448.530509][217377:217377] CHIP:DMG: >> to UDP:[fe80::485c:bace:6107:3682%wlp3s0]:42342 | 26716965 | [Interaction Model (1) / Report Data (0x05) / Session = 61304 / Exchange = 12078] - [1666952448.530552][217377:217377] CHIP:DMG: Header Flags = - [1666952448.530570][217377:217377] CHIP:DMG: { - [1666952448.530612][217377:217377] CHIP:DMG: Exchange (0x06) = - [1666952448.530629][217377:217377] CHIP:DMG: { - [1666952448.530650][217377:217377] CHIP:DMG: AckMsg = 2683412 - [1666952448.530668][217377:217377] CHIP:DMG: NeedsAck = true - [1666952448.530686][217377:217377] CHIP:DMG: } - [1666952448.530716][217377:217377] CHIP:DMG: } - [1666952448.530733][217377:217377] CHIP:DMG: - [1666952448.530759][217377:217377] CHIP:DMG: Encrypted Payload (70 bytes) = - [1666952448.530776][217377:217377] CHIP:DMG: { - [1666952448.530794][217377:217377] CHIP:DMG: data = 0078ef0025ab9701cea6e79a67f3a56ad0dea23004bc0e516962a4b2eb578d9045f381e0f31b8f574047477e5e60aa969bed78d1b51470f9bb8760c4ad7c937f6a9746493426 - [1666952448.530814][217377:217377] CHIP:DMG: buffer_ptr = 94384713812256 - [1666952448.530831][217377:217377] CHIP:DMG: } - [1666952448.530848][217377:217377] CHIP:DMG: - [1666952448.530880][217377:217377] CHIP:DMG: Decrypted Payload (36 bytes) = - [1666952448.530897][217377:217377] CHIP:DMG: { - [1666952448.530915][217377:217377] CHIP:DMG: data = 1536011535012600e0b2edc5370124020124032524040118360218181818290424ff0118 - [1666952448.530934][217377:217377] CHIP:DMG: } - [1666952448.530950][217377:217377] CHIP:DMG: - [1666952448.531025][217377:217377] CHIP:DMG: ReportDataMessage = - [1666952448.531046][217377:217377] CHIP:DMG: { - [1666952448.531064][217377:217377] CHIP:DMG: AttributeReportIBs = - [1666952448.531445][217377:217377] CHIP:DMG: [ - [1666952448.531532][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952448.531565][217377:217377] CHIP:DMG: { - [1666952448.531585][217377:217377] CHIP:DMG: AttributeDataIB = - [1666952448.531607][217377:217377] CHIP:DMG: { - [1666952448.531630][217377:217377] CHIP:DMG: DataVersion = 0xc5edb2e0, - [1666952448.531652][217377:217377] CHIP:DMG: AttributePathIB = - [1666952448.531675][217377:217377] CHIP:DMG: { - [1666952448.531698][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952448.531722][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952448.531746][217377:217377] CHIP:DMG: Attribute = 0x0000_0001, - [1666952448.531768][217377:217377] CHIP:DMG: } - [1666952448.531794][217377:217377] CHIP:DMG: - [1666952448.531816][217377:217377] CHIP:DMG: Data = [ - [1666952448.531839][217377:217377] CHIP:DMG: - [1666952448.531868][217377:217377] CHIP:DMG: ], - [1666952448.531895][217377:217377] CHIP:DMG: }, - [1666952448.531925][217377:217377] CHIP:DMG: - [1666952448.531951][217377:217377] CHIP:DMG: }, - [1666952448.531990][217377:217377] CHIP:DMG: - [1666952448.532014][217377:217377] CHIP:DMG: ], - [1666952448.532047][217377:217377] CHIP:DMG: - [1666952448.532069][217377:217377] CHIP:DMG: SuppressResponse = true, - [1666952448.532092][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952448.532111][217377:217377] CHIP:DMG: } - [1666952448.532131][217377:217377] CHIP:DMG: - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - Optional attibute - - ./chip-tool actions read setup-url 1 1 - - Verify the Unsupported attribute on the TH(all-clusters-minnimal-app) Log - - [1666952609.343159][217377:217377] CHIP:DMG: ReadRequestMessage = - [1666952609.343185][217377:217377] CHIP:DMG: { - [1666952609.343205][217377:217377] CHIP:DMG: AttributePathIBs = - [1666952609.343228][217377:217377] CHIP:DMG: [ - [1666952609.343248][217377:217377] CHIP:DMG: AttributePathIB = - [1666952609.343272][217377:217377] CHIP:DMG: { - [1666952609.343296][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952609.343319][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952609.343344][217377:217377] CHIP:DMG: Attribute = 0x0000_0002, - [1666952609.343366][217377:217377] CHIP:DMG: } - [1666952609.343396][217377:217377] CHIP:DMG: - [1666952609.343414][217377:217377] CHIP:DMG: ], - [1666952609.343437][217377:217377] CHIP:DMG: - [1666952609.343456][217377:217377] CHIP:DMG: isFabricFiltered = true, - [1666952609.343474][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952609.343491][217377:217377] CHIP:DMG: }, - [1666952609.343573][217377:217377] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952609.343647][217377:217377] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952609.343671][217377:217377] CHIP:DMG: Cluster 25, Attribute 2 is dirty - [1666952609.343688][217377:217377] CHIP:DMG: Reading attribute: Cluster=0x0000_0025 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) - [1666952609.343733][217377:217377] CHIP:DMG: Sending report (payload has 33 bytes)... - [1666952609.344066][217377:217377] CHIP:EM: <<< [E:37827r M:202875336 (Ack:199155625)] (S) Msg TX to 1:000000000001B669 [AE59] --- Type 0001:05 (IM:ReportData) - [1666952609.344128][217377:217377] CHIP:IN: (S) Sending msg 202875336 on secure session with LSID: 63116 - [1666952609.344547][217377:217377] CHIP:DMG: >> to UDP:[fe80::485c:bace:6107:3682%wlp3s0]:46813 | 202875336 | [Interaction Model (1) / Report Data (0x05) / Session = 20214 / Exchange = 37827] - [1666952609.344601][217377:217377] CHIP:DMG: Header Flags = - [1666952609.344623][217377:217377] CHIP:DMG: { - [1666952609.344664][217377:217377] CHIP:DMG: Exchange (0x06) = - [1666952609.344681][217377:217377] CHIP:DMG: { - [1666952609.344703][217377:217377] CHIP:DMG: AckMsg = 199155625 - [1666952609.344723][217377:217377] CHIP:DMG: NeedsAck = true - [1666952609.344741][217377:217377] CHIP:DMG: } - [1666952609.344770][217377:217377] CHIP:DMG: } - [1666952609.344788][217377:217377] CHIP:DMG: - [1666952609.344816][217377:217377] CHIP:DMG: Encrypted Payload (67 bytes) = - [1666952609.344836][217377:217377] CHIP:DMG: { - [1666952609.344856][217377:217377] CHIP:DMG: data = 00f64e00c8a1170c0f5d4a4d9195a985ad54b3de870e336b0ecfaa7373615ca174138e2959606cb26476c70d8149a1435824f8e4446d9cc896de6c6d7b7275ea265d7c - [1666952609.344878][217377:217377] CHIP:DMG: buffer_ptr = 94384713812256 - [1666952609.344897][217377:217377] CHIP:DMG: } - [1666952609.344915][217377:217377] CHIP:DMG: - [1666952609.344947][217377:217377] CHIP:DMG: Decrypted Payload (33 bytes) = - [1666952609.344967][217377:217377] CHIP:DMG: { - [1666952609.344986][217377:217377] CHIP:DMG: data = 153601153500370024020124032524040218350124008618181818290424ff0118 - [1666952609.345007][217377:217377] CHIP:DMG: } - [1666952609.345024][217377:217377] CHIP:DMG: - [1666952609.345097][217377:217377] CHIP:DMG: ReportDataMessage = - [1666952609.345124][217377:217377] CHIP:DMG: { - [1666952609.345144][217377:217377] CHIP:DMG: AttributeReportIBs = - [1666952609.345174][217377:217377] CHIP:DMG: [ - [1666952609.345193][217377:217377] CHIP:DMG: AttributeReportIB = - [1666952609.345224][217377:217377] CHIP:DMG: { - [1666952609.345244][217377:217377] CHIP:DMG: AttributeStatusIB = - [1666952609.345269][217377:217377] CHIP:DMG: { - [1666952609.345290][217377:217377] CHIP:DMG: AttributePathIB = - [1666952609.345320][217377:217377] CHIP:DMG: { - [1666952609.345346][217377:217377] CHIP:DMG: Endpoint = 0x1, - [1666952609.345373][217377:217377] CHIP:DMG: Cluster = 0x25, - [1666952609.345403][217377:217377] CHIP:DMG: Attribute = 0x0000_0002, - [1666952609.345431][217377:217377] CHIP:DMG: } - [1666952609.345462][217377:217377] CHIP:DMG: - [1666952609.345489][217377:217377] CHIP:DMG: StatusIB = - [1666952609.345519][217377:217377] CHIP:DMG: { - [1666952609.345543][217377:217377] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1666952609.345570][217377:217377] CHIP:DMG: }, - [1666952609.345595][217377:217377] CHIP:DMG: - [1666952609.345617][217377:217377] CHIP:DMG: }, - [1666952609.345647][217377:217377] CHIP:DMG: - [1666952609.345668][217377:217377] CHIP:DMG: }, - [1666952609.345698][217377:217377] CHIP:DMG: - [1666952609.345718][217377:217377] CHIP:DMG: ], - [1666952609.345750][217377:217377] CHIP:DMG: - [1666952609.345771][217377:217377] CHIP:DMG: SuppressResponse = true, - [1666952609.345792][217377:217377] CHIP:DMG: InteractionModelRevision = 1 - [1666952609.345811][217377:217377] CHIP:DMG: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && ACT.C.AO-READ - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && ACT.C.AO-WRITE - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml index 4a916e5aecbb30..2ffa03aca52f0b 100644 --- a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml @@ -13,7 +13,7 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 68.2.2. [TC-BOOL-2.2] Primary functionality with server as DUT +name: 69.2.2. [TC-BOOL-2.2] Primary Functionality with Server as DUT PICS: - BOOL.S @@ -73,7 +73,7 @@ tests: - label: "Step 4a: Set up subscription to StateChange event." PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - Need an SDK implementation required + This event is not supported in all clusters app, so there are no reference logs. Run the below command to start interactive mode ./chip-tool interactive start @@ -86,21 +86,23 @@ tests: - label: "Step 4b: Bring the DUT into a state so StateValue is FALSE." PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - Verify the StateValue value is FALSE On TH(chip-tool), below is the sample log provided for the raspi platform + Verify the StateValue value is FALSE On TH(chip-tool), if the state-change event is generated disabled: true - label: "Step 4c: TH reads the StateValue attribute from the DUT." PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | + This event is not supported in all clusters app, so there are no reference logs. + booleanstate read state-value 1 1 - Verify the StateValue value is FALSE On TH(chip-tool), below is the sample log provided for the raspi platform + Verify the StateValue value is FALSE On TH(chip-tool) disabled: true - label: "Step 4d: Bring the DUT into a state so StateValue is TRUE." PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - Verify the StateValue value is TRUE On TH(chip-tool), below is the sample log provided for the raspi platform + Verify the StateValue value is TRUE On TH(chip-tool), if the state-change event is generated disabled: true - label: "Step 4e: TH reads the StateValue attribute from the DUT." @@ -108,5 +110,5 @@ tests: verification: | booleanstate read state-value 1 1 - Verify the StateValue value is TRUE On TH(chip-tool), below is the sample log provided for the raspi platform + Verify the StateValue value is TRUE On TH(chip-tool) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml deleted file mode 100644 index dd6ad529382fc8..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml +++ /dev/null @@ -1,356 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 68.3.1. [TC-BOOL-3.1] Attributes with Client as DUT - -PICS: - - BOOL.C - - BOOL.C.AM-READ - - BOOL.C.AO-READ - - BOOL.C.AM-WRITE - - BOOL.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Boolean State" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: StateValue" - PICS: BOOL.C.AM-READ - wait: "readAttribute" - attribute: "StateValue" - - - 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 booleanstate read feature-map 1 1 - - Verify none of the optional feature of the server-side of the cluster is listed on TH(all-clusters-minnimal-app) Log - - [1666936223.132263][2546:2546] CHIP:EM: Handling via exchange: 56922r, Delegate: 0xaaaad02b0288 - [1666936223.132365][2546:2546] CHIP:IM: Received Read request - [1666936223.132562][2546:2546] CHIP:DMG: ReadRequestMessage = - [1666936223.132653][2546:2546] CHIP:DMG: { - [1666936223.132709][2546:2546] CHIP:DMG: AttributePathIBs = - [1666936223.132780][2546:2546] CHIP:DMG: [ - [1666936223.132844][2546:2546] CHIP:DMG: AttributePathIB = - [1666936223.132961][2546:2546] CHIP:DMG: { - [1666936223.133043][2546:2546] CHIP:DMG: Endpoint = 0x1, - [1666936223.133153][2546:2546] CHIP:DMG: Cluster = 0x45, - [1666936223.133238][2546:2546] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666936223.133340][2546:2546] CHIP:DMG: } - [1666936223.133421][2546:2546] CHIP:DMG: - [1666936223.133518][2546:2546] CHIP:DMG: ], - [1666936223.133592][2546:2546] CHIP:DMG: - [1666936223.133690][2546:2546] CHIP:DMG: isFabricFiltered = true, - [1666936223.133757][2546:2546] CHIP:DMG: InteractionModelRevision = 1 - [1666936223.133843][2546:2546] CHIP:DMG: }, - [1666936223.134040][2546:2546] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666936223.134302][2546:2546] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666936223.134381][2546:2546] CHIP:DMG: Cluster 45, Attribute fffc is dirty - [1666936223.134437][2546:2546] CHIP:DMG: Reading attribute: Cluster=0x0000_0045 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1666936223.134506][2546:2546] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0045 e=1 p=v - [1666936223.134610][2546:2546] CHIP:DMG: AccessControl: allowed - [1666936223.134803][2546:2546] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666936223.135460][2546:2546] CHIP:EM: <<< [E:56922r M:17358809 (Ack:120184015)] (S) Msg TX to 1:000000000001B669 [A6ED] --- Type 0001:05 (IM:ReportData) - [1666936223.135576][2546:2546] CHIP:IN: (S) Sending msg 17358809 on secure session with LSID: 15175 - [1666936223.136334][2546:2546] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:35992 | 17358809 | [Interaction Model (1) / Report Data (0x05) / Session = 13737 / Exchange = 56922] - [1666936223.136444][2546:2546] CHIP:DMG: Header Flags = - [1666936223.136503][2546:2546] CHIP:DMG: { - [1666936223.136592][2546:2546] CHIP:DMG: Exchange (0x06) = - [1666936223.136649][2546:2546] CHIP:DMG: { - [1666936223.136710][2546:2546] CHIP:DMG: AckMsg = 120184015 - [1666936223.136794][2546:2546] CHIP:DMG: NeedsAck = true - [1666936223.136852][2546:2546] CHIP:DMG: } - [1666936223.136926][2546:2546] CHIP:DMG: } - [1666936223.137005][2546:2546] CHIP:DMG: - [1666936223.137077][2546:2546] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666936223.137257][2546:2546] CHIP:DMG: { - [1666936223.137320][2546:2546] CHIP:DMG: data = 00a93500d9df0801fc3a3b7ec6f761c31f328854cd71ec11f2d3486635575b63f02c796af2820a3ea5eda769ed4b44fecdc89d2f050c1d0a325141f9fe1e941a5821abfbc01a45 - [1666936223.137404][2546:2546] CHIP:DMG: buffer_ptr = 187650953656928 - [1666936223.137459][2546:2546] CHIP:DMG: } - [1666936223.137513][2546:2546] CHIP:DMG: - [1666936223.137716][2546:2546] CHIP:DMG: ReportDataMessage = - [1666936223.137810][2546:2546] CHIP:DMG: { - [1666936223.137866][2546:2546] CHIP:DMG: AttributeReportIBs = - [1666936223.137968][2546:2546] CHIP:DMG: [ - [1666936223.138034][2546:2546] CHIP:DMG: AttributeReportIB = - [1666936223.138151][2546:2546] CHIP:DMG: { - [1666936223.138231][2546:2546] CHIP:DMG: AttributeDataIB = - [1666936223.138337][2546:2546] CHIP:DMG: { - [1666936223.138427][2546:2546] CHIP:DMG: DataVersion = 0x1e70d063, - [1666936223.138536][2546:2546] CHIP:DMG: AttributePathIB = - [1666936223.138625][2546:2546] CHIP:DMG: { - [1666936223.138803][2546:2546] CHIP:DMG: Endpoint = 0x1, - [1666936223.138899][2546:2546] CHIP:DMG: Cluster = 0x45, - [1666936223.139021][2546:2546] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666936223.139109][2546:2546] CHIP:DMG: } - [1666936223.139225][2546:2546] CHIP:DMG: - [1666936223.139318][2546:2546] CHIP:DMG: Data = 0, - [1666936223.139424][2546:2546] CHIP:DMG: }, - [1666936223.139514][2546:2546] CHIP:DMG: - [1666936223.139611][2546:2546] CHIP:DMG: }, - [1666936223.139698][2546:2546] CHIP:DMG: - [1666936223.139783][2546:2546] CHIP:DMG: ], - - ./chip-tool booleanstate read attribute-list 1 1 - - Verify none of the optional attributes of the server-side of the cluster is listed on TH(all-clusters-minnimal-app) Log - - [1665059548.735458][9263:9263] CHIP:DMG: ReportDataMessage = - [1665059548.735528][9263:9263] CHIP:DMG: { - [1665059548.735575][9263:9263] CHIP:DMG: AttributeReportIBs = - [1665059548.735699][9263:9263] CHIP:DMG: [ - [1665059548.735763][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.735840][9263:9263] CHIP:DMG: { - [1665059548.735906][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.735980][9263:9263] CHIP:DMG: { - [1665059548.736051][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.736125][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.736235][9263:9263] CHIP:DMG: { - [1665059548.736342][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.736451][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.736536][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.736614][9263:9263] CHIP:DMG: } - [1665059548.736718][9263:9263] CHIP:DMG: - [1665059548.736797][9263:9263] CHIP:DMG: Data = [ - [1665059548.736896][9263:9263] CHIP:DMG: - [1665059548.736981][9263:9263] CHIP:DMG: ], - [1665059548.737053][9263:9263] CHIP:DMG: }, - [1665059548.737151][9263:9263] CHIP:DMG: - [1665059548.737217][9263:9263] CHIP:DMG: }, - [1665059548.737331][9263:9263] CHIP:DMG: - [1665059548.737394][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.737499][9263:9263] CHIP:DMG: { - [1665059548.737718][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.737821][9263:9263] CHIP:DMG: { - [1665059548.737898][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.737995][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.738074][9263:9263] CHIP:DMG: { - [1665059548.738185][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.738269][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.738373][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.738464][9263:9263] CHIP:DMG: ListIndex = Null, - [1665059548.738587][9263:9263] CHIP:DMG: } - [1665059548.738693][9263:9263] CHIP:DMG: - [1665059548.738778][9263:9263] CHIP:DMG: Data = 0, - [1665059548.738874][9263:9263] CHIP:DMG: }, - [1665059548.738950][9263:9263] CHIP:DMG: - [1665059548.739038][9263:9263] CHIP:DMG: }, - [1665059548.739130][9263:9263] CHIP:DMG: - [1665059548.739192][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.739295][9263:9263] CHIP:DMG: { - [1665059548.739365][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.739438][9263:9263] CHIP:DMG: { - [1665059548.739535][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.739605][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.739704][9263:9263] CHIP:DMG: { - [1665059548.739785][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.739891][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.739973][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.740052][9263:9263] CHIP:DMG: ListIndex = Null, - [1665059548.740151][9263:9263] CHIP:DMG: } - [1665059548.740235][9263:9263] CHIP:DMG: - [1665059548.740337][9263:9263] CHIP:DMG: Data = 65528, - [1665059548.740403][9263:9263] CHIP:DMG: }, - [1665059548.740510][9263:9263] CHIP:DMG: - [1665059548.740576][9263:9263] CHIP:DMG: }, - [1665059548.740667][9263:9263] CHIP:DMG: - [1665059548.740722][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.740824][9263:9263] CHIP:DMG: { - [1665059548.740891][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.740986][9263:9263] CHIP:DMG: { - [1665059548.741063][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.741159][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.741240][9263:9263] CHIP:DMG: { - [1665059548.741320][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.741420][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.741493][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.741613][9263:9263] CHIP:DMG: ListIndex = Null, - [1665059548.741769][9263:9263] CHIP:DMG: } - [1665059548.741862][9263:9263] CHIP:DMG: - [1665059548.741954][9263:9263] CHIP:DMG: Data = 65529, - [1665059548.742028][9263:9263] CHIP:DMG: }, - [1665059548.742136][9263:9263] CHIP:DMG: - [1665059548.742198][9263:9263] CHIP:DMG: }, - [1665059548.742311][9263:9263] CHIP:DMG: - [1665059548.742375][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.742455][9263:9263] CHIP:DMG: { - [1665059548.742545][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.742621][9263:9263] CHIP:DMG: { - [1665059548.742719][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.742794][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.742865][9263:9263] CHIP:DMG: { - [1665059548.742966][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.743049][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.743157][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.743236][9263:9263] CHIP:DMG: ListIndex = Null, - [1665059548.743332][9263:9263] CHIP:DMG: } - [1665059548.743426][9263:9263] CHIP:DMG: - [1665059548.743526][9263:9263] CHIP:DMG: Data = 65531, - [1665059548.743601][9263:9263] CHIP:DMG: }, - [1665059548.743710][9263:9263] CHIP:DMG: - [1665059548.743778][9263:9263] CHIP:DMG: }, - [1665059548.743886][9263:9263] CHIP:DMG: - [1665059548.743945][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.744023][9263:9263] CHIP:DMG: { - [1665059548.744106][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.744172][9263:9263] CHIP:DMG: { - [1665059548.744247][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.744321][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.744394][9263:9263] CHIP:DMG: { - [1665059548.744497][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.744581][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.744689][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.744772][9263:9263] CHIP:DMG: ListIndex = Null, - [1665059548.744878][9263:9263] CHIP:DMG: } - [1665059548.744957][9263:9263] CHIP:DMG: - [1665059548.745062][9263:9263] CHIP:DMG: Data = 65532, - [1665059548.745135][9263:9263] CHIP:DMG: }, - [1665059548.745235][9263:9263] CHIP:DMG: - [1665059548.745302][9263:9263] CHIP:DMG: }, - [1665059548.745408][9263:9263] CHIP:DMG: - [1665059548.745468][9263:9263] CHIP:DMG: AttributeReportIB = - [1665059548.745585][9263:9263] CHIP:DMG: { - [1665059548.745678][9263:9263] CHIP:DMG: AttributeDataIB = - [1665059548.745753][9263:9263] CHIP:DMG: { - [1665059548.745851][9263:9263] CHIP:DMG: DataVersion = 0xd0240b6a, - [1665059548.745924][9263:9263] CHIP:DMG: AttributePathIB = - [1665059548.746024][9263:9263] CHIP:DMG: { - [1665059548.746103][9263:9263] CHIP:DMG: Endpoint = 0x1, - [1665059548.746208][9263:9263] CHIP:DMG: Cluster = 0x45, - [1665059548.746292][9263:9263] CHIP:DMG: Attribute = 0x0000_FFFB, - [1665059548.746373][9263:9263] CHIP:DMG: ListIndex = Null, - [1665059548.746473][9263:9263] CHIP:DMG: } - [1665059548.746551][9263:9263] CHIP:DMG: - [1665059548.746654][9263:9263] CHIP:DMG: Data = 65533, - [1665059548.746728][9263:9263] CHIP:DMG: }, - - - ./chip-tool booleanstate read state-value 1 1 - - Verify read command is received on TH (all-clusters-minimal-app) Log - - [1666174757.461171][21506:21506] CHIP:EM: Handling via exchange: 33623r, Delegate: 0xaaaac93380e0 - [1666174757.461271][21506:21506] CHIP:IM: Received Read request - [1666174757.461438][21506:21506] CHIP:DMG: ReadRequestMessage = - [1666174757.461510][21506:21506] CHIP:DMG: { - [1666174757.461565][21506:21506] CHIP:DMG: AttributePathIBs = - [1666174757.461629][21506:21506] CHIP:DMG: [ - [1666174757.461690][21506:21506] CHIP:DMG: AttributePathIB = - [1666174757.461769][21506:21506] CHIP:DMG: { - [1666174757.461855][21506:21506] CHIP:DMG: Endpoint = 0x1, - [1666174757.461999][21506:21506] CHIP:DMG: Cluster = 0x45, - [1666174757.462085][21506:21506] CHIP:DMG: Attribute = 0x0000_0000, - [1666174757.462161][21506:21506] CHIP:DMG: } - [1666174757.462235][21506:21506] CHIP:DMG: - [1666174757.462300][21506:21506] CHIP:DMG: ], - [1666174757.462371][21506:21506] CHIP:DMG: - [1666174757.462440][21506:21506] CHIP:DMG: isFabricFiltered = true, - [1666174757.462504][21506:21506] CHIP:DMG: InteractionModelRevision = 1 - [1666174757.462565][21506:21506] CHIP:DMG: }, - [1666174757.462734][21506:21506] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666174757.462977][21506:21506] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666174757.463049][21506:21506] CHIP:DMG: Cluster 45, Attribute 0 is dirty - [1666174757.463104][21506:21506] CHIP:DMG: Reading attribute: Cluster=0x0000_0045 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1666174757.463172][21506:21506] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0045 e=1 p=v - [1666174757.463248][21506:21506] CHIP:DMG: AccessControl: allowed - [1666174757.463365][21506:21506] CHIP:DMG: Sending report (payload has 35 bytes)... - [1666174757.463975][21506:21506] CHIP:EM: <<< [E:33623r M:221389354 (Ack:15980397)] (S) Msg TX to 1:000000000001B669 [A7EF] --- Type 0001:05 (IM:ReportData) - [1666174757.464087][21506:21506] CHIP:IN: (S) Sending msg 221389354 on secure session with LSID: 55654 - [1666174757.464808][21506:21506] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:35514 | 221389354 | [Interaction Model (1) / Report Data (0x05) / Session = 18738 / Exchange = 33623] - [1666174757.464917][21506:21506] CHIP:DMG: Header Flags = - [1666174757.464974][21506:21506] CHIP:DMG: { - [1666174757.465062][21506:21506] CHIP:DMG: Exchange (0x06) = - [1666174757.465119][21506:21506] CHIP:DMG: { - [1666174757.465178][21506:21506] CHIP:DMG: AckMsg = 15980397 - [1666174757.465228][21506:21506] CHIP:DMG: NeedsAck = true - [1666174757.465288][21506:21506] CHIP:DMG: } - [1666174757.465360][21506:21506] CHIP:DMG: } - [1666174757.465425][21506:21506] CHIP:DMG: - [1666174757.465495][21506:21506] CHIP:DMG: Encrypted Payload (69 bytes) = - [1666174757.465543][21506:21506] CHIP:DMG: { - [1666174757.465597][21506:21506] CHIP:DMG: data = 003249002a22320d70f90c31d24191bdcae9c8e10d0059f5a90bcc5c7c921dffd49596846c3d5131af0f1b0d5dac89dc70bec2a05fcefd34726640374895b32262fac29b72 - [1666174757.465653][21506:21506] CHIP:DMG: buffer_ptr = 187650839759600 - [1666174757.465703][21506:21506] CHIP:DMG: } - [1666174757.465750][21506:21506] CHIP:DMG: - [1666174757.465959][21506:21506] CHIP:DMG: ReportDataMessage = - [1666174757.466032][21506:21506] CHIP:DMG: { - [1666174757.466086][21506:21506] CHIP:DMG: AttributeReportIBs = - [1666174757.466173][21506:21506] CHIP:DMG: [ - [1666174757.466233][21506:21506] CHIP:DMG: AttributeReportIB = - [1666174757.466320][21506:21506] CHIP:DMG: { - [1666174757.466395][21506:21506] CHIP:DMG: AttributeDataIB = - [1666174757.466476][21506:21506] CHIP:DMG: { - [1666174757.466561][21506:21506] CHIP:DMG: DataVersion = 0x83aa29ff, - [1666174757.466644][21506:21506] CHIP:DMG: AttributePathIB = - [1666174757.466729][21506:21506] CHIP:DMG: { - [1666174757.466833][21506:21506] CHIP:DMG: Endpoint = 0x1, - [1666174757.466917][21506:21506] CHIP:DMG: Cluster = 0x45, - [1666174757.467008][21506:21506] CHIP:DMG: Attribute = 0x0000_0000, - [1666174757.467091][21506:21506] CHIP:DMG: } - [1666174757.467181][21506:21506] CHIP:DMG: - [1666174757.467270][21506:21506] CHIP:DMG: Data = false, - [1666174757.467344][21506:21506] CHIP:DMG: }, - [1666174757.467432][21506:21506] CHIP:DMG: - [1666174757.467505][21506:21506] CHIP:DMG: }, - [1666174757.467582][21506:21506] CHIP:DMG: - [1666174757.467643][21506:21506] CHIP:DMG: ], - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - This cluster doesn't have any optional attribute - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml index 1d08f4e1f942fe..563fd45a06511e 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_1_1.yaml @@ -34,13 +34,26 @@ tests: - name: "nodeId" value: nodeId + #Issue https://github.com/project-chip/connectedhomeip/issues/26602 - label: "Step 2: TH reads the ClusterRevision from DUT" - command: "readAttribute" - attribute: "ClusterRevision" - response: - value: 1 - constraints: - type: int16u + verification: | + ./chip-tool bridgeddevicebasicinformation read cluster-revision 1 3 + + Via the TH (chip-tool), verify: + -that the ClusterRevision attribute contains value as 2. + -that value is in the type of uint16. + + [1657695910.794487][15411:15416] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_FFFD DataVersion: 2577979325 + [1657695910.794568][15411:15416] CHIP:TOO: ClusterRevision: 2 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" - label: "Step 3: TH reads the FeatureMap from DUT" command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_25.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_25.yaml new file mode 100644 index 00000000000000..fed38e16e2916d --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_25.yaml @@ -0,0 +1,2139 @@ +# Copyright (c) 2023 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: + 36.1.25. [TC-CADMIN-1.25] Subscription to the attributes - verify + subscription response [ECM] [DUT - Commissionee] + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: "Precondition" + verification: | + Reset Devices to factory defaults + disabled: true + + - label: "Step 1: TH_CR1 starts a commissioning process with DUT_CE" + PICS: CADMIN.S + verification: | + On TH_CR1 start interactive mode, + + ./chip-tool interactive start + + In the interactive mode of TH_CR1, start commissioning process, + + pairing code 1 34970112332 --commissioner-name alpha + + + + [1690218999738] [38865:6571482] [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1690218999738] [38865:6571482] [CTL] Received CommissioningComplete response, errorCode=0 + [1690218999738] [38865:6571482] [CTL] Successfully finished commissioning step 'SendComplete' + [1690218999738] [38865:6571482] [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1690218999738] [38865:6571482] [CTL] Performing next commissioning step 'Cleanup' + [1690218999738] [38865:6571482] [IN] SecureSession[0x6000012bc000]: MarkForEviction Type:1 LSID:35777 + [1690218999738] [38865:6571482] [SC] SecureSession[0x6000012bc000, LSID:35777]: State change 'kActive' --> 'kPendingEviction' + [1690218999738] [38865:6571482] [IN] SecureSession[0x6000012bc000]: Released - Type:1 LSID:35777 + [1690218999738] [38865:6571482] [CTL] Successfully finished commissioning step 'Cleanup' + [1690218999738] [38865:6571482] [TOO] Device commissioning completed with success + disabled: true + + - label: "Step 2: TH_CR1 subscribes to WindowStatus attribute on DUT_CE" + PICS: CADMIN.S.A0000 + verification: | + In the interactive mode of TH_CR1, subscribe to windowstatus attribute, + + administratorcommissioning subscribe window-status 10 3000 1 0 --keepSubscriptions true --commissioner-name alpha + + On TH_CR1 logs verify for windowstatus subscription notification, + + ReportDataMessage = + [1690219196809] [38865:6571482] [DMG] { + [1690219196809] [38865:6571482] [DMG] SubscriptionId = 0xdade5274, + [1690219196809] [38865:6571482] [DMG] AttributeReportIBs = + [1690219196809] [38865:6571482] [DMG] [ + [1690219196809] [38865:6571482] [DMG] AttributeReportIB = + [1690219196809] [38865:6571482] [DMG] { + [1690219196809] [38865:6571482] [DMG] AttributeDataIB = + [1690219196809] [38865:6571482] [DMG] { + [1690219196809] [38865:6571482] [DMG] DataVersion = 0x1fddccd8, + [1690219196809] [38865:6571482] [DMG] AttributePathIB = + [1690219196809] [38865:6571482] [DMG] { + [1690219196809] [38865:6571482] [DMG] Endpoint = 0x0, + [1690219196809] [38865:6571482] [DMG] Cluster = 0x3c, + [1690219196809] [38865:6571482] [DMG] Attribute = 0x0000_0000, + [1690219196809] [38865:6571482] [DMG] } + [1690219196809] [38865:6571482] [DMG] + [1690219196809] [38865:6571482] [DMG] Data = 0, + [1690219196809] [38865:6571482] [DMG] }, + [1690219196809] [38865:6571482] [DMG] + [1690219196809] [38865:6571482] [DMG] }, + [1690219196809] [38865:6571482] [DMG] + [1690219196809] [38865:6571482] [DMG] ], + [1690219196809] [38865:6571482] [DMG] + [1690219196809] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219196809] [38865:6571482] [DMG] } + [1690219196809] [38865:6571482] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629592 + [1690219196809] [38865:6571482] [TOO] WindowStatus: 0 + [1690219196809] [38865:6571482] [DMG] MoveToState ReadClient[0x13b704b90]: Moving to [AwaitingSu] + disabled: true + + - label: "Step 3: TH_CR1 subscribes to AdminFabricIndex attribute on DUT_CE" + PICS: CADMIN.S.A0001 + verification: | + In the interactive mode of TH_CR1, subscribe to adminfabricindex attribute, + + administratorcommissioning subscribe admin-fabric-index 10 3000 1 0 --keepSubscriptions true --commissioner-name alpha + + On TH_CR1 logs verify for adminfabricindex subscription notification, + + ReportDataMessage = + [1690219390537] [38865:6571482] [DMG] { + [1690219390537] [38865:6571482] [DMG] SubscriptionId = 0x35250b41, + [1690219390537] [38865:6571482] [DMG] AttributeReportIBs = + [1690219390537] [38865:6571482] [DMG] [ + [1690219390537] [38865:6571482] [DMG] AttributeReportIB = + [1690219390537] [38865:6571482] [DMG] { + [1690219390537] [38865:6571482] [DMG] AttributeDataIB = + [1690219390537] [38865:6571482] [DMG] { + [1690219390537] [38865:6571482] [DMG] DataVersion = 0x1fddccd8, + [1690219390537] [38865:6571482] [DMG] AttributePathIB = + [1690219390537] [38865:6571482] [DMG] { + [1690219390537] [38865:6571482] [DMG] Endpoint = 0x0, + [1690219390537] [38865:6571482] [DMG] Cluster = 0x3c, + [1690219390537] [38865:6571482] [DMG] Attribute = 0x0000_0001, + [1690219390537] [38865:6571482] [DMG] } + [1690219390537] [38865:6571482] [DMG] + [1690219390537] [38865:6571482] [DMG] Data = NULL + [1690219390537] [38865:6571482] [DMG] }, + [1690219390537] [38865:6571482] [DMG] + [1690219390537] [38865:6571482] [DMG] }, + [1690219390537] [38865:6571482] [DMG] + [1690219390537] [38865:6571482] [DMG] ], + [1690219390537] [38865:6571482] [DMG] + [1690219390537] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219390537] [38865:6571482] [DMG] } + [1690219390537] [38865:6571482] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629592 + [1690219390537] [38865:6571482] [TOO] AdminFabricIndex: null + [1690219390537] [38865:6571482] [DMG] MoveToState ReadClient[0x13b605540]: Moving to [AwaitingSu] + disabled: true + + - label: "Step 4: TH_CR1 subscribes to AdminVendorId attribute on DUT_CE" + PICS: CADMIN.S.A0002 + verification: | + In the interactive mode of TH_CR1, subscribe to adminvendorid attribute, + + administratorcommissioning subscribe admin-vendor-id 10 3000 1 0 --keepSubscriptions true --commissioner-name alpha + + On TH_CR1 logs, verify for adminvendorid subscription notification + + ReportDataMessage = + [1690219472644] [38865:6571482] [DMG] { + [1690219472644] [38865:6571482] [DMG] SubscriptionId = 0xd3c6ff91, + [1690219472644] [38865:6571482] [DMG] AttributeReportIBs = + [1690219472644] [38865:6571482] [DMG] [ + [1690219472644] [38865:6571482] [DMG] AttributeReportIB = + [1690219472644] [38865:6571482] [DMG] { + [1690219472644] [38865:6571482] [DMG] AttributeDataIB = + [1690219472644] [38865:6571482] [DMG] { + [1690219472644] [38865:6571482] [DMG] DataVersion = 0x1fddccd8, + [1690219472644] [38865:6571482] [DMG] AttributePathIB = + [1690219472644] [38865:6571482] [DMG] { + [1690219472644] [38865:6571482] [DMG] Endpoint = 0x0, + [1690219472644] [38865:6571482] [DMG] Cluster = 0x3c, + [1690219472644] [38865:6571482] [DMG] Attribute = 0x0000_0002, + [1690219472644] [38865:6571482] [DMG] } + [1690219472644] [38865:6571482] [DMG] + [1690219472644] [38865:6571482] [DMG] Data = NULL + [1690219472644] [38865:6571482] [DMG] }, + [1690219472644] [38865:6571482] [DMG] + [1690219472644] [38865:6571482] [DMG] }, + [1690219472644] [38865:6571482] [DMG] + [1690219472644] [38865:6571482] [DMG] ], + [1690219472644] [38865:6571482] [DMG] + [1690219472644] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219472644] [38865:6571482] [DMG] } + [1690219472644] [38865:6571482] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629592 + [1690219472644] [38865:6571482] [TOO] AdminVendorId: null + [1690219472644] [38865:6571482] [DMG] MoveToState ReadClient[0x12b6042d0]: Moving to [AwaitingSu] + disabled: true + + - label: + "Step 5: TH_CR1 opens a commissioning window on DUT_CE using ECM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C00.Rsp + verification: | + In the interactive mode of TH_CR1, send command to open commissioning window using ECM, + + pairing open-commissioning-window 1 1 180 1000 3840 --commissioner-name alpha + + On TH_CR1 logs, verify for pairing window to be successfully opened + + InvokeResponseMessage = + [1690219617069] [38865:6571482] [DMG] { + [1690219617069] [38865:6571482] [DMG] suppressResponse = false, + [1690219617069] [38865:6571482] [DMG] InvokeResponseIBs = + [1690219617069] [38865:6571482] [DMG] [ + [1690219617069] [38865:6571482] [DMG] InvokeResponseIB = + [1690219617069] [38865:6571482] [DMG] { + [1690219617069] [38865:6571482] [DMG] CommandStatusIB = + [1690219617069] [38865:6571482] [DMG] { + [1690219617069] [38865:6571482] [DMG] CommandPathIB = + [1690219617069] [38865:6571482] [DMG] { + [1690219617069] [38865:6571482] [DMG] EndpointId = 0x0, + [1690219617069] [38865:6571482] [DMG] ClusterId = 0x3c, + [1690219617069] [38865:6571482] [DMG] CommandId = 0x0, + [1690219617069] [38865:6571482] [DMG] }, + [1690219617069] [38865:6571482] [DMG] + [1690219617069] [38865:6571482] [DMG] StatusIB = + [1690219617069] [38865:6571482] [DMG] { + [1690219617069] [38865:6571482] [DMG] status = 0x00 (SUCCESS), + [1690219617069] [38865:6571482] [DMG] }, + [1690219617069] [38865:6571482] [DMG] + [1690219617069] [38865:6571482] [DMG] }, + [1690219617069] [38865:6571482] [DMG] + [1690219617069] [38865:6571482] [DMG] }, + [1690219617069] [38865:6571482] [DMG] + [1690219617069] [38865:6571482] [DMG] ], + [1690219617069] [38865:6571482] [DMG] + [1690219617069] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219617069] [38865:6571482] [DMG] }, + [1690219617069] [38865:6571482] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 + [1690219617069] [38865:6571482] [CTL] Successfully opened pairing window on the device + [1690219617069] [38865:6571482] [CTL] Manual pairing code: [35092509167] + [1690219617069] [38865:6571482] [CTL] SetupQRCode: [MT:-24J0AFN00I.KG02C00] + [1690219617069] [38865:6571482] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 6: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR1s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR1s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR1’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR1’s fabric + + ReportDataMessage = + [1690219617070] [38865:6571482] [DMG] { + [1690219617070] [38865:6571482] [DMG] SubscriptionId = 0xdade5274, + [1690219617070] [38865:6571482] [DMG] AttributeReportIBs = + [1690219617070] [38865:6571482] [DMG] [ + [1690219617070] [38865:6571482] [DMG] AttributeReportIB = + [1690219617070] [38865:6571482] [DMG] { + [1690219617070] [38865:6571482] [DMG] AttributeDataIB = + [1690219617070] [38865:6571482] [DMG] { + [1690219617070] [38865:6571482] [DMG] DataVersion = 0x1fddccdb, + [1690219617070] [38865:6571482] [DMG] AttributePathIB = + [1690219617070] [38865:6571482] [DMG] { + [1690219617070] [38865:6571482] [DMG] Endpoint = 0x0, + [1690219617070] [38865:6571482] [DMG] Cluster = 0x3c, + [1690219617070] [38865:6571482] [DMG] Attribute = 0x0000_0000, + [1690219617070] [38865:6571482] [DMG] } + [1690219617070] [38865:6571482] [DMG] + [1690219617070] [38865:6571482] [DMG] Data = 1, + [1690219617070] [38865:6571482] [DMG] }, + [1690219617070] [38865:6571482] [DMG] + [1690219617070] [38865:6571482] [DMG] }, + [1690219617070] [38865:6571482] [DMG] + [1690219617070] [38865:6571482] [DMG] ], + [1690219617070] [38865:6571482] [DMG] + [1690219617070] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219617070] [38865:6571482] [DMG] } + [1690219617070] [38865:6571482] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629595 + [1690219617070] [38865:6571482] [TOO] WindowStatus: 1 + [1690219617070] [38865:6571482] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690219617071] [38865:6571482] [EM] <<< [E:50737r S:35778 M:151592234 (Ack:264355187)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690219617071] [38865:6571482] [IN] (S) Sending msg 151592234 on secure session with LSID: 35778 + [1690219617074] [38865:6571482] [EM] >>> [E:50738r S:35778 M:264355188] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690219617074] [38865:6571482] [EM] Handling via exchange: 50738r, Delegate: 0x1013c4be0 + [1690219617074] [38865:6571482] [DMG] ReportDataMessage = + [1690219617074] [38865:6571482] [DMG] { + [1690219617074] [38865:6571482] [DMG] SubscriptionId = 0x35250b41, + [1690219617074] [38865:6571482] [DMG] AttributeReportIBs = + [1690219617074] [38865:6571482] [DMG] [ + [1690219617074] [38865:6571482] [DMG] AttributeReportIB = + [1690219617074] [38865:6571482] [DMG] { + [1690219617074] [38865:6571482] [DMG] AttributeDataIB = + [1690219617074] [38865:6571482] [DMG] { + [1690219617074] [38865:6571482] [DMG] DataVersion = 0x1fddccdb, + [1690219617074] [38865:6571482] [DMG] AttributePathIB = + [1690219617074] [38865:6571482] [DMG] { + [1690219617074] [38865:6571482] [DMG] Endpoint = 0x0, + [1690219617074] [38865:6571482] [DMG] Cluster = 0x3c, + [1690219617075] [38865:6571482] [DMG] Attribute = 0x0000_0001, + [1690219617075] [38865:6571482] [DMG] } + [1690219617075] [38865:6571482] [DMG] + [1690219617075] [38865:6571482] [DMG] Data = 1, + [1690219617075] [38865:6571482] [DMG] }, + [1690219617075] [38865:6571482] [DMG] + [1690219617075] [38865:6571482] [DMG] }, + [1690219617075] [38865:6571482] [DMG] + [1690219617075] [38865:6571482] [DMG] ], + [1690219617075] [38865:6571482] [DMG] + [1690219617075] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219617075] [38865:6571482] [DMG] } + [1690219617075] [38865:6571482] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629595 + [1690219617075] [38865:6571482] [TOO] AdminFabricIndex: 1 + [1690219617075] [38865:6571482] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690219617075] [38865:6571482] [EM] <<< [E:50738r S:35778 M:151592235 (Ack:264355188)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690219617075] [38865:6571482] [IN] (S) Sending msg 151592235 on secure session with LSID: 35778 + [1690219617076] [38865:6571482] [EM] >>> [E:50739r S:35778 M:264355189] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690219617076] [38865:6571482] [EM] Handling via exchange: 50739r, Delegate: 0x1013c4be0 + [1690219617076] [38865:6571482] [DMG] ReportDataMessage = + [1690219617076] [38865:6571482] [DMG] { + [1690219617076] [38865:6571482] [DMG] SubscriptionId = 0xd3c6ff91, + [1690219617076] [38865:6571482] [DMG] AttributeReportIBs = + [1690219617076] [38865:6571482] [DMG] [ + [1690219617076] [38865:6571482] [DMG] AttributeReportIB = + [1690219617076] [38865:6571482] [DMG] { + [1690219617076] [38865:6571482] [DMG] AttributeDataIB = + [1690219617076] [38865:6571482] [DMG] { + [1690219617076] [38865:6571482] [DMG] DataVersion = 0x1fddccdb, + [1690219617076] [38865:6571482] [DMG] AttributePathIB = + [1690219617076] [38865:6571482] [DMG] { + [1690219617076] [38865:6571482] [DMG] Endpoint = 0x0, + [1690219617076] [38865:6571482] [DMG] Cluster = 0x3c, + [1690219617076] [38865:6571482] [DMG] Attribute = 0x0000_0002, + [1690219617076] [38865:6571482] [DMG] } + [1690219617076] [38865:6571482] [DMG] + [1690219617076] [38865:6571482] [DMG] Data = 65521, + [1690219617076] [38865:6571482] [DMG] }, + [1690219617076] [38865:6571482] [DMG] + [1690219617076] [38865:6571482] [DMG] }, + [1690219617076] [38865:6571482] [DMG] + [1690219617076] [38865:6571482] [DMG] ], + [1690219617076] [38865:6571482] [DMG] + [1690219617076] [38865:6571482] [DMG] InteractionModelRevision = 1 + [1690219617076] [38865:6571482] [DMG] } + [1690219617076] [38865:6571482] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629595 + [1690219617076] [38865:6571482] [TOO] AdminVendorId: 65521 + [1690219617076] [38865:6571482] [DMG] Refresh LivenessCheckTime for + disabled: true + + - label: "Step 7: TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S + verification: | + On TH_CR2 start interactive mode, + + ./chip-tool interactive start + + In the interactive mode of TH_CR2, start commissioning process using the pairing code obtained from step 5 + + pairing code 1 35092509167 --commissioner-name beta + + + [1690219788079] [38880:6580427] [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1690219788079] [38880:6580427] [CTL] Received CommissioningComplete response, errorCode=0 + [1690219788079] [38880:6580427] [CTL] Successfully finished commissioning step 'SendComplete' + [1690219788079] [38880:6580427] [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1690219788079] [38880:6580427] [CTL] Performing next commissioning step 'Cleanup' + [1690219788079] [38880:6580427] [IN] SecureSession[0x60000062c0f0]: MarkForEviction Type:1 LSID:15323 + [1690219788079] [38880:6580427] [SC] SecureSession[0x60000062c0f0, LSID:15323]: State change 'kActive' --> 'kPendingEviction' + [1690219788079] [38880:6580427] [IN] SecureSession[0x60000062c0f0]: Released - Type:1 LSID:15323 + [1690219788079] [38880:6580427] [CTL] Successfully finished commissioning step 'Cleanup' + [1690219788079] [38880:6580427] [TOO] Device commissioning completed with success + [1690219788079] [38880:6580427] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 8: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + Handling via exchange: 50740r, Delegate: 0x1013c4be0 + [1690219788240] [38865:6578589] [DMG] ReportDataMessage = + [1690219788240] [38865:6578589] [DMG] { + [1690219788240] [38865:6578589] [DMG] SubscriptionId = 0xdade5274, + [1690219788240] [38865:6578589] [DMG] AttributeReportIBs = + [1690219788240] [38865:6578589] [DMG] [ + [1690219788240] [38865:6578589] [DMG] AttributeReportIB = + [1690219788240] [38865:6578589] [DMG] { + [1690219788240] [38865:6578589] [DMG] AttributeDataIB = + [1690219788240] [38865:6578589] [DMG] { + [1690219788240] [38865:6578589] [DMG] DataVersion = 0x1fddccde, + [1690219788240] [38865:6578589] [DMG] AttributePathIB = + [1690219788240] [38865:6578589] [DMG] { + [1690219788240] [38865:6578589] [DMG] Endpoint = 0x0, + [1690219788240] [38865:6578589] [DMG] Cluster = 0x3c, + [1690219788240] [38865:6578589] [DMG] Attribute = 0x0000_0000, + [1690219788240] [38865:6578589] [DMG] } + [1690219788240] [38865:6578589] [DMG] + [1690219788240] [38865:6578589] [DMG] Data = 0, + [1690219788240] [38865:6578589] [DMG] }, + [1690219788240] [38865:6578589] [DMG] + [1690219788240] [38865:6578589] [DMG] }, + [1690219788240] [38865:6578589] [DMG] + [1690219788240] [38865:6578589] [DMG] ], + [1690219788240] [38865:6578589] [DMG] + [1690219788240] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690219788240] [38865:6578589] [DMG] } + [1690219788241] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629598 + [1690219788241] [38865:6578589] [TOO] WindowStatus: 0 + [1690219788241] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690219788241] [38865:6578589] [EM] <<< [E:50740r S:35778 M:151592237 (Ack:264355193)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690219788241] [38865:6578589] [IN] (S) Sending msg 151592237 on secure session with LSID: 35778 + [1690219788241] [38865:6578589] [EM] >>> [E:50741r S:35778 M:264355194] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690219788241] [38865:6578589] [EM] Handling via exchange: 50741r, Delegate: 0x1013c4be0 + [1690219788241] [38865:6578589] [DMG] ReportDataMessage = + [1690219788241] [38865:6578589] [DMG] { + [1690219788241] [38865:6578589] [DMG] SubscriptionId = 0x35250b41, + [1690219788241] [38865:6578589] [DMG] AttributeReportIBs = + [1690219788241] [38865:6578589] [DMG] [ + [1690219788241] [38865:6578589] [DMG] AttributeReportIB = + [1690219788241] [38865:6578589] [DMG] { + [1690219788241] [38865:6578589] [DMG] AttributeDataIB = + [1690219788241] [38865:6578589] [DMG] { + [1690219788241] [38865:6578589] [DMG] DataVersion = 0x1fddccde, + [1690219788241] [38865:6578589] [DMG] AttributePathIB = + [1690219788241] [38865:6578589] [DMG] { + [1690219788241] [38865:6578589] [DMG] Endpoint = 0x0, + [1690219788241] [38865:6578589] [DMG] Cluster = 0x3c, + [1690219788241] [38865:6578589] [DMG] Attribute = 0x0000_0001, + [1690219788241] [38865:6578589] [DMG] } + [1690219788241] [38865:6578589] [DMG] + [1690219788241] [38865:6578589] [DMG] Data = NULL + [1690219788241] [38865:6578589] [DMG] }, + [1690219788241] [38865:6578589] [DMG] + [1690219788241] [38865:6578589] [DMG] }, + [1690219788241] [38865:6578589] [DMG] + [1690219788241] [38865:6578589] [DMG] ], + [1690219788241] [38865:6578589] [DMG] + [1690219788241] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690219788241] [38865:6578589] [DMG] } + [1690219788241] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629598 + [1690219788241] [38865:6578589] [TOO] AdminFabricIndex: null + [1690219788241] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690219788242] [38865:6578589] [EM] <<< [E:50741r S:35778 M:151592238 (Ack:264355194)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690219788242] [38865:6578589] [IN] (S) Sending msg 151592238 on secure session with LSID: 35778 + [1690219788242] [38865:6578589] [EM] >>> [E:50742r S:35778 M:264355195] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690219788242] [38865:6578589] [EM] Handling via exchange: 50742r, Delegate: 0x1013c4be0 + [1690219788242] [38865:6578589] [DMG] ReportDataMessage = + [1690219788242] [38865:6578589] [DMG] { + [1690219788242] [38865:6578589] [DMG] SubscriptionId = 0xd3c6ff91, + [1690219788242] [38865:6578589] [DMG] AttributeReportIBs = + [1690219788242] [38865:6578589] [DMG] [ + [1690219788242] [38865:6578589] [DMG] AttributeReportIB = + [1690219788242] [38865:6578589] [DMG] { + [1690219788242] [38865:6578589] [DMG] AttributeDataIB = + [1690219788242] [38865:6578589] [DMG] { + [1690219788242] [38865:6578589] [DMG] DataVersion = 0x1fddccde, + [1690219788242] [38865:6578589] [DMG] AttributePathIB = + [1690219788242] [38865:6578589] [DMG] { + [1690219788242] [38865:6578589] [DMG] Endpoint = 0x0, + [1690219788242] [38865:6578589] [DMG] Cluster = 0x3c, + [1690219788242] [38865:6578589] [DMG] Attribute = 0x0000_0002, + [1690219788242] [38865:6578589] [DMG] } + [1690219788242] [38865:6578589] [DMG] + [1690219788242] [38865:6578589] [DMG] Data = NULL + [1690219788242] [38865:6578589] [DMG] }, + [1690219788242] [38865:6578589] [DMG] + [1690219788242] [38865:6578589] [DMG] }, + [1690219788242] [38865:6578589] [DMG] + [1690219788242] [38865:6578589] [DMG] ], + [1690219788242] [38865:6578589] [DMG] + [1690219788242] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690219788242] [38865:6578589] [DMG] } + [1690219788242] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629598 + [1690219788242] [38865:6578589] [TOO] AdminVendorId: null + [1690219788242] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xd3c6ff91 Peer = 01:0000000000000001 + [1690219788242] [38865:6578589] [EM] <<< [E:50742r S:35778 M:151592239 (Ack:264355195)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: "Step 9: TH_CR2 subscribes to WindowStatus attribute on DUT_CE" + PICS: CADMIN.S.A0000 + verification: | + In the interactive mode of TH_CR2, subscribe to windowstatus attribute, + + administratorcommissioning subscribe window-status 10 3000 1 0 --keepSubscriptions true --commissioner-name beta + + On the TH_CR2 logs, verify for windowstatus subscription notification + + ReportDataMessage = + [1690219925605] [38880:6580427] [DMG] { + [1690219925605] [38880:6580427] [DMG] SubscriptionId = 0xfab5d837, + [1690219925605] [38880:6580427] [DMG] AttributeReportIBs = + [1690219925605] [38880:6580427] [DMG] [ + [1690219925605] [38880:6580427] [DMG] AttributeReportIB = + [1690219925605] [38880:6580427] [DMG] { + [1690219925605] [38880:6580427] [DMG] AttributeDataIB = + [1690219925605] [38880:6580427] [DMG] { + [1690219925605] [38880:6580427] [DMG] DataVersion = 0x1fddccde, + [1690219925605] [38880:6580427] [DMG] AttributePathIB = + [1690219925605] [38880:6580427] [DMG] { + [1690219925605] [38880:6580427] [DMG] Endpoint = 0x0, + [1690219925605] [38880:6580427] [DMG] Cluster = 0x3c, + [1690219925605] [38880:6580427] [DMG] Attribute = 0x0000_0000, + [1690219925605] [38880:6580427] [DMG] } + [1690219925605] [38880:6580427] [DMG] + [1690219925605] [38880:6580427] [DMG] Data = 0, + [1690219925605] [38880:6580427] [DMG] }, + [1690219925605] [38880:6580427] [DMG] + [1690219925605] [38880:6580427] [DMG] }, + [1690219925605] [38880:6580427] [DMG] + [1690219925605] [38880:6580427] [DMG] ], + [1690219925605] [38880:6580427] [DMG] + [1690219925605] [38880:6580427] [DMG] InteractionModelRevision = 1 + [1690219925605] [38880:6580427] [DMG] } + [1690219925605] [38880:6580427] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629598 + [1690219925605] [38880:6580427] [TOO] WindowStatus: 0 + [1690219925605] [38880:6580427] [DMG] MoveToState ReadClient[0x12af05f80]: Moving to [AwaitingSu] + disabled: true + + - label: + "Step 10: TH_CR2 subscribes to AdminFabricIndex attribute on DUT_CE" + PICS: CADMIN.S.A0001 + verification: | + In the interactive mode of TH_CR2, subscribe to adminfabricindex attribute, + + administratorcommissioning subscribe admin-fabric-index 10 3000 1 0 --keepSubscriptions true --commissioner-name beta + + On the TH_CR2 logs, verify for adminfabricindex subscription notification + + ReportDataMessage = + [1690219962624] [38880:6580427] [DMG] { + [1690219962624] [38880:6580427] [DMG] SubscriptionId = 0x5984e13a, + [1690219962624] [38880:6580427] [DMG] AttributeReportIBs = + [1690219962624] [38880:6580427] [DMG] [ + [1690219962624] [38880:6580427] [DMG] AttributeReportIB = + [1690219962624] [38880:6580427] [DMG] { + [1690219962624] [38880:6580427] [DMG] AttributeDataIB = + [1690219962624] [38880:6580427] [DMG] { + [1690219962624] [38880:6580427] [DMG] DataVersion = 0x1fddccde, + [1690219962624] [38880:6580427] [DMG] AttributePathIB = + [1690219962624] [38880:6580427] [DMG] { + [1690219962624] [38880:6580427] [DMG] Endpoint = 0x0, + [1690219962624] [38880:6580427] [DMG] Cluster = 0x3c, + [1690219962624] [38880:6580427] [DMG] Attribute = 0x0000_0001, + [1690219962624] [38880:6580427] [DMG] } + [1690219962624] [38880:6580427] [DMG] + [1690219962624] [38880:6580427] [DMG] Data = NULL + [1690219962624] [38880:6580427] [DMG] }, + [1690219962624] [38880:6580427] [DMG] + [1690219962624] [38880:6580427] [DMG] }, + [1690219962624] [38880:6580427] [DMG] + [1690219962624] [38880:6580427] [DMG] ], + [1690219962624] [38880:6580427] [DMG] + [1690219962624] [38880:6580427] [DMG] InteractionModelRevision = 1 + [1690219962624] [38880:6580427] [DMG] } + [1690219962624] [38880:6580427] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629598 + [1690219962624] [38880:6580427] [TOO] AdminFabricIndex: null + disabled: true + + - label: "Step 11: TH_CR2 subscribes to AdminVendorId attribute on DUT_CE" + PICS: CADMIN.S.A0002 + verification: | + In the interactive mode of TH_CR2, subscribe to adminvendorid attribute, + + administratorcommissioning subscribe admin-vendor-id 10 3000 1 0 --keepSubscriptions true --commissioner-name beta + + On the TH_CR2 logs, verify for adminvendorid subscription notification + + ReportDataMessage = + [1690220032050] [38880:6580427] [DMG] { + [1690220032050] [38880:6580427] [DMG] SubscriptionId = 0x943b5fc3, + [1690220032050] [38880:6580427] [DMG] AttributeReportIBs = + [1690220032050] [38880:6580427] [DMG] [ + [1690220032050] [38880:6580427] [DMG] AttributeReportIB = + [1690220032050] [38880:6580427] [DMG] { + [1690220032050] [38880:6580427] [DMG] AttributeDataIB = + [1690220032050] [38880:6580427] [DMG] { + [1690220032050] [38880:6580427] [DMG] DataVersion = 0x1fddccde, + [1690220032050] [38880:6580427] [DMG] AttributePathIB = + [1690220032050] [38880:6580427] [DMG] { + [1690220032050] [38880:6580427] [DMG] Endpoint = 0x0, + [1690220032050] [38880:6580427] [DMG] Cluster = 0x3c, + [1690220032050] [38880:6580427] [DMG] Attribute = 0x0000_0002, + [1690220032050] [38880:6580427] [DMG] } + [1690220032050] [38880:6580427] [DMG] + [1690220032050] [38880:6580427] [DMG] Data = NULL + [1690220032050] [38880:6580427] [DMG] }, + [1690220032050] [38880:6580427] [DMG] + [1690220032050] [38880:6580427] [DMG] }, + [1690220032050] [38880:6580427] [DMG] + [1690220032050] [38880:6580427] [DMG] ], + [1690220032050] [38880:6580427] [DMG] + [1690220032050] [38880:6580427] [DMG] InteractionModelRevision = 1 + [1690220032050] [38880:6580427] [DMG] } + [1690220032050] [38880:6580427] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629598 + [1690220032050] [38880:6580427] [TOO] AdminVendorId: null + [1690220032050] [38880:6580427] [DMG] MoveToState ReadClient[0x12c8042d0]: Moving to [AwaitingSu] + disabled: true + + - label: + "Step 12: TH_CR1 opens a commissioning window on DUT_CE using ECM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C00.Rsp + verification: | + In the interactive mode of TH_CR1, send command to open commissioning window using ECM, + + pairing open-commissioning-window 1 1 180 1000 3840 --commissioner-name alpha + + On TH_CR1 logs, verify for pairing window to be successfully opened + + + InvokeResponseMessage = + + [1690220086788] [38865:6578589] [DMG] { + [1690220086788] [38865:6578589] [DMG] suppressResponse = false, + [1690220086788] [38865:6578589] [DMG] InvokeResponseIBs = + [1690220086788] [38865:6578589] [DMG] [ + [1690220086788] [38865:6578589] [DMG] InvokeResponseIB = + [1690220086788] [38865:6578589] [DMG] { + [1690220086788] [38865:6578589] [DMG] CommandStatusIB = + [1690220086788] [38865:6578589] [DMG] { + [1690220086788] [38865:6578589] [DMG] CommandPathIB = + [1690220086788] [38865:6578589] [DMG] { + [1690220086788] [38865:6578589] [DMG] EndpointId = 0x0, + [1690220086788] [38865:6578589] [DMG] ClusterId = 0x3c, + [1690220086788] [38865:6578589] [DMG] CommandId = 0x0, + [1690220086788] [38865:6578589] [DMG] }, + [1690220086788] [38865:6578589] [DMG] + [1690220086788] [38865:6578589] [DMG] StatusIB = + [1690220086788] [38865:6578589] [DMG] { + [1690220086788] [38865:6578589] [DMG] status = 0x00 (SUCCESS), + [1690220086788] [38865:6578589] [DMG] }, + [1690220086788] [38865:6578589] [DMG] + [1690220086788] [38865:6578589] [DMG] }, + [1690220086788] [38865:6578589] [DMG] + [1690220086788] [38865:6578589] [DMG] }, + [1690220086788] [38865:6578589] [DMG] + [1690220086788] [38865:6578589] [DMG] ], + [1690220086788] [38865:6578589] [DMG] + [1690220086788] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220086788] [38865:6578589] [DMG] }, + [1690220086788] [38865:6578589] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 + [1690220086788] [38865:6578589] [CTL] Successfully opened pairing window on the device + [1690220086788] [38865:6578589] [CTL] Manual pairing code: [34983924769] + [1690220086788] [38865:6578589] [CTL] SetupQRCode: [MT:-24J0AFN002ZF60MW00] + [1690220086788] [38865:6578589] [DMG] ICR moving to [AwaitingDe] + [1690220086788] [38865:6578589] [EM] <<< [E:27145i S:35778 M:151592246 (Ack:264355202)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 13: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR1s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR1s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR1’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR1’s fabric + + ReportDataMessage = + [1690220086789] [38865:6578589] [DMG] { + [1690220086789] [38865:6578589] [DMG] SubscriptionId = 0xdade5274, + [1690220086789] [38865:6578589] [DMG] AttributeReportIBs = + [1690220086789] [38865:6578589] [DMG] [ + [1690220086789] [38865:6578589] [DMG] AttributeReportIB = + [1690220086789] [38865:6578589] [DMG] { + [1690220086789] [38865:6578589] [DMG] AttributeDataIB = + [1690220086789] [38865:6578589] [DMG] { + [1690220086789] [38865:6578589] [DMG] DataVersion = 0x1fddcce1, + [1690220086789] [38865:6578589] [DMG] AttributePathIB = + [1690220086789] [38865:6578589] [DMG] { + [1690220086789] [38865:6578589] [DMG] Endpoint = 0x0, + [1690220086789] [38865:6578589] [DMG] Cluster = 0x3c, + [1690220086789] [38865:6578589] [DMG] Attribute = 0x0000_0000, + [1690220086789] [38865:6578589] [DMG] } + [1690220086789] [38865:6578589] [DMG] + [1690220086789] [38865:6578589] [DMG] Data = 1, + [1690220086789] [38865:6578589] [DMG] }, + [1690220086789] [38865:6578589] [DMG] + [1690220086789] [38865:6578589] [DMG] }, + [1690220086789] [38865:6578589] [DMG] + [1690220086789] [38865:6578589] [DMG] ], + [1690220086789] [38865:6578589] [DMG] + [1690220086789] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220086789] [38865:6578589] [DMG] } + [1690220086789] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629601 + [1690220086789] [38865:6578589] [TOO] WindowStatus: 1 + [1690220086789] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690220086789] [38865:6578589] [EM] <<< [E:50743r S:35778 M:151592247 (Ack:264355203)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220086789] [38865:6578589] [IN] (S) Sending msg 151592247 on secure session with LSID: 35778 + [1690220086793] [38865:6578589] [EM] >>> [E:50744r S:35778 M:264355204] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220086793] [38865:6578589] [EM] Handling via exchange: 50744r, Delegate: 0x1013c4be0 + [1690220086793] [38865:6578589] [DMG] ReportDataMessage = + [1690220086793] [38865:6578589] [DMG] { + [1690220086793] [38865:6578589] [DMG] SubscriptionId = 0x35250b41, + [1690220086793] [38865:6578589] [DMG] AttributeReportIBs = + [1690220086793] [38865:6578589] [DMG] [ + [1690220086793] [38865:6578589] [DMG] AttributeReportIB = + [1690220086793] [38865:6578589] [DMG] { + [1690220086793] [38865:6578589] [DMG] AttributeDataIB = + [1690220086793] [38865:6578589] [DMG] { + [1690220086793] [38865:6578589] [DMG] DataVersion = 0x1fddcce1, + [1690220086793] [38865:6578589] [DMG] AttributePathIB = + [1690220086794] [38865:6578589] [DMG] { + [1690220086794] [38865:6578589] [DMG] Endpoint = 0x0, + [1690220086794] [38865:6578589] [DMG] Cluster = 0x3c, + [1690220086794] [38865:6578589] [DMG] Attribute = 0x0000_0001, + [1690220086794] [38865:6578589] [DMG] } + [1690220086794] [38865:6578589] [DMG] + [1690220086794] [38865:6578589] [DMG] Data = 1, + [1690220086794] [38865:6578589] [DMG] }, + [1690220086794] [38865:6578589] [DMG] + [1690220086794] [38865:6578589] [DMG] }, + [1690220086794] [38865:6578589] [DMG] + [1690220086794] [38865:6578589] [DMG] ], + [1690220086794] [38865:6578589] [DMG] + [1690220086794] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220086794] [38865:6578589] [DMG] } + [1690220086794] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629601 + [1690220086794] [38865:6578589] [TOO] AdminFabricIndex: 1 + [1690220086794] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690220086794] [38865:6578589] [EM] <<< [E:50744r S:35778 M:151592248 (Ack:264355204)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220086794] [38865:6578589] [IN] (S) Sending msg 151592248 on secure session with LSID: 35778 + [1690220086794] [38865:6578589] [EM] >>> [E:50745r S:35778 M:264355205] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220086794] [38865:6578589] [EM] Handling via exchange: 50745r, Delegate: 0x1013c4be0 + [1690220086794] [38865:6578589] [DMG] ReportDataMessage = + [1690220086794] [38865:6578589] [DMG] { + [1690220086794] [38865:6578589] [DMG] SubscriptionId = 0xd3c6ff91, + [1690220086794] [38865:6578589] [DMG] AttributeReportIBs = + [1690220086794] [38865:6578589] [DMG] [ + [1690220086794] [38865:6578589] [DMG] AttributeReportIB = + [1690220086794] [38865:6578589] [DMG] { + [1690220086794] [38865:6578589] [DMG] AttributeDataIB = + [1690220086794] [38865:6578589] [DMG] { + [1690220086794] [38865:6578589] [DMG] DataVersion = 0x1fddcce1, + [1690220086794] [38865:6578589] [DMG] AttributePathIB = + [1690220086794] [38865:6578589] [DMG] { + [1690220086794] [38865:6578589] [DMG] Endpoint = 0x0, + [1690220086794] [38865:6578589] [DMG] Cluster = 0x3c, + [1690220086794] [38865:6578589] [DMG] Attribute = 0x0000_0002, + [1690220086794] [38865:6578589] [DMG] } + [1690220086794] [38865:6578589] [DMG] + [1690220086794] [38865:6578589] [DMG] Data = 65521, + [1690220086794] [38865:6578589] [DMG] }, + [1690220086794] [38865:6578589] [DMG] + [1690220086794] [38865:6578589] [DMG] }, + [1690220086795] [38865:6578589] [DMG] + [1690220086795] [38865:6578589] [DMG] ], + [1690220086795] [38865:6578589] [DMG] + [1690220086795] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220086795] [38865:6578589] [DMG] } + [1690220086795] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629601 + [1690220086795] [38865:6578589] [TOO] AdminVendorId: 65521 + [1690220086795] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xd3c6ff91 Peer = 01:0000000000000001 + [1690220086795] [38865:6578589] [EM] <<< [E:50745r S:35778 M:151592249 (Ack:264355205)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 14: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR1s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR1s fabric" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR1’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR1’s fabric + + + ReportDataMessage = + [1690220086799] [38880:6583668] [DMG] { + [1690220086799] [38880:6583668] [DMG] SubscriptionId = 0xfab5d837, + [1690220086799] [38880:6583668] [DMG] AttributeReportIBs = + [1690220086799] [38880:6583668] [DMG] [ + [1690220086799] [38880:6583668] [DMG] AttributeReportIB = + [1690220086799] [38880:6583668] [DMG] { + [1690220086799] [38880:6583668] [DMG] AttributeDataIB = + [1690220086799] [38880:6583668] [DMG] { + [1690220086799] [38880:6583668] [DMG] DataVersion = 0x1fddcce1, + [1690220086799] [38880:6583668] [DMG] AttributePathIB = + [1690220086799] [38880:6583668] [DMG] { + [1690220086799] [38880:6583668] [DMG] Endpoint = 0x0, + [1690220086799] [38880:6583668] [DMG] Cluster = 0x3c, + [1690220086799] [38880:6583668] [DMG] Attribute = 0x0000_0000, + [1690220086799] [38880:6583668] [DMG] } + [1690220086799] [38880:6583668] [DMG] + [1690220086799] [38880:6583668] [DMG] Data = 1, + [1690220086799] [38880:6583668] [DMG] }, + [1690220086799] [38880:6583668] [DMG] + [1690220086799] [38880:6583668] [DMG] }, + [1690220086799] [38880:6583668] [DMG] + [1690220086799] [38880:6583668] [DMG] ], + [1690220086799] [38880:6583668] [DMG] + [1690220086799] [38880:6583668] [DMG] InteractionModelRevision = 1 + [1690220086799] [38880:6583668] [DMG] } + [1690220086800] [38880:6583668] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629601 + [1690220086800] [38880:6583668] [TOO] WindowStatus: 1 + [1690220086800] [38880:6583668] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfab5d837 Peer = 02:0000000000000001 + [1690220086800] [38880:6583668] [EM] <<< [E:50746r S:15324 M:785247 (Ack:104911015)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220086800] [38880:6583668] [IN] (S) Sending msg 785247 on secure session with LSID: 15324 + [1690220086806] [38880:6583668] [EM] >>> [E:50747r S:15324 M:104911016] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220086806] [38880:6583668] [EM] Handling via exchange: 50747r, Delegate: 0x1035c8be0 + [1690220086806] [38880:6583668] [DMG] ReportDataMessage = + [1690220086806] [38880:6583668] [DMG] { + [1690220086806] [38880:6583668] [DMG] SubscriptionId = 0x5984e13a, + [1690220086806] [38880:6583668] [DMG] AttributeReportIBs = + [1690220086806] [38880:6583668] [DMG] [ + [1690220086806] [38880:6583668] [DMG] AttributeReportIB = + [1690220086806] [38880:6583668] [DMG] { + [1690220086806] [38880:6583668] [DMG] AttributeDataIB = + [1690220086806] [38880:6583668] [DMG] { + [1690220086806] [38880:6583668] [DMG] DataVersion = 0x1fddcce1, + [1690220086806] [38880:6583668] [DMG] AttributePathIB = + [1690220086806] [38880:6583668] [DMG] { + [1690220086806] [38880:6583668] [DMG] Endpoint = 0x0, + [1690220086806] [38880:6583668] [DMG] Cluster = 0x3c, + [1690220086806] [38880:6583668] [DMG] Attribute = 0x0000_0001, + [1690220086807] [38880:6583668] [DMG] } + [1690220086807] [38880:6583668] [DMG] + [1690220086807] [38880:6583668] [DMG] Data = 1, + [1690220086807] [38880:6583668] [DMG] }, + [1690220086807] [38880:6583668] [DMG] + [1690220086807] [38880:6583668] [DMG] }, + [1690220086807] [38880:6583668] [DMG] + [1690220086807] [38880:6583668] [DMG] ], + [1690220086807] [38880:6583668] [DMG] + [1690220086807] [38880:6583668] [DMG] InteractionModelRevision = 1 + [1690220086807] [38880:6583668] [DMG] } + [1690220086807] [38880:6583668] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629601 + [1690220086807] [38880:6583668] [TOO] AdminFabricIndex: 1 + [1690220086807] [38880:6583668] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x5984e13a Peer = 02:0000000000000001 + [1690220086807] [38880:6583668] [EM] <<< [E:50747r S:15324 M:785248 (Ack:104911016)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220086807] [38880:6583668] [IN] (S) Sending msg 785248 on secure session with LSID: 15324 + [1690220086811] [38880:6583668] [EM] >>> [E:50748r S:15324 M:104911017] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220086811] [38880:6583668] [EM] Handling via exchange: 50748r, Delegate: 0x1035c8be0 + [1690220086811] [38880:6583668] [DMG] ReportDataMessage = + [1690220086811] [38880:6583668] [DMG] { + [1690220086811] [38880:6583668] [DMG] SubscriptionId = 0x943b5fc3, + [1690220086811] [38880:6583668] [DMG] AttributeReportIBs = + [1690220086811] [38880:6583668] [DMG] [ + [1690220086811] [38880:6583668] [DMG] AttributeReportIB = + [1690220086811] [38880:6583668] [DMG] { + [1690220086811] [38880:6583668] [DMG] AttributeDataIB = + [1690220086811] [38880:6583668] [DMG] { + [1690220086811] [38880:6583668] [DMG] DataVersion = 0x1fddcce1, + [1690220086811] [38880:6583668] [DMG] AttributePathIB = + [1690220086811] [38880:6583668] [DMG] { + [1690220086811] [38880:6583668] [DMG] Endpoint = 0x0, + [1690220086811] [38880:6583668] [DMG] Cluster = 0x3c, + [1690220086811] [38880:6583668] [DMG] Attribute = 0x0000_0002, + [1690220086811] [38880:6583668] [DMG] } + [1690220086811] [38880:6583668] [DMG] + [1690220086811] [38880:6583668] [DMG] Data = 65521, + [1690220086811] [38880:6583668] [DMG] }, + [1690220086812] [38880:6583668] [DMG] + [1690220086812] [38880:6583668] [DMG] }, + [1690220086812] [38880:6583668] [DMG] + [1690220086812] [38880:6583668] [DMG] ], + [1690220086812] [38880:6583668] [DMG] + [1690220086812] [38880:6583668] [DMG] InteractionModelRevision = 1 + [1690220086812] [38880:6583668] [DMG] } + [1690220086812] [38880:6583668] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629601 + [1690220086812] [38880:6583668] [TOO] AdminVendorId: 65521 + [1690220086812] [38880:6583668] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x943b5fc3 Peer = 02:0000000000000001 + [1690220086812] [38880:6583668] [EM] <<< [E:50748r S:15324 M:785249 (Ack:104911017)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 15: TH_CR1 revokes the commissioning window on DUT_CE using + RevokeCommissioning command" + PICS: CADMIN.S.C02.Rsp + verification: | + In interactive mode of TH_CR1, send command to revoke commissioning window + + administratorcommissioning revoke-commissioning 1 0 --commissioner-name alpha --timedInteractionTimeoutMs 1000 + + Verify TH_CR1 logs for status code 0 (success), + + InvokeResponseMessage = + [1690220246114] [38865:6578589] [DMG] { + [1690220246114] [38865:6578589] [DMG] suppressResponse = false, + [1690220246114] [38865:6578589] [DMG] InvokeResponseIBs = + [1690220246114] [38865:6578589] [DMG] [ + [1690220246114] [38865:6578589] [DMG] InvokeResponseIB = + [1690220246114] [38865:6578589] [DMG] { + [1690220246114] [38865:6578589] [DMG] CommandStatusIB = + [1690220246114] [38865:6578589] [DMG] { + [1690220246114] [38865:6578589] [DMG] CommandPathIB = + [1690220246114] [38865:6578589] [DMG] { + [1690220246114] [38865:6578589] [DMG] EndpointId = 0x0, + [1690220246114] [38865:6578589] [DMG] ClusterId = 0x3c, + [1690220246114] [38865:6578589] [DMG] CommandId = 0x2, + [1690220246114] [38865:6578589] [DMG] }, + [1690220246114] [38865:6578589] [DMG] + [1690220246114] [38865:6578589] [DMG] StatusIB = + [1690220246114] [38865:6578589] [DMG] { + [1690220246114] [38865:6578589] [DMG] status = 0x00 (SUCCESS), + [1690220246114] [38865:6578589] [DMG] }, + [1690220246114] [38865:6578589] [DMG] + [1690220246114] [38865:6578589] [DMG] }, + [1690220246114] [38865:6578589] [DMG] + [1690220246114] [38865:6578589] [DMG] }, + [1690220246114] [38865:6578589] [DMG] + [1690220246114] [38865:6578589] [DMG] ], + [1690220246114] [38865:6578589] [DMG] + [1690220246114] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220246114] [38865:6578589] [DMG] }, + [1690220246114] [38865:6578589] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x0 + [1690220246114] [38865:6578589] [DMG] ICR moving to [AwaitingDe] + [1690220246114] [38865:6578589] [EM] <<< [E:27146i S:35778 M:151592252 (Ack:264355210)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 16: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + + ReportDataMessage = + [1690220246116] [38865:6578589] [DMG] { + [1690220246116] [38865:6578589] [DMG] SubscriptionId = 0xdade5274, + [1690220246116] [38865:6578589] [DMG] AttributeReportIBs = + [1690220246116] [38865:6578589] [DMG] [ + [1690220246116] [38865:6578589] [DMG] AttributeReportIB = + [1690220246116] [38865:6578589] [DMG] { + [1690220246116] [38865:6578589] [DMG] AttributeDataIB = + [1690220246116] [38865:6578589] [DMG] { + [1690220246116] [38865:6578589] [DMG] DataVersion = 0x1fddcce4, + [1690220246116] [38865:6578589] [DMG] AttributePathIB = + [1690220246116] [38865:6578589] [DMG] { + [1690220246116] [38865:6578589] [DMG] Endpoint = 0x0, + [1690220246116] [38865:6578589] [DMG] Cluster = 0x3c, + [1690220246116] [38865:6578589] [DMG] Attribute = 0x0000_0000, + [1690220246116] [38865:6578589] [DMG] } + [1690220246117] [38865:6578589] [DMG] + [1690220246117] [38865:6578589] [DMG] Data = 0, + [1690220246117] [38865:6578589] [DMG] }, + [1690220246117] [38865:6578589] [DMG] + [1690220246117] [38865:6578589] [DMG] }, + [1690220246117] [38865:6578589] [DMG] + [1690220246117] [38865:6578589] [DMG] ], + [1690220246117] [38865:6578589] [DMG] + [1690220246117] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220246117] [38865:6578589] [DMG] } + [1690220246117] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629604 + [1690220246117] [38865:6578589] [TOO] WindowStatus: 0 + [1690220246117] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690220246117] [38865:6578589] [EM] <<< [E:50749r S:35778 M:151592253 (Ack:264355211)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220246117] [38865:6578589] [IN] (S) Sending msg 151592253 on secure session with LSID: 35778 + [1690220246120] [38865:6578589] [EM] >>> [E:50750r S:35778 M:264355212] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220246120] [38865:6578589] [EM] Handling via exchange: 50750r, Delegate: 0x1013c4be0 + [1690220246120] [38865:6578589] [DMG] ReportDataMessage = + [1690220246120] [38865:6578589] [DMG] { + [1690220246120] [38865:6578589] [DMG] SubscriptionId = 0x35250b41, + [1690220246120] [38865:6578589] [DMG] AttributeReportIBs = + [1690220246120] [38865:6578589] [DMG] [ + [1690220246120] [38865:6578589] [DMG] AttributeReportIB = + [1690220246120] [38865:6578589] [DMG] { + [1690220246120] [38865:6578589] [DMG] AttributeDataIB = + [1690220246120] [38865:6578589] [DMG] { + [1690220246120] [38865:6578589] [DMG] DataVersion = 0x1fddcce4, + [1690220246120] [38865:6578589] [DMG] AttributePathIB = + [1690220246120] [38865:6578589] [DMG] { + [1690220246120] [38865:6578589] [DMG] Endpoint = 0x0, + [1690220246120] [38865:6578589] [DMG] Cluster = 0x3c, + [1690220246120] [38865:6578589] [DMG] Attribute = 0x0000_0001, + [1690220246120] [38865:6578589] [DMG] } + [1690220246120] [38865:6578589] [DMG] + [1690220246120] [38865:6578589] [DMG] Data = NULL + [1690220246120] [38865:6578589] [DMG] }, + [1690220246120] [38865:6578589] [DMG] + [1690220246120] [38865:6578589] [DMG] }, + [1690220246120] [38865:6578589] [DMG] + [1690220246120] [38865:6578589] [DMG] ], + [1690220246120] [38865:6578589] [DMG] + [1690220246120] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220246120] [38865:6578589] [DMG] } + [1690220246120] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629604 + [1690220246120] [38865:6578589] [TOO] AdminFabricIndex: null + [1690220246120] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690220246120] [38865:6578589] [EM] <<< [E:50750r S:35778 M:151592254 (Ack:264355212)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220246120] [38865:6578589] [IN] (S) Sending msg 151592254 on secure session with LSID: 35778 + [1690220246123] [38865:6578589] [EM] >>> [E:50751r S:35778 M:264355213] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220246123] [38865:6578589] [EM] Handling via exchange: 50751r, Delegate: 0x1013c4be0 + [1690220246123] [38865:6578589] [DMG] ReportDataMessage = + [1690220246123] [38865:6578589] [DMG] { + [1690220246123] [38865:6578589] [DMG] SubscriptionId = 0xd3c6ff91, + [1690220246123] [38865:6578589] [DMG] AttributeReportIBs = + [1690220246123] [38865:6578589] [DMG] [ + [1690220246123] [38865:6578589] [DMG] AttributeReportIB = + [1690220246123] [38865:6578589] [DMG] { + [1690220246123] [38865:6578589] [DMG] AttributeDataIB = + [1690220246123] [38865:6578589] [DMG] { + [1690220246123] [38865:6578589] [DMG] DataVersion = 0x1fddcce4, + [1690220246123] [38865:6578589] [DMG] AttributePathIB = + [1690220246123] [38865:6578589] [DMG] { + [1690220246123] [38865:6578589] [DMG] Endpoint = 0x0, + [1690220246123] [38865:6578589] [DMG] Cluster = 0x3c, + [1690220246123] [38865:6578589] [DMG] Attribute = 0x0000_0002, + [1690220246123] [38865:6578589] [DMG] } + [1690220246123] [38865:6578589] [DMG] + [1690220246123] [38865:6578589] [DMG] Data = NULL + [1690220246123] [38865:6578589] [DMG] }, + [1690220246123] [38865:6578589] [DMG] + [1690220246123] [38865:6578589] [DMG] }, + [1690220246123] [38865:6578589] [DMG] + [1690220246123] [38865:6578589] [DMG] ], + [1690220246123] [38865:6578589] [DMG] + [1690220246123] [38865:6578589] [DMG] InteractionModelRevision = 1 + [1690220246123] [38865:6578589] [DMG] } + [1690220246123] [38865:6578589] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629604 + [1690220246123] [38865:6578589] [TOO] AdminVendorId: null + [1690220246123] [38865:6578589] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xd3c6ff91 Peer = 01:0000000000000001 + [1690220246123] [38865:6578589] [EM] <<< [E:50751r S:35778 M:151592255 (Ack:264355213)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 17: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + ReportDataMessage = + [1690220246125] [38880:6584521] [DMG] { + [1690220246125] [38880:6584521] [DMG] SubscriptionId = 0xfab5d837, + [1690220246125] [38880:6584521] [DMG] AttributeReportIBs = + [1690220246125] [38880:6584521] [DMG] [ + [1690220246125] [38880:6584521] [DMG] AttributeReportIB = + [1690220246125] [38880:6584521] [DMG] { + [1690220246125] [38880:6584521] [DMG] AttributeDataIB = + [1690220246125] [38880:6584521] [DMG] { + [1690220246125] [38880:6584521] [DMG] DataVersion = 0x1fddcce4, + [1690220246125] [38880:6584521] [DMG] AttributePathIB = + [1690220246125] [38880:6584521] [DMG] { + [1690220246125] [38880:6584521] [DMG] Endpoint = 0x0, + [1690220246125] [38880:6584521] [DMG] Cluster = 0x3c, + [1690220246125] [38880:6584521] [DMG] Attribute = 0x0000_0000, + [1690220246125] [38880:6584521] [DMG] } + [1690220246125] [38880:6584521] [DMG] + [1690220246125] [38880:6584521] [DMG] Data = 0, + [1690220246125] [38880:6584521] [DMG] }, + [1690220246125] [38880:6584521] [DMG] + [1690220246125] [38880:6584521] [DMG] }, + [1690220246125] [38880:6584521] [DMG] + [1690220246125] [38880:6584521] [DMG] ], + [1690220246125] [38880:6584521] [DMG] + [1690220246125] [38880:6584521] [DMG] InteractionModelRevision = 1 + [1690220246125] [38880:6584521] [DMG] } + [1690220246125] [38880:6584521] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629604 + [1690220246125] [38880:6584521] [TOO] WindowStatus: 0 + [1690220246125] [38880:6584521] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfab5d837 Peer = 02:0000000000000001 + [1690220246125] [38880:6584521] [EM] <<< [E:50752r S:15324 M:785250 (Ack:104911021)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220246125] [38880:6584521] [IN] (S) Sending msg 785250 on secure session with LSID: 15324 + [1690220246148] [38880:6584521] [EM] >>> [E:50753r S:15324 M:104911022] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220246148] [38880:6584521] [EM] Handling via exchange: 50753r, Delegate: 0x1035c8be0 + [1690220246148] [38880:6584521] [DMG] ReportDataMessage = + [1690220246148] [38880:6584521] [DMG] { + [1690220246148] [38880:6584521] [DMG] SubscriptionId = 0x5984e13a, + [1690220246148] [38880:6584521] [DMG] AttributeReportIBs = + [1690220246148] [38880:6584521] [DMG] [ + [1690220246148] [38880:6584521] [DMG] AttributeReportIB = + [1690220246148] [38880:6584521] [DMG] { + [1690220246148] [38880:6584521] [DMG] AttributeDataIB = + [1690220246148] [38880:6584521] [DMG] { + [1690220246148] [38880:6584521] [DMG] DataVersion = 0x1fddcce4, + [1690220246148] [38880:6584521] [DMG] AttributePathIB = + [1690220246148] [38880:6584521] [DMG] { + [1690220246148] [38880:6584521] [DMG] Endpoint = 0x0, + [1690220246148] [38880:6584521] [DMG] Cluster = 0x3c, + [1690220246148] [38880:6584521] [DMG] Attribute = 0x0000_0001, + [1690220246148] [38880:6584521] [DMG] } + [1690220246148] [38880:6584521] [DMG] + [1690220246148] [38880:6584521] [DMG] Data = NULL + [1690220246148] [38880:6584521] [DMG] }, + [1690220246148] [38880:6584521] [DMG] + [1690220246148] [38880:6584521] [DMG] }, + [1690220246148] [38880:6584521] [DMG] + [1690220246148] [38880:6584521] [DMG] ], + [1690220246148] [38880:6584521] [DMG] + [1690220246148] [38880:6584521] [DMG] InteractionModelRevision = 1 + [1690220246148] [38880:6584521] [DMG] } + [1690220246149] [38880:6584521] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629604 + [1690220246149] [38880:6584521] [TOO] AdminFabricIndex: null + [1690220246149] [38880:6584521] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x5984e13a Peer = 02:0000000000000001 + [1690220246149] [38880:6584521] [EM] <<< [E:50753r S:15324 M:785251 (Ack:104911022)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220246149] [38880:6584521] [IN] (S) Sending msg 785251 on secure session with LSID: 15324 + [1690220246155] [38880:6584521] [EM] >>> [E:50754r S:15324 M:104911023] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220246155] [38880:6584521] [EM] Handling via exchange: 50754r, Delegate: 0x1035c8be0 + [1690220246155] [38880:6584521] [DMG] ReportDataMessage = + [1690220246155] [38880:6584521] [DMG] { + [1690220246155] [38880:6584521] [DMG] SubscriptionId = 0x943b5fc3, + [1690220246155] [38880:6584521] [DMG] AttributeReportIBs = + [1690220246155] [38880:6584521] [DMG] [ + [1690220246155] [38880:6584521] [DMG] AttributeReportIB = + [1690220246155] [38880:6584521] [DMG] { + [1690220246155] [38880:6584521] [DMG] AttributeDataIB = + [1690220246155] [38880:6584521] [DMG] { + [1690220246155] [38880:6584521] [DMG] DataVersion = 0x1fddcce4, + [1690220246155] [38880:6584521] [DMG] AttributePathIB = + [1690220246155] [38880:6584521] [DMG] { + [1690220246155] [38880:6584521] [DMG] Endpoint = 0x0, + [1690220246155] [38880:6584521] [DMG] Cluster = 0x3c, + [1690220246155] [38880:6584521] [DMG] Attribute = 0x0000_0002, + [1690220246155] [38880:6584521] [DMG] } + [1690220246155] [38880:6584521] [DMG] + [1690220246155] [38880:6584521] [DMG] Data = NULL + [1690220246155] [38880:6584521] [DMG] }, + [1690220246155] [38880:6584521] [DMG] + [1690220246155] [38880:6584521] [DMG] }, + [1690220246155] [38880:6584521] [DMG] + [1690220246155] [38880:6584521] [DMG] ], + [1690220246155] [38880:6584521] [DMG] + [1690220246155] [38880:6584521] [DMG] InteractionModelRevision = 1 + [1690220246155] [38880:6584521] [DMG] } + [1690220246155] [38880:6584521] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629604 + [1690220246155] [38880:6584521] [TOO] AdminVendorId: null + [1690220246155] [38880:6584521] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x943b5fc3 Peer = 02:0000000000000001 + [1690220246155] [38880:6584521] [EM] <<< [E:50754r S:15324 M:785252 (Ack:104911023)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 18: TH_CR2 opens a commissioning window on DUT_CE using ECM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C00.Rsp + verification: | + In interactive mode of TH_CR2, send command to open commissioning window using ECM + + pairing open-commissioning-window 1 1 180 1000 3840 --commissioner-name beta + + On TH_CR2 logs, verify for commissioning window to be open + + InvokeResponseMessage = + [1690220435293] [38880:6589609] [DMG] { + [1690220435293] [38880:6589609] [DMG] suppressResponse = false, + [1690220435293] [38880:6589609] [DMG] InvokeResponseIBs = + [1690220435293] [38880:6589609] [DMG] [ + [1690220435293] [38880:6589609] [DMG] InvokeResponseIB = + [1690220435293] [38880:6589609] [DMG] { + [1690220435293] [38880:6589609] [DMG] CommandStatusIB = + [1690220435293] [38880:6589609] [DMG] { + [1690220435293] [38880:6589609] [DMG] CommandPathIB = + [1690220435293] [38880:6589609] [DMG] { + [1690220435293] [38880:6589609] [DMG] EndpointId = 0x0, + [1690220435293] [38880:6589609] [DMG] ClusterId = 0x3c, + [1690220435293] [38880:6589609] [DMG] CommandId = 0x0, + [1690220435293] [38880:6589609] [DMG] }, + [1690220435293] [38880:6589609] [DMG] + [1690220435293] [38880:6589609] [DMG] StatusIB = + [1690220435293] [38880:6589609] [DMG] { + [1690220435293] [38880:6589609] [DMG] status = 0x00 (SUCCESS), + [1690220435293] [38880:6589609] [DMG] }, + [1690220435293] [38880:6589609] [DMG] + [1690220435293] [38880:6589609] [DMG] }, + [1690220435293] [38880:6589609] [DMG] + [1690220435293] [38880:6589609] [DMG] }, + [1690220435293] [38880:6589609] [DMG] + [1690220435293] [38880:6589609] [DMG] ], + [1690220435293] [38880:6589609] [DMG] + [1690220435293] [38880:6589609] [DMG] InteractionModelRevision = 1 + [1690220435293] [38880:6589609] [DMG] }, + [1690220435293] [38880:6589609] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 + [1690220435293] [38880:6589609] [CTL] Successfully opened pairing window on the device + [1690220435293] [38880:6589609] [CTL] Manual pairing code: [35064347684] + [1690220435293] [38880:6589609] [CTL] SetupQRCode: [MT:-24J0AFN00Y.YD0SO10] + [1690220435293] [38880:6589609] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 19: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690220515981] [38865:6587066] [DMG] { + [1690220515981] [38865:6587066] [DMG] SubscriptionId = 0xdade5274, + [1690220515981] [38865:6587066] [DMG] AttributeReportIBs = + [1690220515981] [38865:6587066] [DMG] [ + [1690220515981] [38865:6587066] [DMG] AttributeReportIB = + [1690220515981] [38865:6587066] [DMG] { + [1690220515981] [38865:6587066] [DMG] AttributeDataIB = + [1690220515981] [38865:6587066] [DMG] { + [1690220515981] [38865:6587066] [DMG] DataVersion = 0x1fddcced, + [1690220515981] [38865:6587066] [DMG] AttributePathIB = + [1690220515981] [38865:6587066] [DMG] { + [1690220515981] [38865:6587066] [DMG] Endpoint = 0x0, + [1690220515981] [38865:6587066] [DMG] Cluster = 0x3c, + [1690220515981] [38865:6587066] [DMG] Attribute = 0x0000_0000, + [1690220515981] [38865:6587066] [DMG] } + [1690220515981] [38865:6587066] [DMG] + [1690220515981] [38865:6587066] [DMG] Data = 1, + [1690220515981] [38865:6587066] [DMG] }, + [1690220515981] [38865:6587066] [DMG] + [1690220515981] [38865:6587066] [DMG] }, + [1690220515981] [38865:6587066] [DMG] + [1690220515981] [38865:6587066] [DMG] ], + [1690220515981] [38865:6587066] [DMG] + [1690220515981] [38865:6587066] [DMG] InteractionModelRevision = 1 + [1690220515981] [38865:6587066] [DMG] } + [1690220515981] [38865:6587066] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629613 + [1690220515981] [38865:6587066] [TOO] WindowStatus: 1 + [1690220515981] [38865:6587066] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690220515982] [38865:6587066] [EM] <<< [E:50767r S:35778 M:151592262 (Ack:264355229)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220515982] [38865:6587066] [IN] (S) Sending msg 151592262 on secure session with LSID: 35778 + [1690220515991] [38865:6587066] [EM] >>> [E:50768r S:35778 M:264355230] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220515991] [38865:6587066] [EM] Handling via exchange: 50768r, Delegate: 0x1013c4be0 + [1690220515991] [38865:6587066] [DMG] ReportDataMessage = + [1690220515991] [38865:6587066] [DMG] { + [1690220515991] [38865:6587066] [DMG] SubscriptionId = 0x35250b41, + [1690220515991] [38865:6587066] [DMG] AttributeReportIBs = + [1690220515991] [38865:6587066] [DMG] [ + [1690220515991] [38865:6587066] [DMG] AttributeReportIB = + [1690220515992] [38865:6587066] [DMG] { + [1690220515992] [38865:6587066] [DMG] AttributeDataIB = + [1690220515992] [38865:6587066] [DMG] { + [1690220515992] [38865:6587066] [DMG] DataVersion = 0x1fddcced, + [1690220515992] [38865:6587066] [DMG] AttributePathIB = + [1690220515992] [38865:6587066] [DMG] { + [1690220515992] [38865:6587066] [DMG] Endpoint = 0x0, + [1690220515992] [38865:6587066] [DMG] Cluster = 0x3c, + [1690220515992] [38865:6587066] [DMG] Attribute = 0x0000_0001, + [1690220515992] [38865:6587066] [DMG] } + [1690220515992] [38865:6587066] [DMG] + [1690220515992] [38865:6587066] [DMG] Data = 2, + [1690220515992] [38865:6587066] [DMG] }, + [1690220515992] [38865:6587066] [DMG] + [1690220515992] [38865:6587066] [DMG] }, + [1690220515992] [38865:6587066] [DMG] + [1690220515992] [38865:6587066] [DMG] ], + [1690220515992] [38865:6587066] [DMG] + [1690220515992] [38865:6587066] [DMG] InteractionModelRevision = 1 + [1690220515992] [38865:6587066] [DMG] } + [1690220515992] [38865:6587066] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629613 + [1690220515992] [38865:6587066] [TOO] AdminFabricIndex: 2 + [1690220515992] [38865:6587066] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690220515992] [38865:6587066] [EM] <<< [E:50768r S:35778 M:151592263 (Ack:264355230)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220515993] [38865:6587066] [IN] (S) Sending msg 151592263 on secure session with LSID: 35778 + [1690220515993] [38865:6587066] [EM] >>> [E:50769r S:35778 M:264355231] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220515993] [38865:6587066] [EM] Handling via exchange: 50769r, Delegate: 0x1013c4be0 + [1690220515993] [38865:6587066] [DMG] ReportDataMessage = + [1690220515993] [38865:6587066] [DMG] { + [1690220515993] [38865:6587066] [DMG] SubscriptionId = 0xd3c6ff91, + [1690220515993] [38865:6587066] [DMG] AttributeReportIBs = + [1690220515993] [38865:6587066] [DMG] [ + [1690220515993] [38865:6587066] [DMG] AttributeReportIB = + [1690220515993] [38865:6587066] [DMG] { + [1690220515993] [38865:6587066] [DMG] AttributeDataIB = + [1690220515993] [38865:6587066] [DMG] { + [1690220515994] [38865:6587066] [DMG] DataVersion = 0x1fddcced, + [1690220515994] [38865:6587066] [DMG] AttributePathIB = + [1690220515994] [38865:6587066] [DMG] { + [1690220515994] [38865:6587066] [DMG] Endpoint = 0x0, + [1690220515994] [38865:6587066] [DMG] Cluster = 0x3c, + [1690220515994] [38865:6587066] [DMG] Attribute = 0x0000_0002, + [1690220515994] [38865:6587066] [DMG] } + [1690220515994] [38865:6587066] [DMG] + [1690220515994] [38865:6587066] [DMG] Data = 65521, + [1690220515994] [38865:6587066] [DMG] }, + [1690220515994] [38865:6587066] [DMG] + [1690220515994] [38865:6587066] [DMG] }, + [1690220515994] [38865:6587066] [DMG] + [1690220515994] [38865:6587066] [DMG] ], + [1690220515994] [38865:6587066] [DMG] + [1690220515994] [38865:6587066] [DMG] InteractionModelRevision = 1 + [1690220515994] [38865:6587066] [DMG] } + [1690220515994] [38865:6587066] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629613 + [1690220515994] [38865:6587066] [TOO] AdminVendorId: 65521 + [1690220515994] [38865:6587066] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xd3c6ff91 Peer = 01:0000000000000001 + [1690220515994] [38865:6587066] [EM] <<< [E:50769r S:35778 M:151592264 (Ack:264355231)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 20: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690220515997] [38880:6590520] [DMG] { + [1690220515997] [38880:6590520] [DMG] SubscriptionId = 0xfab5d837, + [1690220515997] [38880:6590520] [DMG] AttributeReportIBs = + [1690220515997] [38880:6590520] [DMG] [ + [1690220515997] [38880:6590520] [DMG] AttributeReportIB = + [1690220515997] [38880:6590520] [DMG] { + [1690220515997] [38880:6590520] [DMG] AttributeDataIB = + [1690220515997] [38880:6590520] [DMG] { + [1690220515997] [38880:6590520] [DMG] DataVersion = 0x1fddcced, + [1690220515997] [38880:6590520] [DMG] AttributePathIB = + [1690220515997] [38880:6590520] [DMG] { + [1690220515997] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220515997] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220515997] [38880:6590520] [DMG] Attribute = 0x0000_0000, + [1690220515997] [38880:6590520] [DMG] } + [1690220515997] [38880:6590520] [DMG] + [1690220515997] [38880:6590520] [DMG] Data = 1, + [1690220515997] [38880:6590520] [DMG] }, + [1690220515997] [38880:6590520] [DMG] + [1690220515997] [38880:6590520] [DMG] }, + [1690220515997] [38880:6590520] [DMG] + [1690220515997] [38880:6590520] [DMG] ], + [1690220515997] [38880:6590520] [DMG] + [1690220515997] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220515997] [38880:6590520] [DMG] } + [1690220515997] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629613 + [1690220515997] [38880:6590520] [TOO] WindowStatus: 1 + [1690220515997] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfab5d837 Peer = 02:0000000000000001 + [1690220515997] [38880:6590520] [EM] <<< [E:50770r S:15324 M:785276 (Ack:104911049)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220515997] [38880:6590520] [IN] (S) Sending msg 785276 on secure session with LSID: 15324 + [1690220516007] [38880:6590520] [EM] >>> [E:50770r S:15324 M:104911050 (Ack:785276)] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220516007] [38880:6590520] [EM] Found matching exchange: 50770r, Delegate: 0x0 + [1690220516007] [38880:6590520] [EM] Rxd Ack; Removing MessageCounter:785276 from Retrans Table on exchange 50770r + [1690220516013] [38880:6590520] [EM] >>> [E:50771r S:15324 M:104911051] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220516013] [38880:6590520] [EM] Handling via exchange: 50771r, Delegate: 0x1035c8be0 + [1690220516013] [38880:6590520] [DMG] ReportDataMessage = + [1690220516013] [38880:6590520] [DMG] { + [1690220516013] [38880:6590520] [DMG] SubscriptionId = 0x5984e13a, + [1690220516013] [38880:6590520] [DMG] AttributeReportIBs = + [1690220516013] [38880:6590520] [DMG] [ + [1690220516013] [38880:6590520] [DMG] AttributeReportIB = + [1690220516013] [38880:6590520] [DMG] { + [1690220516013] [38880:6590520] [DMG] AttributeDataIB = + [1690220516013] [38880:6590520] [DMG] { + [1690220516013] [38880:6590520] [DMG] DataVersion = 0x1fddcced, + [1690220516013] [38880:6590520] [DMG] AttributePathIB = + [1690220516013] [38880:6590520] [DMG] { + [1690220516013] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220516013] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220516013] [38880:6590520] [DMG] Attribute = 0x0000_0001, + [1690220516013] [38880:6590520] [DMG] } + [1690220516013] [38880:6590520] [DMG] + [1690220516013] [38880:6590520] [DMG] Data = 2, + [1690220516013] [38880:6590520] [DMG] }, + [1690220516013] [38880:6590520] [DMG] + [1690220516013] [38880:6590520] [DMG] }, + [1690220516013] [38880:6590520] [DMG] + [1690220516013] [38880:6590520] [DMG] ], + [1690220516013] [38880:6590520] [DMG] + [1690220516013] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220516013] [38880:6590520] [DMG] } + [1690220516013] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629613 + [1690220516013] [38880:6590520] [TOO] AdminFabricIndex: 2 + [1690220516013] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x5984e13a Peer = 02:0000000000000001 + [1690220516013] [38880:6590520] [EM] <<< [E:50771r S:15324 M:785277 (Ack:104911051)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220516013] [38880:6590520] [IN] (S) Sending msg 785277 on secure session with LSID: 15324 + [1690220516020] [38880:6590520] [EM] >>> [E:50772r S:15324 M:104911052] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220516020] [38880:6590520] [EM] Handling via exchange: 50772r, Delegate: 0x1035c8be0 + [1690220516020] [38880:6590520] [DMG] ReportDataMessage = + [1690220516020] [38880:6590520] [DMG] { + [1690220516020] [38880:6590520] [DMG] SubscriptionId = 0x943b5fc3, + [1690220516020] [38880:6590520] [DMG] AttributeReportIBs = + [1690220516020] [38880:6590520] [DMG] [ + [1690220516020] [38880:6590520] [DMG] AttributeReportIB = + [1690220516020] [38880:6590520] [DMG] { + [1690220516020] [38880:6590520] [DMG] AttributeDataIB = + [1690220516020] [38880:6590520] [DMG] { + [1690220516020] [38880:6590520] [DMG] DataVersion = 0x1fddcced, + [1690220516020] [38880:6590520] [DMG] AttributePathIB = + [1690220516020] [38880:6590520] [DMG] { + [1690220516020] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220516020] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220516020] [38880:6590520] [DMG] Attribute = 0x0000_0002, + [1690220516020] [38880:6590520] [DMG] } + [1690220516020] [38880:6590520] [DMG] + [1690220516020] [38880:6590520] [DMG] Data = 65521, + [1690220516020] [38880:6590520] [DMG] }, + [1690220516020] [38880:6590520] [DMG] + [1690220516020] [38880:6590520] [DMG] }, + [1690220516020] [38880:6590520] [DMG] + [1690220516020] [38880:6590520] [DMG] ], + [1690220516020] [38880:6590520] [DMG] + [1690220516020] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220516020] [38880:6590520] [DMG] } + [1690220516020] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629613 + [1690220516020] [38880:6590520] [TOO] AdminVendorId: 65521 + [1690220516020] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x943b5fc3 Peer = 02:0000000000000001 + [1690220516020] [38880:6590520] [EM] <<< [E:50772r S:15324 M:785278 (Ack:104911052)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 21: Wait for the expiration of PIXIT.CADMIN.CwDuration seconds + that is set in step 18" + verification: | + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 18 + disabled: true + + - label: + "Step 22: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + [1690220692636] [38865:6590605] [EM] >>> [E:50773r S:35778 M:264355235] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220692636] [38865:6590605] [EM] Handling via exchange: 50773r, Delegate: 0x1013c4be0 + [1690220692636] [38865:6590605] [DMG] ReportDataMessage = + [1690220692636] [38865:6590605] [DMG] { + [1690220692636] [38865:6590605] [DMG] SubscriptionId = 0xdade5274, + [1690220692636] [38865:6590605] [DMG] AttributeReportIBs = + [1690220692636] [38865:6590605] [DMG] [ + [1690220692636] [38865:6590605] [DMG] AttributeReportIB = + [1690220692636] [38865:6590605] [DMG] { + [1690220692636] [38865:6590605] [DMG] AttributeDataIB = + [1690220692636] [38865:6590605] [DMG] { + [1690220692636] [38865:6590605] [DMG] DataVersion = 0x1fddccf0, + [1690220692636] [38865:6590605] [DMG] AttributePathIB = + [1690220692636] [38865:6590605] [DMG] { + [1690220692636] [38865:6590605] [DMG] Endpoint = 0x0, + [1690220692636] [38865:6590605] [DMG] Cluster = 0x3c, + [1690220692636] [38865:6590605] [DMG] Attribute = 0x0000_0000, + [1690220692636] [38865:6590605] [DMG] } + [1690220692636] [38865:6590605] [DMG] + [1690220692636] [38865:6590605] [DMG] Data = 0, + [1690220692636] [38865:6590605] [DMG] }, + [1690220692636] [38865:6590605] [DMG] + [1690220692636] [38865:6590605] [DMG] }, + [1690220692636] [38865:6590605] [DMG] + [1690220692636] [38865:6590605] [DMG] ], + [1690220692636] [38865:6590605] [DMG] + [1690220692636] [38865:6590605] [DMG] InteractionModelRevision = 1 + [1690220692636] [38865:6590605] [DMG] } + [1690220692636] [38865:6590605] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629616 + [1690220692636] [38865:6590605] [TOO] WindowStatus: 0 + [1690220692636] [38865:6590605] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690220692636] [38865:6590605] [EM] <<< [E:50773r S:35778 M:151592265 (Ack:264355235)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220692636] [38865:6590605] [IN] (S) Sending msg 151592265 on secure session with LSID: 35778 + [1690220692637] [38865:6590605] [EM] >>> [E:50774r S:35778 M:264355236] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220692637] [38865:6590605] [EM] Handling via exchange: 50774r, Delegate: 0x1013c4be0 + [1690220692637] [38865:6590605] [DMG] ReportDataMessage = + [1690220692637] [38865:6590605] [DMG] { + [1690220692637] [38865:6590605] [DMG] SubscriptionId = 0x35250b41, + [1690220692637] [38865:6590605] [DMG] AttributeReportIBs = + [1690220692637] [38865:6590605] [DMG] [ + [1690220692637] [38865:6590605] [DMG] AttributeReportIB = + [1690220692637] [38865:6590605] [DMG] { + [1690220692637] [38865:6590605] [DMG] AttributeDataIB = + [1690220692637] [38865:6590605] [DMG] { + [1690220692637] [38865:6590605] [DMG] DataVersion = 0x1fddccf0, + [1690220692637] [38865:6590605] [DMG] AttributePathIB = + [1690220692637] [38865:6590605] [DMG] { + [1690220692637] [38865:6590605] [DMG] Endpoint = 0x0, + [1690220692637] [38865:6590605] [DMG] Cluster = 0x3c, + [1690220692637] [38865:6590605] [DMG] Attribute = 0x0000_0001, + [1690220692637] [38865:6590605] [DMG] } + [1690220692637] [38865:6590605] [DMG] + [1690220692637] [38865:6590605] [DMG] Data = NULL + [1690220692637] [38865:6590605] [DMG] }, + [1690220692637] [38865:6590605] [DMG] + [1690220692637] [38865:6590605] [DMG] }, + [1690220692637] [38865:6590605] [DMG] + [1690220692637] [38865:6590605] [DMG] ], + [1690220692637] [38865:6590605] [DMG] + [1690220692637] [38865:6590605] [DMG] InteractionModelRevision = 1 + [1690220692637] [38865:6590605] [DMG] } + [1690220692637] [38865:6590605] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629616 + [1690220692637] [38865:6590605] [TOO] AdminFabricIndex: null + [1690220692637] [38865:6590605] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690220692637] [38865:6590605] [EM] <<< [E:50774r S:35778 M:151592266 (Ack:264355236)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220692637] [38865:6590605] [IN] (S) Sending msg 151592266 on secure session with LSID: 35778 + [1690220692641] [38865:6590605] [EM] >>> [E:50775r S:35778 M:264355237] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220692641] [38865:6590605] [EM] Handling via exchange: 50775r, Delegate: 0x1013c4be0 + [1690220692641] [38865:6590605] [DMG] ReportDataMessage = + [1690220692641] [38865:6590605] [DMG] { + [1690220692641] [38865:6590605] [DMG] SubscriptionId = 0xd3c6ff91, + [1690220692641] [38865:6590605] [DMG] AttributeReportIBs = + [1690220692641] [38865:6590605] [DMG] [ + [1690220692641] [38865:6590605] [DMG] AttributeReportIB = + [1690220692641] [38865:6590605] [DMG] { + [1690220692641] [38865:6590605] [DMG] AttributeDataIB = + [1690220692641] [38865:6590605] [DMG] { + [1690220692641] [38865:6590605] [DMG] DataVersion = 0x1fddccf0, + [1690220692641] [38865:6590605] [DMG] AttributePathIB = + [1690220692641] [38865:6590605] [DMG] { + [1690220692641] [38865:6590605] [DMG] Endpoint = 0x0, + [1690220692641] [38865:6590605] [DMG] Cluster = 0x3c, + [1690220692641] [38865:6590605] [DMG] Attribute = 0x0000_0002, + [1690220692641] [38865:6590605] [DMG] } + [1690220692641] [38865:6590605] [DMG] + [1690220692641] [38865:6590605] [DMG] Data = NULL + [1690220692641] [38865:6590605] [DMG] }, + [1690220692641] [38865:6590605] [DMG] + [1690220692641] [38865:6590605] [DMG] }, + [1690220692641] [38865:6590605] [DMG] + [1690220692641] [38865:6590605] [DMG] ], + [1690220692641] [38865:6590605] [DMG] + [1690220692641] [38865:6590605] [DMG] InteractionModelRevision = 1 + [1690220692641] [38865:6590605] [DMG] } + [1690220692641] [38865:6590605] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629616 + [1690220692641] [38865:6590605] [TOO] AdminVendorId: null + [1690220692641] [38865:6590605] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xd3c6ff91 Peer = 01:0000000000000001 + [1690220692641] [38865:6590605] [EM] <<< [E:50775r S:35778 M:151592267 (Ack:264355237)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220692641] [38865:6590605] [IN] (S) Sending msg 151592267 on secure session with LSID: 35778 + [1690220692658] [38865:6590605] [EM] >>> [E:50773r S:35778 M:264355238 (Ack:151592265)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220692658] [38865:6590605] [EM] Found matching exchange: 50773r, Delegate: 0x0 + [1690220692658] [38865:6590605] [EM] Rxd Ack; Removing MessageCounter:151592265 from Retrans Table on exchange 50773r + [1690220692665] [38865:6590605] [EM] >>> [E:50774r S:35778 M:264355239 (Ack:151592266)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220692665] [38865:6590605] [EM] Found matching exchange: 50774r, Delegate: 0x0 + [1690220692665] [38865:6590605] [EM] Rxd Ack; Removing MessageCounter:151592266 from Retrans Table on exchange 50774r + [1690220692672] [38865:6590605] [EM] >>> [E:50775r S:35778 M:264355240 (Ack:151592267)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220692672] [38865:6590605] [EM] Found matching exchange: 50775r, Delegate: 0x0 + [1690220692672] [38865:6590605] [EM] Rxd Ack; Removing MessageCounter:151592267 from Retrans Table on exchange 50775r + disabled: true + + - label: + "Step 23: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + [1690220692641] [38880:6590520] [EM] >>> [E:50776r S:15324 M:104911055] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220692641] [38880:6590520] [EM] Handling via exchange: 50776r, Delegate: 0x1035c8be0 + [1690220692641] [38880:6590520] [DMG] ReportDataMessage = + [1690220692641] [38880:6590520] [DMG] { + [1690220692641] [38880:6590520] [DMG] SubscriptionId = 0xfab5d837, + [1690220692641] [38880:6590520] [DMG] AttributeReportIBs = + [1690220692641] [38880:6590520] [DMG] [ + [1690220692641] [38880:6590520] [DMG] AttributeReportIB = + [1690220692641] [38880:6590520] [DMG] { + [1690220692641] [38880:6590520] [DMG] AttributeDataIB = + [1690220692641] [38880:6590520] [DMG] { + [1690220692641] [38880:6590520] [DMG] DataVersion = 0x1fddccf0, + [1690220692641] [38880:6590520] [DMG] AttributePathIB = + [1690220692641] [38880:6590520] [DMG] { + [1690220692641] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220692641] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220692641] [38880:6590520] [DMG] Attribute = 0x0000_0000, + [1690220692641] [38880:6590520] [DMG] } + [1690220692641] [38880:6590520] [DMG] + [1690220692641] [38880:6590520] [DMG] Data = 0, + [1690220692641] [38880:6590520] [DMG] }, + [1690220692641] [38880:6590520] [DMG] + [1690220692641] [38880:6590520] [DMG] }, + [1690220692641] [38880:6590520] [DMG] + [1690220692641] [38880:6590520] [DMG] ], + [1690220692641] [38880:6590520] [DMG] + [1690220692641] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220692641] [38880:6590520] [DMG] } + [1690220692641] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629616 + [1690220692641] [38880:6590520] [TOO] WindowStatus: 0 + [1690220692641] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfab5d837 Peer = 02:0000000000000001 + [1690220692641] [38880:6590520] [EM] <<< [E:50776r S:15324 M:785279 (Ack:104911055)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220692641] [38880:6590520] [IN] (S) Sending msg 785279 on secure session with LSID: 15324 + [1690220692663] [38880:6590520] [EM] >>> [E:50777r S:15324 M:104911056] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220692663] [38880:6590520] [EM] Handling via exchange: 50777r, Delegate: 0x1035c8be0 + [1690220692663] [38880:6590520] [DMG] ReportDataMessage = + [1690220692663] [38880:6590520] [DMG] { + [1690220692663] [38880:6590520] [DMG] SubscriptionId = 0x5984e13a, + [1690220692663] [38880:6590520] [DMG] AttributeReportIBs = + [1690220692663] [38880:6590520] [DMG] [ + [1690220692663] [38880:6590520] [DMG] AttributeReportIB = + [1690220692663] [38880:6590520] [DMG] { + [1690220692663] [38880:6590520] [DMG] AttributeDataIB = + [1690220692663] [38880:6590520] [DMG] { + [1690220692663] [38880:6590520] [DMG] DataVersion = 0x1fddccf0, + [1690220692663] [38880:6590520] [DMG] AttributePathIB = + [1690220692663] [38880:6590520] [DMG] { + [1690220692663] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220692663] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220692663] [38880:6590520] [DMG] Attribute = 0x0000_0001, + [1690220692663] [38880:6590520] [DMG] } + [1690220692663] [38880:6590520] [DMG] + [1690220692663] [38880:6590520] [DMG] Data = NULL + [1690220692663] [38880:6590520] [DMG] }, + [1690220692663] [38880:6590520] [DMG] + [1690220692663] [38880:6590520] [DMG] }, + [1690220692663] [38880:6590520] [DMG] + [1690220692663] [38880:6590520] [DMG] ], + [1690220692663] [38880:6590520] [DMG] + [1690220692663] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220692663] [38880:6590520] [DMG] } + [1690220692664] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629616 + [1690220692664] [38880:6590520] [TOO] AdminFabricIndex: null + [1690220692664] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x5984e13a Peer = 02:0000000000000001 + [1690220692664] [38880:6590520] [EM] <<< [E:50777r S:15324 M:785280 (Ack:104911056)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220692664] [38880:6590520] [IN] (S) Sending msg 785280 on secure session with LSID: 15324 + [1690220692667] [38880:6590520] [EM] >>> [E:50778r S:15324 M:104911057] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220692667] [38880:6590520] [EM] Handling via exchange: 50778r, Delegate: 0x1035c8be0 + [1690220692667] [38880:6590520] [DMG] ReportDataMessage = + [1690220692667] [38880:6590520] [DMG] { + [1690220692667] [38880:6590520] [DMG] SubscriptionId = 0x943b5fc3, + [1690220692667] [38880:6590520] [DMG] AttributeReportIBs = + [1690220692667] [38880:6590520] [DMG] [ + [1690220692667] [38880:6590520] [DMG] AttributeReportIB = + [1690220692667] [38880:6590520] [DMG] { + [1690220692667] [38880:6590520] [DMG] AttributeDataIB = + [1690220692667] [38880:6590520] [DMG] { + [1690220692667] [38880:6590520] [DMG] DataVersion = 0x1fddccf0, + [1690220692667] [38880:6590520] [DMG] AttributePathIB = + [1690220692667] [38880:6590520] [DMG] { + [1690220692667] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220692667] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220692667] [38880:6590520] [DMG] Attribute = 0x0000_0002, + [1690220692667] [38880:6590520] [DMG] } + [1690220692667] [38880:6590520] [DMG] + [1690220692667] [38880:6590520] [DMG] Data = NULL + [1690220692667] [38880:6590520] [DMG] }, + [1690220692667] [38880:6590520] [DMG] + [1690220692667] [38880:6590520] [DMG] }, + [1690220692667] [38880:6590520] [DMG] + [1690220692667] [38880:6590520] [DMG] ], + [1690220692667] [38880:6590520] [DMG] + [1690220692667] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220692667] [38880:6590520] [DMG] } + [1690220692668] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629616 + [1690220692668] [38880:6590520] [TOO] AdminVendorId: null + [1690220692668] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x943b5fc3 Peer = 02:0000000000000001 + [1690220692668] [38880:6590520] [EM] <<< [E:50778r S:15324 M:785281 (Ack:104911057)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220692668] [38880:6590520] [IN] (S) Sending msg 785281 on secure session with LSID: 15324 + [1690220692679] [38880:6590520] [EM] >>> [E:50776r S:15324 M:104911058 (Ack:785279)] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220692679] [38880:6590520] [EM] Found matching exchange: 50776r, Delegate: 0x0 + [1690220692679] [38880:6590520] [EM] Rxd Ack; Removing MessageCounter:785279 from Retrans Table on exchange 50776r + [1690220692682] [38880:6590520] [EM] >>> [E:50777r S:15324 M:104911059 (Ack:785280)] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220692682] [38880:6590520] [EM] Found matching exchange: 50777r, Delegate: 0x0 + [1690220692682] [38880:6590520] [EM] Rxd Ack; Removing MessageCounter:785280 from Retrans Table on exchange 50777r + [1690220692720] [38880:6590520] [EM] >>> [E:50778r S:15324 M:104911060 (Ack:785281)] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220692720] [38880:6590520] [EM] Found matching exchange: 50778r, Delegate: 0x0 + [1690220692720] [38880:6590520] [EM] Rxd Ack; Removing MessageCounter:785281 from Retrans Table on exchange 50778r + disabled: true + + - label: + "Step 24: TH_CR2 opens a commissioning window on DUT_CE using ECM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C00.Rsp + verification: | + In interactive mode of TH_CR2, send command to open commissioning window using ECM + + pairing open-commissioning-window 1 1 180 1000 3840 --commissioner-name beta + + On TH_CR2 logs, verify for commissioning window to be open + + InvokeResponseMessage = + [1690220763945] [38880:6590520] [DMG] { + [1690220763945] [38880:6590520] [DMG] suppressResponse = false, + [1690220763945] [38880:6590520] [DMG] InvokeResponseIBs = + [1690220763945] [38880:6590520] [DMG] [ + [1690220763945] [38880:6590520] [DMG] InvokeResponseIB = + [1690220763945] [38880:6590520] [DMG] { + [1690220763945] [38880:6590520] [DMG] CommandStatusIB = + [1690220763945] [38880:6590520] [DMG] { + [1690220763945] [38880:6590520] [DMG] CommandPathIB = + [1690220763945] [38880:6590520] [DMG] { + [1690220763945] [38880:6590520] [DMG] EndpointId = 0x0, + [1690220763945] [38880:6590520] [DMG] ClusterId = 0x3c, + [1690220763945] [38880:6590520] [DMG] CommandId = 0x0, + [1690220763945] [38880:6590520] [DMG] }, + [1690220763945] [38880:6590520] [DMG] + [1690220763945] [38880:6590520] [DMG] StatusIB = + [1690220763945] [38880:6590520] [DMG] { + [1690220763945] [38880:6590520] [DMG] status = 0x00 (SUCCESS), + [1690220763945] [38880:6590520] [DMG] }, + [1690220763945] [38880:6590520] [DMG] + [1690220763945] [38880:6590520] [DMG] }, + [1690220763945] [38880:6590520] [DMG] + [1690220763945] [38880:6590520] [DMG] }, + [1690220763945] [38880:6590520] [DMG] + [1690220763945] [38880:6590520] [DMG] ], + [1690220763945] [38880:6590520] [DMG] + [1690220763945] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220763945] [38880:6590520] [DMG] }, + [1690220763945] [38880:6590520] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0 + [1690220763945] [38880:6590520] [CTL] Successfully opened pairing window on the device + [1690220763945] [38880:6590520] [CTL] Manual pairing code: [35598021029] + [1690220763945] [38880:6590520] [CTL] SetupQRCode: [MT:-24J0AFN00-CRP1PR00] + disabled: true + + - label: + "Step 25: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + + [1690220763948] [38865:6590605] [EM] >>> [E:50779r S:35778 M:264355241] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220763948] [38865:6590605] [EM] Handling via exchange: 50779r, Delegate: 0x1013c4be0 + [1690220763948] [38865:6590605] [DMG] ReportDataMessage = + [1690220763948] [38865:6590605] [DMG] { + [1690220763948] [38865:6590605] [DMG] SubscriptionId = 0xdade5274, + [1690220763948] [38865:6590605] [DMG] AttributeReportIBs = + [1690220763948] [38865:6590605] [DMG] [ + [1690220763948] [38865:6590605] [DMG] AttributeReportIB = + [1690220763948] [38865:6590605] [DMG] { + [1690220763948] [38865:6590605] [DMG] AttributeDataIB = + [1690220763948] [38865:6590605] [DMG] { + [1690220763948] [38865:6590605] [DMG] DataVersion = 0x1fddccf3, + [1690220763948] [38865:6590605] [DMG] AttributePathIB = + [1690220763948] [38865:6590605] [DMG] { + [1690220763948] [38865:6590605] [DMG] Endpoint = 0x0, + [1690220763948] [38865:6590605] [DMG] Cluster = 0x3c, + [1690220763948] [38865:6590605] [DMG] Attribute = 0x0000_0000, + [1690220763948] [38865:6590605] [DMG] } + [1690220763948] [38865:6590605] [DMG] + [1690220763948] [38865:6590605] [DMG] Data = 1, + [1690220763948] [38865:6590605] [DMG] }, + [1690220763948] [38865:6590605] [DMG] + [1690220763948] [38865:6590605] [DMG] }, + [1690220763948] [38865:6590605] [DMG] + [1690220763948] [38865:6590605] [DMG] ], + [1690220763948] [38865:6590605] [DMG] + [1690220763948] [38865:6590605] [DMG] InteractionModelRevision = 1 + [1690220763948] [38865:6590605] [DMG] } + [1690220763948] [38865:6590605] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629619 + [1690220763948] [38865:6590605] [TOO] WindowStatus: 1 + [1690220763948] [38865:6590605] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdade5274 Peer = 01:0000000000000001 + [1690220763949] [38865:6590605] [EM] <<< [E:50779r S:35778 M:151592268 (Ack:264355241)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220763949] [38865:6590605] [IN] (S) Sending msg 151592268 on secure session with LSID: 35778 + [1690220763955] [38865:6590605] [EM] >>> [E:50780r S:35778 M:264355242] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220763955] [38865:6590605] [EM] Handling via exchange: 50780r, Delegate: 0x1013c4be0 + [1690220763955] [38865:6590605] [DMG] ReportDataMessage = + [1690220763955] [38865:6590605] [DMG] { + [1690220763955] [38865:6590605] [DMG] SubscriptionId = 0x35250b41, + [1690220763955] [38865:6590605] [DMG] AttributeReportIBs = + [1690220763955] [38865:6590605] [DMG] [ + [1690220763955] [38865:6590605] [DMG] AttributeReportIB = + [1690220763955] [38865:6590605] [DMG] { + [1690220763955] [38865:6590605] [DMG] AttributeDataIB = + [1690220763955] [38865:6590605] [DMG] { + [1690220763955] [38865:6590605] [DMG] DataVersion = 0x1fddccf3, + [1690220763955] [38865:6590605] [DMG] AttributePathIB = + [1690220763955] [38865:6590605] [DMG] { + [1690220763955] [38865:6590605] [DMG] Endpoint = 0x0, + [1690220763955] [38865:6590605] [DMG] Cluster = 0x3c, + [1690220763955] [38865:6590605] [DMG] Attribute = 0x0000_0001, + [1690220763955] [38865:6590605] [DMG] } + [1690220763955] [38865:6590605] [DMG] + [1690220763955] [38865:6590605] [DMG] Data = 2, + [1690220763955] [38865:6590605] [DMG] }, + [1690220763955] [38865:6590605] [DMG] + [1690220763955] [38865:6590605] [DMG] }, + [1690220763955] [38865:6590605] [DMG] + [1690220763955] [38865:6590605] [DMG] ], + [1690220763955] [38865:6590605] [DMG] + [1690220763955] [38865:6590605] [DMG] InteractionModelRevision = 1 + [1690220763955] [38865:6590605] [DMG] } + [1690220763955] [38865:6590605] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629619 + [1690220763955] [38865:6590605] [TOO] AdminFabricIndex: 2 + [1690220763955] [38865:6590605] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x35250b41 Peer = 01:0000000000000001 + [1690220763956] [38865:6590605] [EM] <<< [E:50780r S:35778 M:151592269 (Ack:264355242)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220763956] [38865:6590605] [IN] (S) Sending msg 151592269 on secure session with LSID: 35778 + [1690220763956] [38865:6590605] [EM] >>> [E:50781r S:35778 M:264355243] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690220763956] [38865:6590605] [EM] Handling via exchange: 50781r, Delegate: 0x1013c4be0 + [1690220763956] [38865:6590605] [DMG] ReportDataMessage = + [1690220763956] [38865:6590605] [DMG] { + [1690220763956] [38865:6590605] [DMG] SubscriptionId = 0xd3c6ff91, + [1690220763956] [38865:6590605] [DMG] AttributeReportIBs = + [1690220763957] [38865:6590605] [DMG] [ + [1690220763957] [38865:6590605] [DMG] AttributeReportIB = + [1690220763957] [38865:6590605] [DMG] { + [1690220763957] [38865:6590605] [DMG] AttributeDataIB = + [1690220763957] [38865:6590605] [DMG] { + [1690220763957] [38865:6590605] [DMG] DataVersion = 0x1fddccf3, + [1690220763957] [38865:6590605] [DMG] AttributePathIB = + [1690220763957] [38865:6590605] [DMG] { + [1690220763957] [38865:6590605] [DMG] Endpoint = 0x0, + [1690220763957] [38865:6590605] [DMG] Cluster = 0x3c, + [1690220763957] [38865:6590605] [DMG] Attribute = 0x0000_0002, + [1690220763957] [38865:6590605] [DMG] } + [1690220763957] [38865:6590605] [DMG] + [1690220763957] [38865:6590605] [DMG] Data = 65521, + [1690220763957] [38865:6590605] [DMG] }, + [1690220763957] [38865:6590605] [DMG] + [1690220763957] [38865:6590605] [DMG] }, + [1690220763957] [38865:6590605] [DMG] + [1690220763957] [38865:6590605] [DMG] ], + [1690220763957] [38865:6590605] [DMG] + [1690220763957] [38865:6590605] [DMG] InteractionModelRevision = 1 + [1690220763957] [38865:6590605] [DMG] } + [1690220763957] [38865:6590605] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629619 + [1690220763957] [38865:6590605] [TOO] AdminVendorId: 65521 + [1690220763957] [38865:6590605] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xd3c6ff91 Peer = 01:0000000000000001 + [1690220763957] [38865:6590605] [EM] <<< [E:50781r S:35778 M:151592270 (Ack:264355243)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690220763957] [38865:6590605] [IN] (S) Sending msg 151592270 on secure session with LSID: 35778 + [1690220763962] [38865:6590605] [EM] >>> [E:50779r S:35778 M:264355244 (Ack:151592268)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220763962] [38865:6590605] [EM] Found matching exchange: 50779r, Delegate: 0x0 + [1690220763962] [38865:6590605] [EM] Rxd Ack; Removing MessageCounter:151592268 from Retrans Table on exchange 50779r + [1690220763976] [38865:6590605] [EM] >>> [E:50780r S:35778 M:264355245 (Ack:151592269)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220763976] [38865:6590605] [EM] Found matching exchange: 50780r, Delegate: 0x0 + [1690220763976] [38865:6590605] [EM] Rxd Ack; Removing MessageCounter:151592269 from Retrans Table on exchange 50780r + [1690220763981] [38865:6593769] [EM] >>> [E:50781r S:35778 M:264355246 (Ack:151592270)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220763981] [38865:6593769] [EM] Found matching exchange: 50781r, Delegate: 0x0 + [1690220763981] [38865:6593769] [EM] Rxd Ack; Removing MessageCounter:151592270 from Retrans Table on exchange 50781r + disabled: true + + - label: + "Step 26: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 1, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 1, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690220763955] [38880:6590520] [DMG] { + [1690220763955] [38880:6590520] [DMG] SubscriptionId = 0xfab5d837, + [1690220763955] [38880:6590520] [DMG] AttributeReportIBs = + [1690220763955] [38880:6590520] [DMG] [ + [1690220763955] [38880:6590520] [DMG] AttributeReportIB = + [1690220763955] [38880:6590520] [DMG] { + [1690220763955] [38880:6590520] [DMG] AttributeDataIB = + [1690220763955] [38880:6590520] [DMG] { + [1690220763955] [38880:6590520] [DMG] DataVersion = 0x1fddccf3, + [1690220763955] [38880:6590520] [DMG] AttributePathIB = + [1690220763955] [38880:6590520] [DMG] { + [1690220763955] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220763955] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220763955] [38880:6590520] [DMG] Attribute = 0x0000_0000, + [1690220763955] [38880:6590520] [DMG] } + [1690220763955] [38880:6590520] [DMG] + [1690220763955] [38880:6590520] [DMG] Data = 1, + [1690220763955] [38880:6590520] [DMG] }, + [1690220763955] [38880:6590520] [DMG] + [1690220763955] [38880:6590520] [DMG] }, + [1690220763955] [38880:6590520] [DMG] + [1690220763955] [38880:6590520] [DMG] ], + [1690220763955] [38880:6590520] [DMG] + [1690220763955] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220763955] [38880:6590520] [DMG] } + [1690220763955] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 534629619 + [1690220763955] [38880:6590520] [TOO] WindowStatus: 1 + [1690220763956] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfab5d837 Peer = 02:0000000000000001 + [1690220763956] [38880:6590520] [EM] <<< [E:50782r S:15324 M:785289 (Ack:104911065)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220763956] [38880:6590520] [IN] (S) Sending msg 785289 on secure session with LSID: 15324 + [1690220763972] [38880:6590520] [EM] >>> [E:50783r S:15324 M:104911066] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220763972] [38880:6590520] [EM] Handling via exchange: 50783r, Delegate: 0x1035c8be0 + [1690220763972] [38880:6590520] [DMG] ReportDataMessage = + [1690220763972] [38880:6590520] [DMG] { + [1690220763972] [38880:6590520] [DMG] SubscriptionId = 0x5984e13a, + [1690220763972] [38880:6590520] [DMG] AttributeReportIBs = + [1690220763973] [38880:6590520] [DMG] [ + [1690220763973] [38880:6590520] [DMG] AttributeReportIB = + [1690220763973] [38880:6590520] [DMG] { + [1690220763973] [38880:6590520] [DMG] AttributeDataIB = + [1690220763973] [38880:6590520] [DMG] { + [1690220763973] [38880:6590520] [DMG] DataVersion = 0x1fddccf3, + [1690220763973] [38880:6590520] [DMG] AttributePathIB = + [1690220763973] [38880:6590520] [DMG] { + [1690220763973] [38880:6590520] [DMG] Endpoint = 0x0, + [1690220763973] [38880:6590520] [DMG] Cluster = 0x3c, + [1690220763973] [38880:6590520] [DMG] Attribute = 0x0000_0001, + [1690220763973] [38880:6590520] [DMG] } + [1690220763973] [38880:6590520] [DMG] + [1690220763973] [38880:6590520] [DMG] Data = 2, + [1690220763973] [38880:6590520] [DMG] }, + [1690220763973] [38880:6590520] [DMG] + [1690220763973] [38880:6590520] [DMG] }, + [1690220763973] [38880:6590520] [DMG] + [1690220763973] [38880:6590520] [DMG] ], + [1690220763973] [38880:6590520] [DMG] + [1690220763973] [38880:6590520] [DMG] InteractionModelRevision = 1 + [1690220763973] [38880:6590520] [DMG] } + [1690220763973] [38880:6590520] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 534629619 + [1690220763973] [38880:6590520] [TOO] AdminFabricIndex: 2 + [1690220763973] [38880:6590520] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x5984e13a Peer = 02:0000000000000001 + [1690220763973] [38880:6590520] [EM] <<< [E:50783r S:15324 M:785290 (Ack:104911066)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690220763973] [38880:6590520] [IN] (S) Sending msg 785290 on secure session with LSID: 15324 + [1690220763976] [38880:6593761] [EM] >>> [E:50782r S:15324 M:104911067 (Ack:785289)] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690220763976] [38880:6593761] [EM] Found matching exchange: 50782r, Delegate: 0x0 + [1690220763976] [38880:6593761] [EM] Rxd Ack; Removing MessageCounter:785289 from Retrans Table on exchange 50782r + [1690220763976] [38880:6593761] [EM] >>> [E:50784r S:15324 M:104911068] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690220763976] [38880:6593761] [EM] Handling via exchange: 50784r, Delegate: 0x1035c8be0 + [1690220763976] [38880:6593761] [DMG] ReportDataMessage = + [1690220763976] [38880:6593761] [DMG] { + [1690220763977] [38880:6593761] [DMG] SubscriptionId = 0x943b5fc3, + [1690220763977] [38880:6593761] [DMG] AttributeReportIBs = + [1690220763977] [38880:6593761] [DMG] [ + [1690220763977] [38880:6593761] [DMG] AttributeReportIB = + [1690220763977] [38880:6593761] [DMG] { + [1690220763977] [38880:6593761] [DMG] AttributeDataIB = + [1690220763977] [38880:6593761] [DMG] { + [1690220763977] [38880:6593761] [DMG] DataVersion = 0x1fddccf3, + [1690220763977] [38880:6593761] [DMG] AttributePathIB = + [1690220763977] [38880:6593761] [DMG] { + [1690220763977] [38880:6593761] [DMG] Endpoint = 0x0, + [1690220763977] [38880:6593761] [DMG] Cluster = 0x3c, + [1690220763977] [38880:6593761] [DMG] Attribute = 0x0000_0002, + [1690220763977] [38880:6593761] [DMG] } + [1690220763977] [38880:6593761] [DMG] + [1690220763977] [38880:6593761] [DMG] Data = 65521, + [1690220763977] [38880:6593761] [DMG] }, + [1690220763977] [38880:6593761] [DMG] + [1690220763977] [38880:6593761] [DMG] }, + [1690220763977] [38880:6593761] [DMG] + [1690220763977] [38880:6593761] [DMG] ], + [1690220763977] [38880:6593761] [DMG] + [1690220763977] [38880:6593761] [DMG] InteractionModelRevision = 1 + [1690220763977] [38880:6593761] [DMG] } + [1690220763977] [38880:6593761] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 534629619 + [1690220763977] [38880:6593761] [TOO] AdminVendorId: 65521 + [1690220763977] [38880:6593761] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x943b5fc3 Peer = 02:0000000000000001 + [1690220763977] [38880:6593761] [EM] <<< [E:50784r S:15324 M:785291 (Ack:104911068)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 27: Before expiration of PIXIT.CADMIN.CwDuration seconds set in + step 24, TH_CR1 sends RemoveFabric command to DUT_CE with FabricIndex + set to the fabric index of TH_CR2s fabric" + PICS: OPCREDS.S.C0a.Rsp + verification: | + Before expiration of PIXIT.CADMIN.CwDuration seconds set in step 24, from interactive mode of TH_CR1 send RemoveFabric command with FabricIndex set to the fabric index of TH_CR2’s fabric + + operationalcredentials remove-fabric 2 1 0 --commissioner-name alpha --timedInteractionTimeoutMs 1000 + + On TH_CR1 logs, verify for NOCResponse with statuscode 0 and fabric index equal to fabric index of TH_CR2's fabric + + InvokeResponseMessage = + [1690220880388] [38865:6593769] [DMG] { + [1690220880388] [38865:6593769] [DMG] suppressResponse = false, + [1690220880388] [38865:6593769] [DMG] InvokeResponseIBs = + [1690220880388] [38865:6593769] [DMG] [ + [1690220880388] [38865:6593769] [DMG] InvokeResponseIB = + [1690220880388] [38865:6593769] [DMG] { + [1690220880388] [38865:6593769] [DMG] CommandDataIB = + [1690220880388] [38865:6593769] [DMG] { + [1690220880388] [38865:6593769] [DMG] CommandPathIB = + [1690220880388] [38865:6593769] [DMG] { + [1690220880388] [38865:6593769] [DMG] EndpointId = 0x0, + [1690220880388] [38865:6593769] [DMG] ClusterId = 0x3e, + [1690220880388] [38865:6593769] [DMG] CommandId = 0x8, + [1690220880388] [38865:6593769] [DMG] }, + [1690220880388] [38865:6593769] [DMG] + [1690220880388] [38865:6593769] [DMG] CommandFields = + [1690220880388] [38865:6593769] [DMG] { + [1690220880388] [38865:6593769] [DMG] 0x0 = 0, + [1690220880388] [38865:6593769] [DMG] 0x1 = 2, + [1690220880388] [38865:6593769] [DMG] }, + [1690220880388] [38865:6593769] [DMG] }, + [1690220880388] [38865:6593769] [DMG] + [1690220880388] [38865:6593769] [DMG] }, + [1690220880388] [38865:6593769] [DMG] + [1690220880388] [38865:6593769] [DMG] ], + [1690220880388] [38865:6593769] [DMG] + [1690220880388] [38865:6593769] [DMG] InteractionModelRevision = 1 + [1690220880388] [38865:6593769] [DMG] }, + [1690220880388] [38865:6593769] [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + [1690220880388] [38865:6593769] [TOO] Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + [1690220880388] [38865:6593769] [TOO] NOCResponse: { + [1690220880388] [38865:6593769] [TOO] statusCode: 0 + [1690220880388] [38865:6593769] [TOO] fabricIndex: 2 + [1690220880388] [38865:6593769] [TOO] } + [1690220880388] [38865:6593769] [DMG] ICR moving to [AwaitingDe] + [1690220880389] [38865:6593769] [EM] <<< [E:27147i S:35778 M:151592272 (Ack:264355248)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 28: Verify TH_CR1 receives subscription notifications which show + AdminFabricIndex value to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show AdminFabricIndex value to be null + + ReportDataMessage = + [1690221347664] [38912:6599713] [DMG] { + [1690221347664] [38912:6599713] [DMG] SubscriptionId = 0x7dc4ea87, + [1690221347664] [38912:6599713] [DMG] AttributeReportIBs = + [1690221347664] [38912:6599713] [DMG] [ + [1690221347664] [38912:6599713] [DMG] AttributeReportIB = + [1690221347664] [38912:6599713] [DMG] { + [1690221347664] [38912:6599713] [DMG] AttributeDataIB = + [1690221347664] [38912:6599713] [DMG] { + [1690221347664] [38912:6599713] [DMG] DataVersion = 0x1404feca, + [1690221347664] [38912:6599713] [DMG] AttributePathIB = + [1690221347665] [38912:6599713] [DMG] { + [1690221347665] [38912:6599713] [DMG] Endpoint = 0x0, + [1690221347665] [38912:6599713] [DMG] Cluster = 0x3c, + [1690221347665] [38912:6599713] [DMG] Attribute = 0x0000_0001, + [1690221347665] [38912:6599713] [DMG] } + [1690221347665] [38912:6599713] [DMG] + [1690221347665] [38912:6599713] [DMG] Data = NULL + [1690221347665] [38912:6599713] [DMG] }, + [1690221347665] [38912:6599713] [DMG] + [1690221347665] [38912:6599713] [DMG] }, + [1690221347665] [38912:6599713] [DMG] + [1690221347665] [38912:6599713] [DMG] ], + [1690221347665] [38912:6599713] [DMG] + [1690221347665] [38912:6599713] [DMG] InteractionModelRevision = 1 + [1690221347665] [38912:6599713] [DMG] } + [1690221347665] [38912:6599713] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 335871690 + [1690221347665] [38912:6599713] [TOO] AdminFabricIndex: null + [1690221347665] [38912:6599713] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x7dc4ea87 Peer = 01:0000000000000001 + [1690221347666] [38912:6599713] [EM] <<< [E:41212r S:64671 M:91208151 (Ack:135000952)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: "Step 29: TH_CR1 reads WindowStatus attribute from DUT_CE" + PICS: CADMIN.S.A0000 + verification: | + In interactive mode of TH_CR1, read windowstatus attribute, + + administratorcommissioning read window-status 1 0 --commissioner-name alpha + + Verify TH_CR1 logs for windowstatus to be 1 + + ReportDataMessage = + [1690221400622] [38912:6600376] [DMG] { + [1690221400622] [38912:6600376] [DMG] AttributeReportIBs = + [1690221400622] [38912:6600376] [DMG] [ + [1690221400622] [38912:6600376] [DMG] AttributeReportIB = + [1690221400622] [38912:6600376] [DMG] { + [1690221400622] [38912:6600376] [DMG] AttributeDataIB = + [1690221400622] [38912:6600376] [DMG] { + [1690221400622] [38912:6600376] [DMG] DataVersion = 0x1404feca, + [1690221400622] [38912:6600376] [DMG] AttributePathIB = + [1690221400622] [38912:6600376] [DMG] { + [1690221400622] [38912:6600376] [DMG] Endpoint = 0x0, + [1690221400622] [38912:6600376] [DMG] Cluster = 0x3c, + [1690221400622] [38912:6600376] [DMG] Attribute = 0x0000_0000, + [1690221400622] [38912:6600376] [DMG] } + [1690221400622] [38912:6600376] [DMG] + [1690221400622] [38912:6600376] [DMG] Data = 1, + [1690221400622] [38912:6600376] [DMG] }, + [1690221400622] [38912:6600376] [DMG] + [1690221400622] [38912:6600376] [DMG] }, + [1690221400622] [38912:6600376] [DMG] + [1690221400622] [38912:6600376] [DMG] ], + [1690221400622] [38912:6600376] [DMG] + [1690221400622] [38912:6600376] [DMG] SuppressResponse = true, + [1690221400622] [38912:6600376] [DMG] InteractionModelRevision = 1 + [1690221400622] [38912:6600376] [DMG] } + [1690221400622] [38912:6600376] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 335871690 + [1690221400622] [38912:6600376] [TOO] WindowStatus: 1 + [1690221400622] [38912:6600376] [EM] <<< [E:30395i S:64671 M:91208153 (Ack:135000954)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: "Step 30: TH_CR1 reads AdminVendorID attribute from DUT_CE" + PICS: CADMIN.S.A0002 + verification: | + In interactive mode of TH_CR1, read adminvendorid attribute, + + administratorcommissioning read admin-vendor-id 1 0 --commissioner-name alpha + + On TH_CR1 logs, verify the value of adminvendorid to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690221461458] [38912:6600376] [DMG] { + [1690221461458] [38912:6600376] [DMG] AttributeReportIBs = + [1690221461458] [38912:6600376] [DMG] [ + [1690221461458] [38912:6600376] [DMG] AttributeReportIB = + [1690221461458] [38912:6600376] [DMG] { + [1690221461458] [38912:6600376] [DMG] AttributeDataIB = + [1690221461458] [38912:6600376] [DMG] { + [1690221461458] [38912:6600376] [DMG] DataVersion = 0x1404feca, + [1690221461458] [38912:6600376] [DMG] AttributePathIB = + [1690221461458] [38912:6600376] [DMG] { + [1690221461458] [38912:6600376] [DMG] Endpoint = 0x0, + [1690221461458] [38912:6600376] [DMG] Cluster = 0x3c, + [1690221461458] [38912:6600376] [DMG] Attribute = 0x0000_0002, + [1690221461458] [38912:6600376] [DMG] } + [1690221461458] [38912:6600376] [DMG] + [1690221461458] [38912:6600376] [DMG] Data = 65521, + [1690221461458] [38912:6600376] [DMG] }, + [1690221461458] [38912:6600376] [DMG] + [1690221461458] [38912:6600376] [DMG] }, + [1690221461458] [38912:6600376] [DMG] + [1690221461458] [38912:6600376] [DMG] ], + [1690221461458] [38912:6600376] [DMG] + [1690221461458] [38912:6600376] [DMG] SuppressResponse = true, + [1690221461458] [38912:6600376] [DMG] InteractionModelRevision = 1 + [1690221461458] [38912:6600376] [DMG] } + [1690221461458] [38912:6600376] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 335871690 + [1690221461458] [38912:6600376] [TOO] AdminVendorId: 65521 + [1690221461458] [38912:6600376] [EM] <<< [E:30396i S:64671 M:91208155 (Ack:135000955)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690221461458] [38912:6600376] [IN] (S) Sending msg 91208155 on secure session with LSID: 64671 + [1690221461458] [38912:6600376] [EM] Flushed pending ack for MessageCounter:135000955 on exchange 30396i + >>> + disabled: true + + - label: + "Step 31: Wait for the expiration of PIXIT.CADMIN.CwDuration seconds + that is set in step 24" + verification: | + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 24 + disabled: true + + - label: + "Step 32: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminVendorId to be null + + [1690221509585] [38912:6600376] [EM] >>> [E:41213r S:64671 M:135000956] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690221509585] [38912:6600376] [EM] Handling via exchange: 41213r, Delegate: 0x101e84be0 + [1690221509586] [38912:6600376] [DMG] ReportDataMessage = + [1690221509586] [38912:6600376] [DMG] { + [1690221509586] [38912:6600376] [DMG] SubscriptionId = 0xdd7ad0b4, + [1690221509586] [38912:6600376] [DMG] AttributeReportIBs = + [1690221509586] [38912:6600376] [DMG] [ + [1690221509586] [38912:6600376] [DMG] AttributeReportIB = + [1690221509586] [38912:6600376] [DMG] { + [1690221509586] [38912:6600376] [DMG] AttributeDataIB = + [1690221509586] [38912:6600376] [DMG] { + [1690221509586] [38912:6600376] [DMG] DataVersion = 0x1404fecc, + [1690221509586] [38912:6600376] [DMG] AttributePathIB = + [1690221509586] [38912:6600376] [DMG] { + [1690221509586] [38912:6600376] [DMG] Endpoint = 0x0, + [1690221509586] [38912:6600376] [DMG] Cluster = 0x3c, + [1690221509586] [38912:6600376] [DMG] Attribute = 0x0000_0000, + [1690221509586] [38912:6600376] [DMG] } + [1690221509586] [38912:6600376] [DMG] + [1690221509586] [38912:6600376] [DMG] Data = 0, + [1690221509586] [38912:6600376] [DMG] }, + [1690221509586] [38912:6600376] [DMG] + [1690221509586] [38912:6600376] [DMG] }, + [1690221509586] [38912:6600376] [DMG] + [1690221509586] [38912:6600376] [DMG] ], + [1690221509586] [38912:6600376] [DMG] + [1690221509586] [38912:6600376] [DMG] InteractionModelRevision = 1 + [1690221509586] [38912:6600376] [DMG] } + [1690221509586] [38912:6600376] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 335871692 + [1690221509586] [38912:6600376] [TOO] WindowStatus: 0 + [1690221509586] [38912:6600376] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdd7ad0b4 Peer = 01:0000000000000001 + [1690221509587] [38912:6600376] [EM] <<< [E:41213r S:64671 M:91208156 (Ack:135000956)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690221509587] [38912:6600376] [IN] (S) Sending msg 91208156 on secure session with LSID: 64671 + [1690221509587] [38912:6600376] [EM] >>> [E:41214r S:64671 M:135000957] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690221509587] [38912:6600376] [EM] Handling via exchange: 41214r, Delegate: 0x101e84be0 + [1690221509588] [38912:6600376] [DMG] ReportDataMessage = + [1690221509588] [38912:6600376] [DMG] { + [1690221509588] [38912:6600376] [DMG] SubscriptionId = 0xe3771580, + [1690221509588] [38912:6600376] [DMG] AttributeReportIBs = + [1690221509588] [38912:6600376] [DMG] [ + [1690221509588] [38912:6600376] [DMG] AttributeReportIB = + [1690221509588] [38912:6600376] [DMG] { + [1690221509588] [38912:6600376] [DMG] AttributeDataIB = + [1690221509588] [38912:6600376] [DMG] { + [1690221509588] [38912:6600376] [DMG] DataVersion = 0x1404fecc, + [1690221509588] [38912:6600376] [DMG] AttributePathIB = + [1690221509588] [38912:6600376] [DMG] { + [1690221509588] [38912:6600376] [DMG] Endpoint = 0x0, + [1690221509588] [38912:6600376] [DMG] Cluster = 0x3c, + [1690221509588] [38912:6600376] [DMG] Attribute = 0x0000_0002, + [1690221509588] [38912:6600376] [DMG] } + [1690221509588] [38912:6600376] [DMG] + [1690221509588] [38912:6600376] [DMG] Data = NULL + [1690221509588] [38912:6600376] [DMG] }, + [1690221509588] [38912:6600376] [DMG] + [1690221509588] [38912:6600376] [DMG] }, + [1690221509588] [38912:6600376] [DMG] + [1690221509588] [38912:6600376] [DMG] ], + [1690221509588] [38912:6600376] [DMG] + [1690221509588] [38912:6600376] [DMG] InteractionModelRevision = 1 + [1690221509588] [38912:6600376] [DMG] } + [1690221509588] [38912:6600376] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 335871692 + [1690221509588] [38912:6600376] [TOO] AdminVendorId: null + [1690221509588] [38912:6600376] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xe3771580 Peer = 01:0000000000000001 + [1690221509588] [38912:6600376] [EM] <<< [E:41214r S:64671 M:91208157 (Ack:135000957)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690221509589] [38912:6600376] [IN] (S) Sending msg 91208157 on secure session with LSID: 64671 + [1690221509616] [38912:6600376] [EM] >>> [E:41213r S:64671 M:135000958 (Ack:91208156)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690221509616] [38912:6600376] [EM] Found matching exchange: 41213r, Delegate: 0x0 + [1690221509616] [38912:6600376] [EM] Rxd Ack; Removing MessageCounter:91208156 from Retrans Table on exchange 41213r + [1690221509619] [38912:6600376] [EM] >>> [E:41214r S:64671 M:135000959 (Ack:91208157)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690221509619] [38912:6600376] [EM] Found matching exchange: 41214r, Delegate: 0x0 + [1690221509619] [38912:6600376] [EM] Rxd Ack; Removing MessageCounter:91208157 from Retrans Table on exchange 41214r + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_26.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_26.yaml new file mode 100644 index 00000000000000..a923be83b413ba --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_26.yaml @@ -0,0 +1,2121 @@ +# Copyright (c) 2023 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: + 36.1.26. [TC-CADMIN-1.26] Subscription to the attributes - verify + subscription response [BCM] [DUT - Commissionee] + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: "Precondition" + verification: | + Reset Devices to factory defaults + disabled: true + + - label: "Step 1: TH_CR1 starts a commissioning process with DUT_CE" + PICS: CADMIN.S + verification: | + On TH_CR1 start interactive mode, + + ./chip-tool interactive start + + In the interactive mode of TH_CR1, start commissioning process, + + pairing code 1 34970112332 --commissioner-name alpha + + [1690221652862] [38924:6603872] [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1690221652862] [38924:6603872] [CTL] Received CommissioningComplete response, errorCode=0 + [1690221652862] [38924:6603872] [CTL] Successfully finished commissioning step 'SendComplete' + [1690221652862] [38924:6603872] [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1690221652862] [38924:6603872] [CTL] Performing next commissioning step 'Cleanup' + [1690221652862] [38924:6603872] [IN] SecureSession[0x6000021501e0]: MarkForEviction Type:1 LSID:947 + [1690221652862] [38924:6603872] [SC] SecureSession[0x6000021501e0, LSID:947]: State change 'kActive' --> 'kPendingEviction' + [1690221652862] [38924:6603872] [IN] SecureSession[0x6000021501e0]: Released - Type:1 LSID:947 + [1690221652862] [38924:6603872] [CTL] Successfully finished commissioning step 'Cleanup' + [1690221652863] [38924:6603872] [TOO] Device commissioning completed with success + disabled: true + + - label: "Step 2: TH_CR1 subscribes to WindowStatus attribute on DUT_CE" + PICS: CADMIN.S.A0000 + verification: | + In the interactive mode of TH_CR1, subscribe to windowstatus attribute, + + administratorcommissioning subscribe window-status 10 3000 1 0 --keepSubscriptions true --commissioner-name alpha + + On TH_CR1 logs verify for windowstatus subscription notification, + + + ReportDataMessage = + [1690221695853] [38924:6603872] [DMG] { + [1690221695853] [38924:6603872] [DMG] SubscriptionId = 0xacfb278e, + [1690221695853] [38924:6603872] [DMG] AttributeReportIBs = + [1690221695853] [38924:6603872] [DMG] [ + [1690221695853] [38924:6603872] [DMG] AttributeReportIB = + [1690221695853] [38924:6603872] [DMG] { + [1690221695853] [38924:6603872] [DMG] AttributeDataIB = + [1690221695853] [38924:6603872] [DMG] { + [1690221695853] [38924:6603872] [DMG] DataVersion = 0xed5d129c, + [1690221695853] [38924:6603872] [DMG] AttributePathIB = + [1690221695853] [38924:6603872] [DMG] { + [1690221695853] [38924:6603872] [DMG] Endpoint = 0x0, + [1690221695853] [38924:6603872] [DMG] Cluster = 0x3c, + [1690221695853] [38924:6603872] [DMG] Attribute = 0x0000_0000, + [1690221695853] [38924:6603872] [DMG] } + [1690221695853] [38924:6603872] [DMG] + [1690221695853] [38924:6603872] [DMG] Data = 0, + [1690221695853] [38924:6603872] [DMG] }, + [1690221695853] [38924:6603872] [DMG] + [1690221695853] [38924:6603872] [DMG] }, + [1690221695853] [38924:6603872] [DMG] + [1690221695853] [38924:6603872] [DMG] ], + [1690221695853] [38924:6603872] [DMG] + [1690221695853] [38924:6603872] [DMG] InteractionModelRevision = 1 + [1690221695853] [38924:6603872] [DMG] } + [1690221695854] [38924:6603872] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299804 + [1690221695854] [38924:6603872] [TOO] WindowStatus: 0 + [1690221695854] [38924:6603872] [DMG] MoveToState ReadClient[0x13d005930]: Moving to [AwaitingSu] + disabled: true + + - label: "Step 3: TH_CR1 subscribes to AdminFabricIndex attribute on DUT_CE" + PICS: CADMIN.S.A0001 + verification: | + In the interactive mode of TH_CR1, subscribe to adminfabricindex attribute, + + administratorcommissioning subscribe admin-fabric-index 10 3000 1 0 --keepSubscriptions true --commissioner-name alpha + + On TH_CR1 logs verify for adminfabricindex subscription notification, + + + ReportDataMessage = + [1690221746097] [38924:6605744] [DMG] { + [1690221746097] [38924:6605744] [DMG] SubscriptionId = 0xfdf9f50f, + [1690221746097] [38924:6605744] [DMG] AttributeReportIBs = + [1690221746097] [38924:6605744] [DMG] [ + [1690221746097] [38924:6605744] [DMG] AttributeReportIB = + [1690221746097] [38924:6605744] [DMG] { + [1690221746097] [38924:6605744] [DMG] AttributeDataIB = + [1690221746097] [38924:6605744] [DMG] { + [1690221746097] [38924:6605744] [DMG] DataVersion = 0xed5d129c, + [1690221746097] [38924:6605744] [DMG] AttributePathIB = + [1690221746097] [38924:6605744] [DMG] { + [1690221746097] [38924:6605744] [DMG] Endpoint = 0x0, + [1690221746097] [38924:6605744] [DMG] Cluster = 0x3c, + [1690221746097] [38924:6605744] [DMG] Attribute = 0x0000_0001, + [1690221746097] [38924:6605744] [DMG] } + [1690221746097] [38924:6605744] [DMG] + [1690221746097] [38924:6605744] [DMG] Data = NULL + [1690221746097] [38924:6605744] [DMG] }, + [1690221746097] [38924:6605744] [DMG] + [1690221746097] [38924:6605744] [DMG] }, + [1690221746097] [38924:6605744] [DMG] + [1690221746097] [38924:6605744] [DMG] ], + [1690221746097] [38924:6605744] [DMG] + [1690221746097] [38924:6605744] [DMG] InteractionModelRevision = 1 + [1690221746097] [38924:6605744] [DMG] } + [1690221746098] [38924:6605744] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299804 + [1690221746098] [38924:6605744] [TOO] AdminFabricIndex: null + [1690221746098] [38924:6605744] [DMG] MoveToState ReadClient[0x12ae06a20]: Moving to [AwaitingSu] + disabled: true + + - label: "Step 4: TH_CR1 subscribes to AdminVendorId attribute on DUT_CE" + PICS: CADMIN.S.A0002 + verification: | + In the interactive mode of TH_CR1, subscribe to adminvendorid attribute, + + administratorcommissioning subscribe admin-vendor-id 10 3000 1 0 --keepSubscriptions true --commissioner-name alpha + + On TH_CR1 logs, verify for adminvendorid subscription notification + + + + ReportDataMessage = + [1690221782311] [38924:6605744] [DMG] { + [1690221782311] [38924:6605744] [DMG] SubscriptionId = 0xee00906f, + [1690221782311] [38924:6605744] [DMG] AttributeReportIBs = + [1690221782311] [38924:6605744] [DMG] [ + [1690221782311] [38924:6605744] [DMG] AttributeReportIB = + [1690221782311] [38924:6605744] [DMG] { + [1690221782311] [38924:6605744] [DMG] AttributeDataIB = + [1690221782311] [38924:6605744] [DMG] { + [1690221782311] [38924:6605744] [DMG] DataVersion = 0xed5d129c, + [1690221782311] [38924:6605744] [DMG] AttributePathIB = + [1690221782311] [38924:6605744] [DMG] { + [1690221782311] [38924:6605744] [DMG] Endpoint = 0x0, + [1690221782311] [38924:6605744] [DMG] Cluster = 0x3c, + [1690221782311] [38924:6605744] [DMG] Attribute = 0x0000_0002, + [1690221782311] [38924:6605744] [DMG] } + [1690221782311] [38924:6605744] [DMG] + [1690221782311] [38924:6605744] [DMG] Data = NULL + [1690221782311] [38924:6605744] [DMG] }, + [1690221782312] [38924:6605744] [DMG] + [1690221782312] [38924:6605744] [DMG] }, + [1690221782312] [38924:6605744] [DMG] + [1690221782312] [38924:6605744] [DMG] ], + [1690221782312] [38924:6605744] [DMG] + [1690221782312] [38924:6605744] [DMG] InteractionModelRevision = 1 + [1690221782312] [38924:6605744] [DMG] } + [1690221782312] [38924:6605744] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299804 + [1690221782312] [38924:6605744] [TOO] AdminVendorId: null + [1690221782312] [38924:6605744] [DMG] MoveToState ReadClient[0x12ae06380]: Moving to [AwaitingSu] + disabled: true + + - label: + "Step 5: TH_CR1 opens a commissioning window on DUT_CE using BCM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C01.Rsp + verification: | + In the interactive mode of TH_CR1, send command to open commissioning window using BCM, + + administratorcommissioning open-basic-commissioning-window 180 1 0 --commissioner-name alpha --timedInteractionTimeoutMs 1000 + + + On TH_CR1 logs, verify for pairing window to be successfully opened + + InvokeResponseMessage = + [1690221880347] [38924:6605744] [DMG] { + [1690221880348] [38924:6605744] [DMG] suppressResponse = false, + [1690221880348] [38924:6605744] [DMG] InvokeResponseIBs = + [1690221880348] [38924:6605744] [DMG] [ + [1690221880348] [38924:6605744] [DMG] InvokeResponseIB = + [1690221880348] [38924:6605744] [DMG] { + [1690221880348] [38924:6605744] [DMG] CommandStatusIB = + [1690221880348] [38924:6605744] [DMG] { + [1690221880348] [38924:6605744] [DMG] CommandPathIB = + [1690221880348] [38924:6605744] [DMG] { + [1690221880348] [38924:6605744] [DMG] EndpointId = 0x0, + [1690221880348] [38924:6605744] [DMG] ClusterId = 0x3c, + [1690221880348] [38924:6605744] [DMG] CommandId = 0x1, + [1690221880348] [38924:6605744] [DMG] }, + [1690221880348] [38924:6605744] [DMG] + [1690221880348] [38924:6605744] [DMG] StatusIB = + [1690221880348] [38924:6605744] [DMG] { + [1690221880348] [38924:6605744] [DMG] status = 0x00 (SUCCESS), + [1690221880348] [38924:6605744] [DMG] }, + [1690221880348] [38924:6605744] [DMG] + [1690221880348] [38924:6605744] [DMG] }, + [1690221880348] [38924:6605744] [DMG] + [1690221880348] [38924:6605744] [DMG] }, + [1690221880348] [38924:6605744] [DMG] + [1690221880348] [38924:6605744] [DMG] ], + [1690221880348] [38924:6605744] [DMG] + [1690221880348] [38924:6605744] [DMG] InteractionModelRevision = 1 + [1690221880348] [38924:6605744] [DMG] }, + [1690221880348] [38924:6605744] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1690221880348] [38924:6605744] [DMG] ICR moving to [AwaitingDe] + [1690221880348] [38924:6605744] [EM] <<< [E:2299i S:948 M:8871629 (Ack:208014002)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 6: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR1s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR1s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR1’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR1’s fabric + + ReportDataMessage = + [1690221880349] [38924:6605744] [DMG] { + [1690221880349] [38924:6605744] [DMG] SubscriptionId = 0xacfb278e, + [1690221880349] [38924:6605744] [DMG] AttributeReportIBs = + [1690221880349] [38924:6605744] [DMG] [ + [1690221880349] [38924:6605744] [DMG] AttributeReportIB = + [1690221880349] [38924:6605744] [DMG] { + [1690221880349] [38924:6605744] [DMG] AttributeDataIB = + [1690221880349] [38924:6605744] [DMG] { + [1690221880349] [38924:6605744] [DMG] DataVersion = 0xed5d129f, + [1690221880349] [38924:6605744] [DMG] AttributePathIB = + [1690221880349] [38924:6605744] [DMG] { + [1690221880349] [38924:6605744] [DMG] Endpoint = 0x0, + [1690221880349] [38924:6605744] [DMG] Cluster = 0x3c, + [1690221880349] [38924:6605744] [DMG] Attribute = 0x0000_0000, + [1690221880349] [38924:6605744] [DMG] } + [1690221880349] [38924:6605744] [DMG] + [1690221880349] [38924:6605744] [DMG] Data = 2, + [1690221880349] [38924:6605744] [DMG] }, + [1690221880349] [38924:6605744] [DMG] + [1690221880349] [38924:6605744] [DMG] }, + [1690221880349] [38924:6605744] [DMG] + [1690221880349] [38924:6605744] [DMG] ], + [1690221880349] [38924:6605744] [DMG] + [1690221880349] [38924:6605744] [DMG] InteractionModelRevision = 1 + [1690221880349] [38924:6605744] [DMG] } + [1690221880349] [38924:6605744] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299807 + [1690221880349] [38924:6605744] [TOO] WindowStatus: 2 + [1690221880349] [38924:6605744] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xacfb278e Peer = 01:0000000000000001 + [1690221880349] [38924:6605744] [EM] <<< [E:20748r S:948 M:8871630 (Ack:208014003)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690221880349] [38924:6605744] [IN] (S) Sending msg 8871630 on secure session with LSID: 948 + [1690221880352] [38924:6605744] [EM] >>> [E:20749r S:948 M:208014004] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690221880352] [38924:6605744] [EM] Handling via exchange: 20749r, Delegate: 0x105234be0 + [1690221880352] [38924:6605744] [DMG] ReportDataMessage = + [1690221880352] [38924:6605744] [DMG] { + [1690221880352] [38924:6605744] [DMG] SubscriptionId = 0xfdf9f50f, + [1690221880352] [38924:6605744] [DMG] AttributeReportIBs = + [1690221880352] [38924:6605744] [DMG] [ + [1690221880352] [38924:6605744] [DMG] AttributeReportIB = + [1690221880352] [38924:6605744] [DMG] { + [1690221880352] [38924:6605744] [DMG] AttributeDataIB = + [1690221880352] [38924:6605744] [DMG] { + [1690221880352] [38924:6605744] [DMG] DataVersion = 0xed5d129f, + [1690221880352] [38924:6605744] [DMG] AttributePathIB = + [1690221880352] [38924:6605744] [DMG] { + [1690221880352] [38924:6605744] [DMG] Endpoint = 0x0, + [1690221880352] [38924:6605744] [DMG] Cluster = 0x3c, + [1690221880352] [38924:6605744] [DMG] Attribute = 0x0000_0001, + [1690221880352] [38924:6605744] [DMG] } + [1690221880352] [38924:6605744] [DMG] + [1690221880352] [38924:6605744] [DMG] Data = 1, + [1690221880352] [38924:6605744] [DMG] }, + [1690221880352] [38924:6605744] [DMG] + [1690221880352] [38924:6605744] [DMG] }, + [1690221880352] [38924:6605744] [DMG] + [1690221880352] [38924:6605744] [DMG] ], + [1690221880352] [38924:6605744] [DMG] + [1690221880352] [38924:6605744] [DMG] InteractionModelRevision = 1 + [1690221880352] [38924:6605744] [DMG] } + [1690221880352] [38924:6605744] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299807 + [1690221880352] [38924:6605744] [TOO] AdminFabricIndex: 1 + [1690221880352] [38924:6605744] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfdf9f50f Peer = 01:0000000000000001 + [1690221880352] [38924:6605744] [EM] <<< [E:20749r S:948 M:8871631 (Ack:208014004)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690221880352] [38924:6605744] [IN] (S) Sending msg 8871631 on secure session with LSID: 948 + [1690221880354] [38924:6605744] [EM] >>> [E:20750r S:948 M:208014005] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690221880354] [38924:6605744] [EM] Handling via exchange: 20750r, Delegate: 0x105234be0 + [1690221880354] [38924:6605744] [DMG] ReportDataMessage = + [1690221880354] [38924:6605744] [DMG] { + [1690221880354] [38924:6605744] [DMG] SubscriptionId = 0xee00906f, + [1690221880354] [38924:6605744] [DMG] AttributeReportIBs = + [1690221880354] [38924:6605744] [DMG] [ + [1690221880354] [38924:6605744] [DMG] AttributeReportIB = + [1690221880354] [38924:6605744] [DMG] { + [1690221880354] [38924:6605744] [DMG] AttributeDataIB = + [1690221880354] [38924:6605744] [DMG] { + [1690221880354] [38924:6605744] [DMG] DataVersion = 0xed5d129f, + [1690221880354] [38924:6605744] [DMG] AttributePathIB = + [1690221880354] [38924:6605744] [DMG] { + [1690221880354] [38924:6605744] [DMG] Endpoint = 0x0, + [1690221880354] [38924:6605744] [DMG] Cluster = 0x3c, + [1690221880354] [38924:6605744] [DMG] Attribute = 0x0000_0002, + [1690221880354] [38924:6605744] [DMG] } + [1690221880354] [38924:6605744] [DMG] + [1690221880354] [38924:6605744] [DMG] Data = 65521, + [1690221880354] [38924:6605744] [DMG] }, + [1690221880354] [38924:6605744] [DMG] + [1690221880354] [38924:6605744] [DMG] }, + [1690221880354] [38924:6605744] [DMG] + [1690221880354] [38924:6605744] [DMG] ], + [1690221880354] [38924:6605744] [DMG] + [1690221880354] [38924:6605744] [DMG] InteractionModelRevision = 1 + [1690221880354] [38924:6605744] [DMG] } + [1690221880354] [38924:6605744] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299807 + [1690221880354] [38924:6605744] [TOO] AdminVendorId: 65521 + [1690221880354] [38924:6605744] [DMG] Refresh LivenessCheckTime f + disabled: true + + - label: "Step 7: TH_CR2 starts a commissioning process with DUT_CE" + PICS: CADMIN.S + verification: | + On TH_CR2 start interactive mode, + + ./chip-tool interactive start + + In the interactive mode of TH_CR2, start commissioning process + + + pairing code 1 34970112332 --commissioner-name beta + + + [1690221962385] [38923:6603855] [DMG] }, + [1690221962385] [38923:6603855] [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1690221962385] [38923:6603855] [CTL] Received CommissioningComplete response, errorCode=0 + [1690221962385] [38923:6603855] [CTL] Successfully finished commissioning step 'SendComplete' + [1690221962385] [38923:6603855] [CTL] Commissioning stage next step: 'SendComplete' -> 'Cleanup' + [1690221962385] [38923:6603855] [CTL] Performing next commissioning step 'Cleanup' + [1690221962385] [38923:6603855] [IN] SecureSession[0x600002f90000]: MarkForEviction Type:1 LSID:46404 + [1690221962386] [38923:6603855] [SC] SecureSession[0x600002f90000, LSID:46404]: State change 'kActive' --> 'kPendingEviction' + [1690221962386] [38923:6603855] [IN] SecureSession[0x600002f90000]: Released - Type:1 LSID:46404 + [1690221962386] [38923:6603855] [CTL] Successfully finished commissioning step 'Cleanup' + [1690221962386] [38923:6603855] [TOO] Device commissioning completed with success + disabled: true + + - label: + "Step 8: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + ReportDataMessage = + [1690221962546] [38924:6607510] [DMG] { + [1690221962546] [38924:6607510] [DMG] SubscriptionId = 0xacfb278e, + [1690221962546] [38924:6607510] [DMG] AttributeReportIBs = + [1690221962546] [38924:6607510] [DMG] [ + [1690221962546] [38924:6607510] [DMG] AttributeReportIB = + [1690221962546] [38924:6607510] [DMG] { + [1690221962546] [38924:6607510] [DMG] AttributeDataIB = + [1690221962546] [38924:6607510] [DMG] { + [1690221962546] [38924:6607510] [DMG] DataVersion = 0xed5d12a2, + [1690221962546] [38924:6607510] [DMG] AttributePathIB = + [1690221962546] [38924:6607510] [DMG] { + [1690221962546] [38924:6607510] [DMG] Endpoint = 0x0, + [1690221962546] [38924:6607510] [DMG] Cluster = 0x3c, + [1690221962546] [38924:6607510] [DMG] Attribute = 0x0000_0000, + [1690221962546] [38924:6607510] [DMG] } + [1690221962546] [38924:6607510] [DMG] + [1690221962546] [38924:6607510] [DMG] Data = 0, + [1690221962546] [38924:6607510] [DMG] }, + [1690221962546] [38924:6607510] [DMG] + [1690221962546] [38924:6607510] [DMG] }, + [1690221962546] [38924:6607510] [DMG] + [1690221962546] [38924:6607510] [DMG] ], + [1690221962546] [38924:6607510] [DMG] + [1690221962546] [38924:6607510] [DMG] InteractionModelRevision = 1 + [1690221962546] [38924:6607510] [DMG] } + [1690221962546] [38924:6607510] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299810 + [1690221962546] [38924:6607510] [TOO] WindowStatus: 0 + [1690221962546] [38924:6607510] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xacfb278e Peer = 01:0000000000000001 + [1690221962546] [38924:6607510] [EM] <<< [E:20751r S:948 M:8871633 (Ack:208014009)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690221962546] [38924:6607510] [IN] (S) Sending msg 8871633 on secure session with LSID: 948 + [1690221962549] [38924:6607510] [EM] >>> [E:20752r S:948 M:208014010] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690221962550] [38924:6607510] [EM] Handling via exchange: 20752r, Delegate: 0x105234be0 + [1690221962550] [38924:6607510] [DMG] ReportDataMessage = + [1690221962550] [38924:6607510] [DMG] { + [1690221962550] [38924:6607510] [DMG] SubscriptionId = 0xfdf9f50f, + [1690221962550] [38924:6607510] [DMG] AttributeReportIBs = + [1690221962550] [38924:6607510] [DMG] [ + [1690221962550] [38924:6607510] [DMG] AttributeReportIB = + [1690221962550] [38924:6607510] [DMG] { + [1690221962550] [38924:6607510] [DMG] AttributeDataIB = + [1690221962550] [38924:6607510] [DMG] { + [1690221962550] [38924:6607510] [DMG] DataVersion = 0xed5d12a2, + [1690221962550] [38924:6607510] [DMG] AttributePathIB = + [1690221962550] [38924:6607510] [DMG] { + [1690221962550] [38924:6607510] [DMG] Endpoint = 0x0, + [1690221962550] [38924:6607510] [DMG] Cluster = 0x3c, + [1690221962550] [38924:6607510] [DMG] Attribute = 0x0000_0001, + [1690221962550] [38924:6607510] [DMG] } + [1690221962550] [38924:6607510] [DMG] + [1690221962550] [38924:6607510] [DMG] Data = NULL + [1690221962550] [38924:6607510] [DMG] }, + [1690221962550] [38924:6607510] [DMG] + [1690221962550] [38924:6607510] [DMG] }, + [1690221962550] [38924:6607510] [DMG] + [1690221962550] [38924:6607510] [DMG] ], + [1690221962550] [38924:6607510] [DMG] + [1690221962550] [38924:6607510] [DMG] InteractionModelRevision = 1 + [1690221962550] [38924:6607510] [DMG] } + [1690221962550] [38924:6607510] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299810 + [1690221962550] [38924:6607510] [TOO] AdminFabricIndex: null + [1690221962550] [38924:6607510] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xfdf9f50f Peer = 01:0000000000000001 + [1690221962550] [38924:6607510] [EM] <<< [E:20752r S:948 M:8871634 (Ack:208014010)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690221962550] [38924:6607510] [IN] (S) Sending msg 8871634 on secure session with LSID: 948 + [1690221962550] [38924:6607510] [EM] >>> [E:20753r S:948 M:208014011] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690221962550] [38924:6607510] [EM] Handling via exchange: 20753r, Delegate: 0x105234be0 + [1690221962551] [38924:6607510] [DMG] ReportDataMessage = + [1690221962551] [38924:6607510] [DMG] { + [1690221962551] [38924:6607510] [DMG] SubscriptionId = 0xee00906f, + [1690221962551] [38924:6607510] [DMG] AttributeReportIBs = + [1690221962551] [38924:6607510] [DMG] [ + [1690221962551] [38924:6607510] [DMG] AttributeReportIB = + [1690221962551] [38924:6607510] [DMG] { + [1690221962551] [38924:6607510] [DMG] AttributeDataIB = + [1690221962551] [38924:6607510] [DMG] { + [1690221962551] [38924:6607510] [DMG] DataVersion = 0xed5d12a2, + [1690221962551] [38924:6607510] [DMG] AttributePathIB = + [1690221962551] [38924:6607510] [DMG] { + [1690221962551] [38924:6607510] [DMG] Endpoint = 0x0, + [1690221962551] [38924:6607510] [DMG] Cluster = 0x3c, + [1690221962551] [38924:6607510] [DMG] Attribute = 0x0000_0002, + [1690221962551] [38924:6607510] [DMG] } + [1690221962551] [38924:6607510] [DMG] + [1690221962551] [38924:6607510] [DMG] Data = NULL + [1690221962551] [38924:6607510] [DMG] }, + [1690221962551] [38924:6607510] [DMG] + [1690221962551] [38924:6607510] [DMG] }, + [1690221962551] [38924:6607510] [DMG] + [1690221962551] [38924:6607510] [DMG] ], + [1690221962551] [38924:6607510] [DMG] + [1690221962551] [38924:6607510] [DMG] InteractionModelRevision = 1 + [1690221962551] [38924:6607510] [DMG] } + [1690221962551] [38924:6607510] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299810 + [1690221962551] [38924:6607510] [TOO] AdminVendorId: null + [1690221962551] [38924:6607510] [DMG] Refresh LivenessCheckTime for 3004224 + disabled: true + + - label: "Step 9: TH_CR2 subscribes to WindowStatus attribute on DUT_CE" + PICS: CADMIN.S.A0000 + verification: | + In the interactive mode of TH_CR2, subscribe to windowstatus attribute, + + administratorcommissioning subscribe window-status 10 3000 1 0 --keepSubscriptions true --commissioner-name beta + + On the TH_CR2 logs, verify for windowstatus subscription notification + + + ReportDataMessage = + [1690222029258] [38923:6603855] [DMG] { + [1690222029258] [38923:6603855] [DMG] SubscriptionId = 0x225d94ef, + [1690222029258] [38923:6603855] [DMG] AttributeReportIBs = + [1690222029258] [38923:6603855] [DMG] [ + [1690222029258] [38923:6603855] [DMG] AttributeReportIB = + [1690222029258] [38923:6603855] [DMG] { + [1690222029258] [38923:6603855] [DMG] AttributeDataIB = + [1690222029258] [38923:6603855] [DMG] { + [1690222029258] [38923:6603855] [DMG] DataVersion = 0xed5d12a2, + [1690222029258] [38923:6603855] [DMG] AttributePathIB = + [1690222029258] [38923:6603855] [DMG] { + [1690222029258] [38923:6603855] [DMG] Endpoint = 0x0, + [1690222029258] [38923:6603855] [DMG] Cluster = 0x3c, + [1690222029258] [38923:6603855] [DMG] Attribute = 0x0000_0000, + [1690222029258] [38923:6603855] [DMG] } + [1690222029258] [38923:6603855] [DMG] + [1690222029258] [38923:6603855] [DMG] Data = 0, + [1690222029258] [38923:6603855] [DMG] }, + [1690222029258] [38923:6603855] [DMG] + [1690222029258] [38923:6603855] [DMG] }, + [1690222029258] [38923:6603855] [DMG] + [1690222029258] [38923:6603855] [DMG] ], + [1690222029258] [38923:6603855] [DMG] + [1690222029258] [38923:6603855] [DMG] InteractionModelRevision = 1 + [1690222029258] [38923:6603855] [DMG] } + [1690222029258] [38923:6603855] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299810 + [1690222029258] [38923:6603855] [TOO] WindowStatus: 0 + [1690222029258] [38923:6603855] [DMG] MoveToState ReadClient[0x141f07820]: Moving to [AwaitingSu] + disabled: true + + - label: + "Step 10: TH_CR2 subscribes to AdminFabricIndex attribute on DUT_CE" + PICS: CADMIN.S.A0001 + verification: | + In the interactive mode of TH_CR2, subscribe to adminfabricindex attribute, + + administratorcommissioning subscribe admin-fabric-index 10 3000 1 0 --keepSubscriptions true --commissioner-name beta + + On the TH_CR2 logs, verify for adminfabricindex subscription notification + + + ReportDataMessage = + [1690222061226] [38923:6603855] [DMG] { + [1690222061226] [38923:6603855] [DMG] SubscriptionId = 0x86a3ec94, + [1690222061226] [38923:6603855] [DMG] AttributeReportIBs = + [1690222061226] [38923:6603855] [DMG] [ + [1690222061226] [38923:6603855] [DMG] AttributeReportIB = + [1690222061226] [38923:6603855] [DMG] { + [1690222061226] [38923:6603855] [DMG] AttributeDataIB = + [1690222061226] [38923:6603855] [DMG] { + [1690222061226] [38923:6603855] [DMG] DataVersion = 0xed5d12a2, + [1690222061226] [38923:6603855] [DMG] AttributePathIB = + [1690222061226] [38923:6603855] [DMG] { + [1690222061226] [38923:6603855] [DMG] Endpoint = 0x0, + [1690222061226] [38923:6603855] [DMG] Cluster = 0x3c, + [1690222061226] [38923:6603855] [DMG] Attribute = 0x0000_0001, + [1690222061226] [38923:6603855] [DMG] } + [1690222061226] [38923:6603855] [DMG] + [1690222061226] [38923:6603855] [DMG] Data = NULL + [1690222061226] [38923:6603855] [DMG] }, + [1690222061226] [38923:6603855] [DMG] + [1690222061226] [38923:6603855] [DMG] }, + [1690222061226] [38923:6603855] [DMG] + [1690222061226] [38923:6603855] [DMG] ], + [1690222061226] [38923:6603855] [DMG] + [1690222061226] [38923:6603855] [DMG] InteractionModelRevision = 1 + [1690222061226] [38923:6603855] [DMG] } + [1690222061226] [38923:6603855] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299810 + [1690222061226] [38923:6603855] [TOO] AdminFabricIndex: null + [1690222061226] [38923:6603855] [DMG] MoveToState ReadClient[0x1431042e0]: Moving to [AwaitingSu] + [1690222061226] [38923:6603855] [EM] <<< [E:24082i S:46406 M:27652515 (Ack:25511782)] (S) Msg TX to 1 + disabled: true + + - label: "Step 11: TH_CR2 subscribes to AdminVendorId attribute on DUT_CE" + PICS: CADMIN.S.A0002 + verification: | + In the interactive mode of TH_CR2, subscribe to adminvendorid attribute, + + administratorcommissioning subscribe admin-vendor-id 10 3000 1 0 --keepSubscriptions true --commissioner-name beta + + On the TH_CR2 logs, verify for adminvendorid subscription notification + + + ReportDataMessage = + [1690222096808] [38923:6603855] [DMG] { + [1690222096808] [38923:6603855] [DMG] SubscriptionId = 0x9ce33771, + [1690222096808] [38923:6603855] [DMG] AttributeReportIBs = + [1690222096808] [38923:6603855] [DMG] [ + [1690222096808] [38923:6603855] [DMG] AttributeReportIB = + [1690222096808] [38923:6603855] [DMG] { + [1690222096808] [38923:6603855] [DMG] AttributeDataIB = + [1690222096808] [38923:6603855] [DMG] { + [1690222096808] [38923:6603855] [DMG] DataVersion = 0xed5d12a2, + [1690222096808] [38923:6603855] [DMG] AttributePathIB = + [1690222096808] [38923:6603855] [DMG] { + [1690222096808] [38923:6603855] [DMG] Endpoint = 0x0, + [1690222096808] [38923:6603855] [DMG] Cluster = 0x3c, + [1690222096808] [38923:6603855] [DMG] Attribute = 0x0000_0002, + [1690222096808] [38923:6603855] [DMG] } + [1690222096809] [38923:6603855] [DMG] + [1690222096809] [38923:6603855] [DMG] Data = NULL + [1690222096809] [38923:6603855] [DMG] }, + [1690222096809] [38923:6603855] [DMG] + [1690222096809] [38923:6603855] [DMG] }, + [1690222096809] [38923:6603855] [DMG] + [1690222096809] [38923:6603855] [DMG] ], + [1690222096809] [38923:6603855] [DMG] + [1690222096809] [38923:6603855] [DMG] InteractionModelRevision = 1 + [1690222096809] [38923:6603855] [DMG] } + [1690222096809] [38923:6603855] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299810 + [1690222096809] [38923:6603855] [TOO] AdminVendorId: null + [1690222096809] [38923:6603855] [DMG] MoveToState ReadClient[0x141f07eb0]: Moving to [AwaitingSu] + [1690222096809] [38923:6603855] [EM] <<< [E:24083i S:46406 M:27652518 (Ack:25511784)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 12: TH_CR1 opens a commissioning window on DUT_CE using BCM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C01.Rsp + verification: | + In the interactive mode of TH_CR1, send command to open commissioning window using BCM, + + + administratorcommissioning open-basic-commissioning-window 180 1 0 --commissioner-name alpha --timedInteractionTimeoutMs 1000 + + On TH_CR1 logs, verify for success response + + + InvokeResponseMessage = + [1690222161322] [38924:6608668] [DMG] { + [1690222161322] [38924:6608668] [DMG] suppressResponse = false, + [1690222161322] [38924:6608668] [DMG] InvokeResponseIBs = + [1690222161322] [38924:6608668] [DMG] [ + [1690222161322] [38924:6608668] [DMG] InvokeResponseIB = + [1690222161322] [38924:6608668] [DMG] { + [1690222161322] [38924:6608668] [DMG] CommandStatusIB = + [1690222161322] [38924:6608668] [DMG] { + [1690222161322] [38924:6608668] [DMG] CommandPathIB = + [1690222161322] [38924:6608668] [DMG] { + [1690222161322] [38924:6608668] [DMG] EndpointId = 0x0, + [1690222161322] [38924:6608668] [DMG] ClusterId = 0x3c, + [1690222161322] [38924:6608668] [DMG] CommandId = 0x1, + [1690222161322] [38924:6608668] [DMG] }, + [1690222161322] [38924:6608668] [DMG] + [1690222161322] [38924:6608668] [DMG] StatusIB = + [1690222161322] [38924:6608668] [DMG] { + [1690222161322] [38924:6608668] [DMG] status = 0x00 (SUCCESS), + [1690222161322] [38924:6608668] [DMG] }, + [1690222161322] [38924:6608668] [DMG] + [1690222161322] [38924:6608668] [DMG] }, + [1690222161322] [38924:6608668] [DMG] + [1690222161322] [38924:6608668] [DMG] }, + [1690222161322] [38924:6608668] [DMG] + [1690222161322] [38924:6608668] [DMG] ], + [1690222161322] [38924:6608668] [DMG] + [1690222161322] [38924:6608668] [DMG] InteractionModelRevision = 1 + [1690222161322] [38924:6608668] [DMG] }, + [1690222161322] [38924:6608668] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1690222161322] [38924:6608668] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 13: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR1s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR1s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR1’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR1’s fabric + + ReportDataMessage = + [1690222337066] [38924:6614288] [DMG] { + [1690222337066] [38924:6614288] [DMG] SubscriptionId = 0xdba23243, + [1690222337066] [38924:6614288] [DMG] AttributeReportIBs = + [1690222337066] [38924:6614288] [DMG] [ + [1690222337066] [38924:6614288] [DMG] AttributeReportIB = + [1690222337066] [38924:6614288] [DMG] { + [1690222337066] [38924:6614288] [DMG] AttributeDataIB = + [1690222337066] [38924:6614288] [DMG] { + [1690222337066] [38924:6614288] [DMG] DataVersion = 0xed5d12ab, + [1690222337066] [38924:6614288] [DMG] AttributePathIB = + [1690222337066] [38924:6614288] [DMG] { + [1690222337066] [38924:6614288] [DMG] Endpoint = 0x0, + [1690222337067] [38924:6614288] [DMG] Cluster = 0x3c, + [1690222337067] [38924:6614288] [DMG] Attribute = 0x0000_0000, + [1690222337067] [38924:6614288] [DMG] } + [1690222337067] [38924:6614288] [DMG] + [1690222337067] [38924:6614288] [DMG] Data = 2, + [1690222337067] [38924:6614288] [DMG] }, + [1690222337067] [38924:6614288] [DMG] + [1690222337067] [38924:6614288] [DMG] }, + [1690222337067] [38924:6614288] [DMG] + [1690222337067] [38924:6614288] [DMG] ], + [1690222337067] [38924:6614288] [DMG] + [1690222337067] [38924:6614288] [DMG] InteractionModelRevision = 1 + [1690222337067] [38924:6614288] [DMG] } + [1690222337067] [38924:6614288] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299819 + [1690222337067] [38924:6614288] [TOO] WindowStatus: 2 + [1690222337067] [38924:6614288] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdba23243 Peer = 01:0000000000000001 + [1690222337067] [38924:6614288] [EM] <<< [E:20766r S:948 M:8871656 (Ack:208014028)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222337067] [38924:6614288] [IN] (S) Sending msg 8871656 on secure session with LSID: 948 + [1690222337075] [38924:6614288] [EM] >>> [E:20767r S:948 M:208014029] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222337075] [38924:6614288] [EM] Handling via exchange: 20767r, Delegate: 0x105234be0 + [1690222337075] [38924:6614288] [DMG] ReportDataMessage = + [1690222337075] [38924:6614288] [DMG] { + [1690222337075] [38924:6614288] [DMG] SubscriptionId = 0x3621ba48, + [1690222337075] [38924:6614288] [DMG] AttributeReportIBs = + [1690222337075] [38924:6614288] [DMG] [ + [1690222337075] [38924:6614288] [DMG] AttributeReportIB = + [1690222337075] [38924:6614288] [DMG] { + [1690222337075] [38924:6614288] [DMG] AttributeDataIB = + [1690222337075] [38924:6614288] [DMG] { + [1690222337075] [38924:6614288] [DMG] DataVersion = 0xed5d12ab, + [1690222337075] [38924:6614288] [DMG] AttributePathIB = + [1690222337075] [38924:6614288] [DMG] { + [1690222337075] [38924:6614288] [DMG] Endpoint = 0x0, + [1690222337075] [38924:6614288] [DMG] Cluster = 0x3c, + [1690222337075] [38924:6614288] [DMG] Attribute = 0x0000_0002, + [1690222337075] [38924:6614288] [DMG] } + [1690222337075] [38924:6614288] [DMG] + [1690222337075] [38924:6614288] [DMG] Data = 65521, + [1690222337075] [38924:6614288] [DMG] }, + [1690222337075] [38924:6614288] [DMG] + [1690222337075] [38924:6614288] [DMG] }, + [1690222337075] [38924:6614288] [DMG] + [1690222337075] [38924:6614288] [DMG] ], + [1690222337075] [38924:6614288] [DMG] + [1690222337075] [38924:6614288] [DMG] InteractionModelRevision = 1 + [1690222337075] [38924:6614288] [DMG] } + [1690222337075] [38924:6614288] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299819 + [1690222337075] [38924:6614288] [TOO] AdminVendorId: 65521 + [1690222337075] [38924:6614288] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x3621ba48 Peer = 01:0000000000000001 + [1690222337076] [38924:6614288] [EM] <<< [E:20767r S:948 M:8871657 (Ack:208014029)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222337076] [38924:6614288] [IN] (S) Sending msg 8871657 on secure session with LSID: 948 + [1690222337102] [38924:6614288] [EM] >>> [E:20766r S:948 M:208014030 (Ack:8871656)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222337102] [38924:6614288] [EM] Found matching exchange: 20766r, Delegate: 0x0 + [1690222337102] [38924:6614288] [EM] Rxd Ack; Removing MessageCounter:8871656 from Retrans Table on exchange 20766r + [1690222337102] [38924:6614288] [EM] >>> [E:20767r S:948 M:208014031 (Ack:8871657)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222337102] [38924:6614288] [EM] Found matching exchange: 20767r, Delegate: 0x0 + [1690222337102] [38924:6614288] [EM] Rxd Ack; Removing MessageCounter:8871657 from Retrans Table on exchange 20767r + [1690222337955] [38924:6614165] [EM] >>> [E:20768r S:948 M:208014032] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222337955] [38924:6614165] [EM] Handling via exchange: 20768r, Delegate: 0x105234be0 + [1690222337955] [38924:6614165] [DMG] ReportDataMessage = + [1690222337955] [38924:6614165] [DMG] { + [1690222337955] [38924:6614165] [DMG] SubscriptionId = 0x4daaefab, + [1690222337955] [38924:6614165] [DMG] AttributeReportIBs = + [1690222337955] [38924:6614165] [DMG] [ + [1690222337955] [38924:6614165] [DMG] AttributeReportIB = + [1690222337955] [38924:6614165] [DMG] { + [1690222337955] [38924:6614165] [DMG] AttributeDataIB = + [1690222337955] [38924:6614165] [DMG] { + [1690222337955] [38924:6614165] [DMG] DataVersion = 0xed5d12ab, + [1690222337955] [38924:6614165] [DMG] AttributePathIB = + [1690222337955] [38924:6614165] [DMG] { + [1690222337955] [38924:6614165] [DMG] Endpoint = 0x0, + [1690222337955] [38924:6614165] [DMG] Cluster = 0x3c, + [1690222337955] [38924:6614165] [DMG] Attribute = 0x0000_0001, + [1690222337955] [38924:6614165] [DMG] } + [1690222337955] [38924:6614165] [DMG] + [1690222337955] [38924:6614165] [DMG] Data = 1, + [1690222337955] [38924:6614165] [DMG] }, + [1690222337955] [38924:6614165] [DMG] + [1690222337955] [38924:6614165] [DMG] }, + [1690222337955] [38924:6614165] [DMG] + [1690222337955] [38924:6614165] [DMG] ], + [1690222337955] [38924:6614165] [DMG] + [1690222337955] [38924:6614165] [DMG] InteractionModelRevision = 1 + [1690222337955] [38924:6614165] [DMG] } + [1690222337955] [38924:6614165] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299819 + [1690222337955] [38924:6614165] [TOO] AdminFabricIndex: 1 + [1690222337955] [38924:6614165] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x4daaefab Peer = 01:0000000000000001 + [1690222337955] [38924:6614165] [EM] <<< [E:20768r S:948 M:8871658 (Ack:208014032)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 14: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR1s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR1s fabric" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR1’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR1’s fabric + + ReportDataMessage = + [1690222337060] [38923:6611953] [DMG] { + [1690222337060] [38923:6611953] [DMG] SubscriptionId = 0x225d94ef, + [1690222337060] [38923:6611953] [DMG] AttributeReportIBs = + [1690222337060] [38923:6611953] [DMG] [ + [1690222337060] [38923:6611953] [DMG] AttributeReportIB = + [1690222337060] [38923:6611953] [DMG] { + [1690222337060] [38923:6611953] [DMG] AttributeDataIB = + [1690222337060] [38923:6611953] [DMG] { + [1690222337060] [38923:6611953] [DMG] DataVersion = 0xed5d12ab, + [1690222337060] [38923:6611953] [DMG] AttributePathIB = + [1690222337060] [38923:6611953] [DMG] { + [1690222337060] [38923:6611953] [DMG] Endpoint = 0x0, + [1690222337060] [38923:6611953] [DMG] Cluster = 0x3c, + [1690222337060] [38923:6611953] [DMG] Attribute = 0x0000_0000, + [1690222337060] [38923:6611953] [DMG] } + [1690222337060] [38923:6611953] [DMG] + [1690222337060] [38923:6611953] [DMG] Data = 2, + [1690222337060] [38923:6611953] [DMG] }, + [1690222337060] [38923:6611953] [DMG] + [1690222337060] [38923:6611953] [DMG] }, + [1690222337060] [38923:6611953] [DMG] + [1690222337060] [38923:6611953] [DMG] ], + [1690222337060] [38923:6611953] [DMG] + [1690222337060] [38923:6611953] [DMG] InteractionModelRevision = 1 + [1690222337060] [38923:6611953] [DMG] } + [1690222337060] [38923:6611953] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299819 + [1690222337060] [38923:6611953] [TOO] WindowStatus: 2 + [1690222337060] [38923:6611953] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x225d94ef Peer = 02:0000000000000001 + [1690222337060] [38923:6611953] [EM] <<< [E:20763r S:46405 M:159263157 (Ack:256936833)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690222337060] [38923:6611953] [IN] (S) Sending msg 159263157 on secure session with LSID: 46405 + [1690222337062] [38923:6611953] [EM] >>> [E:20764r S:46406 M:25511800] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222337062] [38923:6611953] [EM] Handling via exchange: 20764r, Delegate: 0x101824be0 + [1690222337063] [38923:6611953] [DMG] ReportDataMessage = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] SubscriptionId = 0x86a3ec94, + [1690222337063] [38923:6611953] [DMG] AttributeReportIBs = + [1690222337063] [38923:6611953] [DMG] [ + [1690222337063] [38923:6611953] [DMG] AttributeReportIB = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] AttributeDataIB = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] DataVersion = 0xed5d12ab, + [1690222337063] [38923:6611953] [DMG] AttributePathIB = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] Endpoint = 0x0, + [1690222337063] [38923:6611953] [DMG] Cluster = 0x3c, + [1690222337063] [38923:6611953] [DMG] Attribute = 0x0000_0001, + [1690222337063] [38923:6611953] [DMG] } + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] Data = 1, + [1690222337063] [38923:6611953] [DMG] }, + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] }, + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] ], + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] InteractionModelRevision = 1 + [1690222337063] [38923:6611953] [DMG] } + [1690222337063] [38923:6611953] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299819 + [1690222337063] [38923:6611953] [TOO] AdminFabricIndex: 1 + [1690222337063] [38923:6611953] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x86a3ec94 Peer = 01:0000000000000001 + [1690222337063] [38923:6611953] [EM] <<< [E:20764r S:46406 M:27652527 (Ack:25511800)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222337063] [38923:6611953] [IN] (S) Sending msg 27652527 on secure session with LSID: 46406 + [1690222337063] [38923:6611953] [EM] >>> [E:20765r S:46406 M:25511801] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222337063] [38923:6611953] [EM] Handling via exchange: 20765r, Delegate: 0x101824be0 + [1690222337063] [38923:6611953] [DMG] ReportDataMessage = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] SubscriptionId = 0x9ce33771, + [1690222337063] [38923:6611953] [DMG] AttributeReportIBs = + [1690222337063] [38923:6611953] [DMG] [ + [1690222337063] [38923:6611953] [DMG] AttributeReportIB = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] AttributeDataIB = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] DataVersion = 0xed5d12ab, + [1690222337063] [38923:6611953] [DMG] AttributePathIB = + [1690222337063] [38923:6611953] [DMG] { + [1690222337063] [38923:6611953] [DMG] Endpoint = 0x0, + [1690222337063] [38923:6611953] [DMG] Cluster = 0x3c, + [1690222337063] [38923:6611953] [DMG] Attribute = 0x0000_0002, + [1690222337063] [38923:6611953] [DMG] } + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] Data = 65521, + [1690222337063] [38923:6611953] [DMG] }, + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] }, + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] ], + [1690222337063] [38923:6611953] [DMG] + [1690222337063] [38923:6611953] [DMG] InteractionModelRevision = 1 + [1690222337063] [38923:6611953] [DMG] } + [1690222337063] [38923:6611953] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299819 + [1690222337063] [38923:6611953] [TOO] AdminVendorId: 65521 + [1690222337063] [38923:6611953] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x9ce33771 Peer = 01:0000000000000001 + [1690222337063] [38923:6611953] [EM] <<< [E:20765r S:46406 M:27652528 (Ack:25511801)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 15: TH_CR1 revokes the commissioning window on DUT_CE using + RevokeCommissioning command" + PICS: CADMIN.S.C02.Rsp + verification: | + In interactive mode of TH_CR1, send command to revoke commissioning window + + administratorcommissioning revoke-commissioning 1 0 --commissioner-name alpha --timedInteractionTimeoutMs 1000 + + Verify TH_CR1 logs for status code 0 (success), + + + InvokeResponseMessage = + [1690222259687] [38924:6613195] [DMG] { + [1690222259687] [38924:6613195] [DMG] suppressResponse = false, + [1690222259687] [38924:6613195] [DMG] InvokeResponseIBs = + [1690222259687] [38924:6613195] [DMG] [ + [1690222259687] [38924:6613195] [DMG] InvokeResponseIB = + [1690222259688] [38924:6613195] [DMG] { + [1690222259688] [38924:6613195] [DMG] CommandStatusIB = + [1690222259688] [38924:6613195] [DMG] { + [1690222259688] [38924:6613195] [DMG] CommandPathIB = + [1690222259688] [38924:6613195] [DMG] { + [1690222259688] [38924:6613195] [DMG] EndpointId = 0x0, + [1690222259688] [38924:6613195] [DMG] ClusterId = 0x3c, + [1690222259688] [38924:6613195] [DMG] CommandId = 0x2, + [1690222259688] [38924:6613195] [DMG] }, + [1690222259688] [38924:6613195] [DMG] + [1690222259688] [38924:6613195] [DMG] StatusIB = + [1690222259688] [38924:6613195] [DMG] { + [1690222259688] [38924:6613195] [DMG] status = 0x00 (SUCCESS), + [1690222259688] [38924:6613195] [DMG] }, + [1690222259688] [38924:6613195] [DMG] + [1690222259688] [38924:6613195] [DMG] }, + [1690222259688] [38924:6613195] [DMG] + [1690222259688] [38924:6613195] [DMG] }, + [1690222259688] [38924:6613195] [DMG] + [1690222259688] [38924:6613195] [DMG] ], + [1690222259688] [38924:6613195] [DMG] + [1690222259688] [38924:6613195] [DMG] InteractionModelRevision = 1 + [1690222259688] [38924:6613195] [DMG] }, + [1690222259688] [38924:6613195] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x0 + [1690222259688] [38924:6613195] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 16: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + ReportDataMessage = + [1690222392514] [38924:6615100] [DMG] { + [1690222392514] [38924:6615100] [DMG] SubscriptionId = 0xdba23243, + [1690222392514] [38924:6615100] [DMG] AttributeReportIBs = + [1690222392514] [38924:6615100] [DMG] [ + [1690222392514] [38924:6615100] [DMG] AttributeReportIB = + [1690222392514] [38924:6615100] [DMG] { + [1690222392514] [38924:6615100] [DMG] AttributeDataIB = + [1690222392514] [38924:6615100] [DMG] { + [1690222392514] [38924:6615100] [DMG] DataVersion = 0xed5d12ae, + [1690222392514] [38924:6615100] [DMG] AttributePathIB = + [1690222392514] [38924:6615100] [DMG] { + [1690222392514] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222392514] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222392514] [38924:6615100] [DMG] Attribute = 0x0000_0000, + [1690222392514] [38924:6615100] [DMG] } + [1690222392514] [38924:6615100] [DMG] + [1690222392514] [38924:6615100] [DMG] Data = 0, + [1690222392514] [38924:6615100] [DMG] }, + [1690222392514] [38924:6615100] [DMG] + [1690222392514] [38924:6615100] [DMG] }, + [1690222392514] [38924:6615100] [DMG] + [1690222392514] [38924:6615100] [DMG] ], + [1690222392514] [38924:6615100] [DMG] + [1690222392514] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222392514] [38924:6615100] [DMG] } + [1690222392514] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299822 + [1690222392514] [38924:6615100] [TOO] WindowStatus: 0 + [1690222392514] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdba23243 Peer = 01:0000000000000001 + [1690222392514] [38924:6615100] [EM] <<< [E:20772r S:948 M:8871662 (Ack:208014036)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222392514] [38924:6615100] [IN] (S) Sending msg 8871662 on secure session with LSID: 948 + [1690222392537] [38924:6615100] [EM] >>> [E:20773r S:948 M:208014037] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222392537] [38924:6615100] [EM] Handling via exchange: 20773r, Delegate: 0x105234be0 + [1690222392537] [38924:6615100] [DMG] ReportDataMessage = + [1690222392537] [38924:6615100] [DMG] { + [1690222392537] [38924:6615100] [DMG] SubscriptionId = 0x3621ba48, + [1690222392537] [38924:6615100] [DMG] AttributeReportIBs = + [1690222392537] [38924:6615100] [DMG] [ + [1690222392537] [38924:6615100] [DMG] AttributeReportIB = + [1690222392537] [38924:6615100] [DMG] { + [1690222392537] [38924:6615100] [DMG] AttributeDataIB = + [1690222392537] [38924:6615100] [DMG] { + [1690222392537] [38924:6615100] [DMG] DataVersion = 0xed5d12ae, + [1690222392537] [38924:6615100] [DMG] AttributePathIB = + [1690222392537] [38924:6615100] [DMG] { + [1690222392537] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222392537] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222392537] [38924:6615100] [DMG] Attribute = 0x0000_0002, + [1690222392537] [38924:6615100] [DMG] } + [1690222392537] [38924:6615100] [DMG] + [1690222392537] [38924:6615100] [DMG] Data = NULL + [1690222392537] [38924:6615100] [DMG] }, + [1690222392537] [38924:6615100] [DMG] + [1690222392537] [38924:6615100] [DMG] }, + [1690222392537] [38924:6615100] [DMG] + [1690222392537] [38924:6615100] [DMG] ], + [1690222392537] [38924:6615100] [DMG] + [1690222392537] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222392537] [38924:6615100] [DMG] } + [1690222392537] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299822 + [1690222392537] [38924:6615100] [TOO] AdminVendorId: null + [1690222392537] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x3621ba48 Peer = 01:0000000000000001 + [1690222392538] [38924:6615100] [EM] <<< [E:20773r S:948 M:8871663 (Ack:208014037)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222392538] [38924:6615100] [IN] (S) Sending msg 8871663 on secure session with LSID: 948 + [1690222392540] [38924:6615100] [EM] >>> [E:20774r S:948 M:208014038] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222392540] [38924:6615100] [EM] Handling via exchange: 20774r, Delegate: 0x105234be0 + [1690222392540] [38924:6615100] [DMG] ReportDataMessage = + [1690222392540] [38924:6615100] [DMG] { + [1690222392540] [38924:6615100] [DMG] SubscriptionId = 0x4daaefab, + [1690222392540] [38924:6615100] [DMG] AttributeReportIBs = + [1690222392541] [38924:6615100] [DMG] [ + [1690222392541] [38924:6615100] [DMG] AttributeReportIB = + [1690222392541] [38924:6615100] [DMG] { + [1690222392541] [38924:6615100] [DMG] AttributeDataIB = + [1690222392541] [38924:6615100] [DMG] { + [1690222392541] [38924:6615100] [DMG] DataVersion = 0xed5d12ae, + [1690222392541] [38924:6615100] [DMG] AttributePathIB = + [1690222392541] [38924:6615100] [DMG] { + [1690222392541] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222392541] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222392541] [38924:6615100] [DMG] Attribute = 0x0000_0001, + [1690222392541] [38924:6615100] [DMG] } + [1690222392541] [38924:6615100] [DMG] + [1690222392541] [38924:6615100] [DMG] Data = NULL + [1690222392541] [38924:6615100] [DMG] }, + [1690222392541] [38924:6615100] [DMG] + [1690222392541] [38924:6615100] [DMG] }, + [1690222392541] [38924:6615100] [DMG] + [1690222392541] [38924:6615100] [DMG] ], + [1690222392541] [38924:6615100] [DMG] + [1690222392541] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222392541] [38924:6615100] [DMG] } + [1690222392541] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299822 + [1690222392541] [38924:6615100] [TOO] AdminFabricIndex: null + [1690222392541] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x4daaefab Peer = 01:0000000000000001 + [1690222392541] [38924:6615100] [EM] <<< [E:20774r S:948 M:8871664 (Ack:208014038)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 17: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + ReportDataMessage = + [1690222392505] [38923:6614289] [DMG] { + [1690222392505] [38923:6614289] [DMG] SubscriptionId = 0x225d94ef, + [1690222392505] [38923:6614289] [DMG] AttributeReportIBs = + [1690222392505] [38923:6614289] [DMG] [ + [1690222392505] [38923:6614289] [DMG] AttributeReportIB = + [1690222392505] [38923:6614289] [DMG] { + [1690222392505] [38923:6614289] [DMG] AttributeDataIB = + [1690222392505] [38923:6614289] [DMG] { + [1690222392505] [38923:6614289] [DMG] DataVersion = 0xed5d12ae, + [1690222392505] [38923:6614289] [DMG] AttributePathIB = + [1690222392505] [38923:6614289] [DMG] { + [1690222392505] [38923:6614289] [DMG] Endpoint = 0x0, + [1690222392505] [38923:6614289] [DMG] Cluster = 0x3c, + [1690222392505] [38923:6614289] [DMG] Attribute = 0x0000_0000, + [1690222392505] [38923:6614289] [DMG] } + [1690222392505] [38923:6614289] [DMG] + [1690222392505] [38923:6614289] [DMG] Data = 0, + [1690222392505] [38923:6614289] [DMG] }, + [1690222392505] [38923:6614289] [DMG] + [1690222392505] [38923:6614289] [DMG] }, + [1690222392505] [38923:6614289] [DMG] + [1690222392505] [38923:6614289] [DMG] ], + [1690222392505] [38923:6614289] [DMG] + [1690222392505] [38923:6614289] [DMG] InteractionModelRevision = 1 + [1690222392505] [38923:6614289] [DMG] } + [1690222392505] [38923:6614289] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299822 + [1690222392505] [38923:6614289] [TOO] WindowStatus: 0 + [1690222392505] [38923:6614289] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x225d94ef Peer = 02:0000000000000001 + [1690222392505] [38923:6614289] [EM] <<< [E:20769r S:46405 M:159263158 (Ack:256936835)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690222392505] [38923:6614289] [IN] (S) Sending msg 159263158 on secure session with LSID: 46405 + [1690222392506] [38923:6614289] [EM] >>> [E:20770r S:46406 M:25511804] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222392506] [38923:6614289] [EM] Handling via exchange: 20770r, Delegate: 0x101824be0 + [1690222392506] [38923:6614289] [DMG] ReportDataMessage = + [1690222392506] [38923:6614289] [DMG] { + [1690222392506] [38923:6614289] [DMG] SubscriptionId = 0x86a3ec94, + [1690222392506] [38923:6614289] [DMG] AttributeReportIBs = + [1690222392506] [38923:6614289] [DMG] [ + [1690222392506] [38923:6614289] [DMG] AttributeReportIB = + [1690222392506] [38923:6614289] [DMG] { + [1690222392506] [38923:6614289] [DMG] AttributeDataIB = + [1690222392506] [38923:6614289] [DMG] { + [1690222392506] [38923:6614289] [DMG] DataVersion = 0xed5d12ae, + [1690222392506] [38923:6614289] [DMG] AttributePathIB = + [1690222392506] [38923:6614289] [DMG] { + [1690222392506] [38923:6614289] [DMG] Endpoint = 0x0, + [1690222392506] [38923:6614289] [DMG] Cluster = 0x3c, + [1690222392506] [38923:6614289] [DMG] Attribute = 0x0000_0001, + [1690222392506] [38923:6614289] [DMG] } + [1690222392506] [38923:6614289] [DMG] + [1690222392506] [38923:6614289] [DMG] Data = NULL + [1690222392506] [38923:6614289] [DMG] }, + [1690222392506] [38923:6614289] [DMG] + [1690222392506] [38923:6614289] [DMG] }, + [1690222392506] [38923:6614289] [DMG] + [1690222392506] [38923:6614289] [DMG] ], + [1690222392506] [38923:6614289] [DMG] + [1690222392506] [38923:6614289] [DMG] InteractionModelRevision = 1 + [1690222392506] [38923:6614289] [DMG] } + [1690222392506] [38923:6614289] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299822 + [1690222392506] [38923:6614289] [TOO] AdminFabricIndex: null + [1690222392506] [38923:6614289] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x86a3ec94 Peer = 01:0000000000000001 + [1690222392506] [38923:6614289] [EM] <<< [E:20770r S:46406 M:27652529 (Ack:25511804)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222392506] [38923:6614289] [IN] (S) Sending msg 27652529 on secure session with LSID: 46406 + [1690222392509] [38923:6615102] [EM] >>> [E:20771r S:46406 M:25511805] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222392509] [38923:6615102] [EM] Handling via exchange: 20771r, Delegate: 0x101824be0 + [1690222392509] [38923:6615102] [DMG] ReportDataMessage = + [1690222392509] [38923:6615102] [DMG] { + [1690222392509] [38923:6615102] [DMG] SubscriptionId = 0x9ce33771, + [1690222392509] [38923:6615102] [DMG] AttributeReportIBs = + [1690222392509] [38923:6615102] [DMG] [ + [1690222392509] [38923:6615102] [DMG] AttributeReportIB = + [1690222392509] [38923:6615102] [DMG] { + [1690222392509] [38923:6615102] [DMG] AttributeDataIB = + [1690222392509] [38923:6615102] [DMG] { + [1690222392509] [38923:6615102] [DMG] DataVersion = 0xed5d12ae, + [1690222392510] [38923:6615102] [DMG] AttributePathIB = + [1690222392510] [38923:6615102] [DMG] { + [1690222392510] [38923:6615102] [DMG] Endpoint = 0x0, + [1690222392510] [38923:6615102] [DMG] Cluster = 0x3c, + [1690222392510] [38923:6615102] [DMG] Attribute = 0x0000_0002, + [1690222392510] [38923:6615102] [DMG] } + [1690222392510] [38923:6615102] [DMG] + [1690222392510] [38923:6615102] [DMG] Data = NULL + [1690222392510] [38923:6615102] [DMG] }, + [1690222392510] [38923:6615102] [DMG] + [1690222392510] [38923:6615102] [DMG] }, + [1690222392510] [38923:6615102] [DMG] + [1690222392510] [38923:6615102] [DMG] ], + [1690222392510] [38923:6615102] [DMG] + [1690222392510] [38923:6615102] [DMG] InteractionModelRevision = 1 + [1690222392510] [38923:6615102] [DMG] } + [1690222392510] [38923:6615102] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299822 + [1690222392510] [38923:6615102] [TOO] AdminVendorId: null + [1690222392510] [38923:6615102] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x9ce33771 Peer = 01:0000000000000001 + [1690222392510] [38923:6615102] [EM] <<< [E:20771r S:46406 M:27652530 (Ack:25511805)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 18: TH_CR2 opens a commissioning window on DUT_CE using BCM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C01.Rsp + verification: | + In interactive mode of TH_CR2, send command to open commissioning window using BCM + + administratorcommissioning open-basic-commissioning-window 180 1 0 --commissioner-name beta --timedInteractionTimeoutMs 1000 + + On TH_CR2 logs, verify for commissioning window to be open + + + InvokeResponseMessage = + [1690222451910] [38923:6615102] [DMG] { + [1690222451910] [38923:6615102] [DMG] suppressResponse = false, + [1690222451910] [38923:6615102] [DMG] InvokeResponseIBs = + [1690222451910] [38923:6615102] [DMG] [ + [1690222451910] [38923:6615102] [DMG] InvokeResponseIB = + [1690222451910] [38923:6615102] [DMG] { + [1690222451910] [38923:6615102] [DMG] CommandStatusIB = + [1690222451910] [38923:6615102] [DMG] { + [1690222451910] [38923:6615102] [DMG] CommandPathIB = + [1690222451910] [38923:6615102] [DMG] { + [1690222451910] [38923:6615102] [DMG] EndpointId = 0x0, + [1690222451910] [38923:6615102] [DMG] ClusterId = 0x3c, + [1690222451910] [38923:6615102] [DMG] CommandId = 0x1, + [1690222451910] [38923:6615102] [DMG] }, + [1690222451910] [38923:6615102] [DMG] + [1690222451910] [38923:6615102] [DMG] StatusIB = + [1690222451910] [38923:6615102] [DMG] { + [1690222451910] [38923:6615102] [DMG] status = 0x00 (SUCCESS), + [1690222451910] [38923:6615102] [DMG] }, + [1690222451910] [38923:6615102] [DMG] + [1690222451910] [38923:6615102] [DMG] }, + [1690222451910] [38923:6615102] [DMG] + [1690222451910] [38923:6615102] [DMG] }, + [1690222451910] [38923:6615102] [DMG] + [1690222451910] [38923:6615102] [DMG] ], + [1690222451910] [38923:6615102] [DMG] + [1690222451910] [38923:6615102] [DMG] InteractionModelRevision = 1 + [1690222451910] [38923:6615102] [DMG] }, + [1690222451910] [38923:6615102] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1690222451910] [38923:6615102] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 19: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690222451921] [38924:6615100] [DMG] { + [1690222451921] [38924:6615100] [DMG] SubscriptionId = 0xdba23243, + [1690222451921] [38924:6615100] [DMG] AttributeReportIBs = + [1690222451921] [38924:6615100] [DMG] [ + [1690222451921] [38924:6615100] [DMG] AttributeReportIB = + [1690222451921] [38924:6615100] [DMG] { + [1690222451921] [38924:6615100] [DMG] AttributeDataIB = + [1690222451921] [38924:6615100] [DMG] { + [1690222451921] [38924:6615100] [DMG] DataVersion = 0xed5d12b1, + [1690222451921] [38924:6615100] [DMG] AttributePathIB = + [1690222451921] [38924:6615100] [DMG] { + [1690222451921] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222451921] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222451921] [38924:6615100] [DMG] Attribute = 0x0000_0000, + [1690222451921] [38924:6615100] [DMG] } + [1690222451921] [38924:6615100] [DMG] + [1690222451921] [38924:6615100] [DMG] Data = 2, + [1690222451921] [38924:6615100] [DMG] }, + [1690222451921] [38924:6615100] [DMG] + [1690222451921] [38924:6615100] [DMG] }, + [1690222451921] [38924:6615100] [DMG] + [1690222451921] [38924:6615100] [DMG] ], + [1690222451921] [38924:6615100] [DMG] + [1690222451921] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222451921] [38924:6615100] [DMG] } + [1690222451922] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299825 + [1690222451922] [38924:6615100] [TOO] WindowStatus: 2 + [1690222451922] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdba23243 Peer = 01:0000000000000001 + [1690222451922] [38924:6615100] [EM] <<< [E:20778r S:948 M:8871665 (Ack:208014042)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222451922] [38924:6615100] [IN] (S) Sending msg 8871665 on secure session with LSID: 948 + [1690222451929] [38924:6615100] [EM] >>> [E:20779r S:948 M:208014043] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222451929] [38924:6615100] [EM] Handling via exchange: 20779r, Delegate: 0x105234be0 + [1690222451929] [38924:6615100] [DMG] ReportDataMessage = + [1690222451929] [38924:6615100] [DMG] { + [1690222451929] [38924:6615100] [DMG] SubscriptionId = 0x3621ba48, + [1690222451929] [38924:6615100] [DMG] AttributeReportIBs = + [1690222451929] [38924:6615100] [DMG] [ + [1690222451929] [38924:6615100] [DMG] AttributeReportIB = + [1690222451929] [38924:6615100] [DMG] { + [1690222451929] [38924:6615100] [DMG] AttributeDataIB = + [1690222451929] [38924:6615100] [DMG] { + [1690222451929] [38924:6615100] [DMG] DataVersion = 0xed5d12b1, + [1690222451929] [38924:6615100] [DMG] AttributePathIB = + [1690222451929] [38924:6615100] [DMG] { + [1690222451929] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222451929] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222451929] [38924:6615100] [DMG] Attribute = 0x0000_0002, + [1690222451929] [38924:6615100] [DMG] } + [1690222451929] [38924:6615100] [DMG] + [1690222451929] [38924:6615100] [DMG] Data = 65521, + [1690222451929] [38924:6615100] [DMG] }, + [1690222451929] [38924:6615100] [DMG] + [1690222451929] [38924:6615100] [DMG] }, + [1690222451929] [38924:6615100] [DMG] + [1690222451929] [38924:6615100] [DMG] ], + [1690222451929] [38924:6615100] [DMG] + [1690222451929] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222451929] [38924:6615100] [DMG] } + [1690222451929] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299825 + [1690222451929] [38924:6615100] [TOO] AdminVendorId: 65521 + [1690222451929] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x3621ba48 Peer = 01:0000000000000001 + [1690222451930] [38924:6615100] [EM] <<< [E:20779r S:948 M:8871666 (Ack:208014043)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222451930] [38924:6615100] [IN] (S) Sending msg 8871666 on secure session with LSID: 948 + [1690222451938] [38924:6615100] [EM] >>> [E:20780r S:948 M:208014044] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222451938] [38924:6615100] [EM] Handling via exchange: 20780r, Delegate: 0x105234be0 + [1690222451938] [38924:6615100] [DMG] ReportDataMessage = + [1690222451938] [38924:6615100] [DMG] { + [1690222451938] [38924:6615100] [DMG] SubscriptionId = 0x4daaefab, + [1690222451938] [38924:6615100] [DMG] AttributeReportIBs = + [1690222451938] [38924:6615100] [DMG] [ + [1690222451938] [38924:6615100] [DMG] AttributeReportIB = + [1690222451938] [38924:6615100] [DMG] { + [1690222451938] [38924:6615100] [DMG] AttributeDataIB = + [1690222451938] [38924:6615100] [DMG] { + [1690222451938] [38924:6615100] [DMG] DataVersion = 0xed5d12b1, + [1690222451938] [38924:6615100] [DMG] AttributePathIB = + [1690222451938] [38924:6615100] [DMG] { + [1690222451938] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222451938] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222451938] [38924:6615100] [DMG] Attribute = 0x0000_0001, + [1690222451938] [38924:6615100] [DMG] } + [1690222451938] [38924:6615100] [DMG] + [1690222451938] [38924:6615100] [DMG] Data = 2, + [1690222451938] [38924:6615100] [DMG] }, + [1690222451938] [38924:6615100] [DMG] + [1690222451938] [38924:6615100] [DMG] }, + [1690222451938] [38924:6615100] [DMG] + [1690222451938] [38924:6615100] [DMG] ], + [1690222451938] [38924:6615100] [DMG] + [1690222451938] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222451938] [38924:6615100] [DMG] } + [1690222451938] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299825 + [1690222451938] [38924:6615100] [TOO] AdminFabricIndex: 2 + [1690222451938] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x4daaefab Peer = 01:0000000000000001 + [1690222451938] [38924:6615100] [EM] <<< [E:20780r S:948 M:8871667 (Ack:208014044)] + disabled: true + + - label: + "Step 20: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690222451914] [38923:6615102] [DMG] { + [1690222451914] [38923:6615102] [DMG] SubscriptionId = 0x225d94ef, + [1690222451914] [38923:6615102] [DMG] AttributeReportIBs = + [1690222451914] [38923:6615102] [DMG] [ + [1690222451914] [38923:6615102] [DMG] AttributeReportIB = + [1690222451914] [38923:6615102] [DMG] { + [1690222451914] [38923:6615102] [DMG] AttributeDataIB = + [1690222451914] [38923:6615102] [DMG] { + [1690222451914] [38923:6615102] [DMG] DataVersion = 0xed5d12b1, + [1690222451914] [38923:6615102] [DMG] AttributePathIB = + [1690222451914] [38923:6615102] [DMG] { + [1690222451914] [38923:6615102] [DMG] Endpoint = 0x0, + [1690222451914] [38923:6615102] [DMG] Cluster = 0x3c, + [1690222451914] [38923:6615102] [DMG] Attribute = 0x0000_0000, + [1690222451914] [38923:6615102] [DMG] } + [1690222451914] [38923:6615102] [DMG] + [1690222451914] [38923:6615102] [DMG] Data = 2, + [1690222451914] [38923:6615102] [DMG] }, + [1690222451914] [38923:6615102] [DMG] + [1690222451914] [38923:6615102] [DMG] }, + [1690222451914] [38923:6615102] [DMG] + [1690222451914] [38923:6615102] [DMG] ], + [1690222451914] [38923:6615102] [DMG] + [1690222451914] [38923:6615102] [DMG] InteractionModelRevision = 1 + [1690222451914] [38923:6615102] [DMG] } + [1690222451914] [38923:6615102] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299825 + [1690222451914] [38923:6615102] [TOO] WindowStatus: 2 + [1690222451914] [38923:6615102] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x225d94ef Peer = 02:0000000000000001 + [1690222451914] [38923:6615102] [EM] <<< [E:20775r S:46405 M:159263162 (Ack:256936839)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690222451914] [38923:6615102] [IN] (S) Sending msg 159263162 on secure session with LSID: 46405 + [1690222451917] [38923:6615102] [EM] >>> [E:20776r S:46406 M:25511808] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222451917] [38923:6615102] [EM] Handling via exchange: 20776r, Delegate: 0x101824be0 + [1690222451917] [38923:6615102] [DMG] ReportDataMessage = + [1690222451917] [38923:6615102] [DMG] { + [1690222451917] [38923:6615102] [DMG] SubscriptionId = 0x86a3ec94, + [1690222451917] [38923:6615102] [DMG] AttributeReportIBs = + [1690222451917] [38923:6615102] [DMG] [ + [1690222451917] [38923:6615102] [DMG] AttributeReportIB = + [1690222451917] [38923:6615102] [DMG] { + [1690222451917] [38923:6615102] [DMG] AttributeDataIB = + [1690222451917] [38923:6615102] [DMG] { + [1690222451917] [38923:6615102] [DMG] DataVersion = 0xed5d12b1, + [1690222451917] [38923:6615102] [DMG] AttributePathIB = + [1690222451917] [38923:6615102] [DMG] { + [1690222451917] [38923:6615102] [DMG] Endpoint = 0x0, + [1690222451917] [38923:6615102] [DMG] Cluster = 0x3c, + [1690222451917] [38923:6615102] [DMG] Attribute = 0x0000_0001, + [1690222451917] [38923:6615102] [DMG] } + [1690222451917] [38923:6615102] [DMG] + [1690222451917] [38923:6615102] [DMG] Data = 2, + [1690222451917] [38923:6615102] [DMG] }, + [1690222451917] [38923:6615102] [DMG] + [1690222451917] [38923:6615102] [DMG] }, + [1690222451917] [38923:6615102] [DMG] + [1690222451917] [38923:6615102] [DMG] ], + [1690222451917] [38923:6615102] [DMG] + [1690222451917] [38923:6615102] [DMG] InteractionModelRevision = 1 + [1690222451917] [38923:6615102] [DMG] } + [1690222451917] [38923:6615102] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299825 + [1690222451917] [38923:6615102] [TOO] AdminFabricIndex: 2 + [1690222451917] [38923:6615102] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x86a3ec94 Peer = 01:0000000000000001 + [1690222451917] [38923:6615102] [EM] <<< [E:20776r S:46406 M:27652531 (Ack:25511808)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222451917] [38923:6615102] [IN] (S) Sending msg 27652531 on secure session with LSID: 46406 + [1690222451918] [38923:6615102] [EM] >>> [E:20777r S:46406 M:25511809] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222451918] [38923:6615102] [EM] Handling via exchange: 20777r, Delegate: 0x101824be0 + [1690222451918] [38923:6615102] [DMG] ReportDataMessage = + [1690222451918] [38923:6615102] [DMG] { + [1690222451918] [38923:6615102] [DMG] SubscriptionId = 0x9ce33771, + [1690222451918] [38923:6615102] [DMG] AttributeReportIBs = + [1690222451918] [38923:6615102] [DMG] [ + [1690222451918] [38923:6615102] [DMG] AttributeReportIB = + [1690222451918] [38923:6615102] [DMG] { + [1690222451918] [38923:6615102] [DMG] AttributeDataIB = + [1690222451918] [38923:6615102] [DMG] { + [1690222451918] [38923:6615102] [DMG] DataVersion = 0xed5d12b1, + [1690222451918] [38923:6615102] [DMG] AttributePathIB = + [1690222451918] [38923:6615102] [DMG] { + [1690222451918] [38923:6615102] [DMG] Endpoint = 0x0, + [1690222451918] [38923:6615102] [DMG] Cluster = 0x3c, + [1690222451918] [38923:6615102] [DMG] Attribute = 0x0000_0002, + [1690222451918] [38923:6615102] [DMG] } + [1690222451918] [38923:6615102] [DMG] + [1690222451918] [38923:6615102] [DMG] Data = 65521, + [1690222451918] [38923:6615102] [DMG] }, + [1690222451918] [38923:6615102] [DMG] + [1690222451918] [38923:6615102] [DMG] }, + [1690222451918] [38923:6615102] [DMG] + [1690222451918] [38923:6615102] [DMG] ], + [1690222451918] [38923:6615102] [DMG] + [1690222451918] [38923:6615102] [DMG] InteractionModelRevision = 1 + [1690222451918] [38923:6615102] [DMG] } + [1690222451918] [38923:6615102] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299825 + [1690222451918] [38923:6615102] [TOO] AdminVendorId: 65521 + [1690222451918] [38923:6615102] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x9ce33771 Peer = 01:0000000000000001 + [1690222451919] [38923:6615102] [EM] <<< [E:20777r S:46406 M:27652532 (Ack:25511809)] + disabled: true + + - label: + "Step 21: Wait for the expiration of PIXIT.CADMIN.CwDuration seconds + that is set in step 18" + verification: | + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 18 + disabled: true + + - label: + "Step 22: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + [1690222631903] [38924:6615100] [EM] >>> [E:20784r S:948 M:208014048] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222631903] [38924:6615100] [EM] Handling via exchange: 20784r, Delegate: 0x105234be0 + [1690222631903] [38924:6615100] [DMG] ReportDataMessage = + [1690222631903] [38924:6615100] [DMG] { + [1690222631903] [38924:6615100] [DMG] SubscriptionId = 0xdba23243, + [1690222631903] [38924:6615100] [DMG] AttributeReportIBs = + [1690222631903] [38924:6615100] [DMG] [ + [1690222631903] [38924:6615100] [DMG] AttributeReportIB = + [1690222631903] [38924:6615100] [DMG] { + [1690222631903] [38924:6615100] [DMG] AttributeDataIB = + [1690222631903] [38924:6615100] [DMG] { + [1690222631903] [38924:6615100] [DMG] DataVersion = 0xed5d12b4, + [1690222631903] [38924:6615100] [DMG] AttributePathIB = + [1690222631903] [38924:6615100] [DMG] { + [1690222631903] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222631903] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222631903] [38924:6615100] [DMG] Attribute = 0x0000_0000, + [1690222631903] [38924:6615100] [DMG] } + [1690222631903] [38924:6615100] [DMG] + [1690222631903] [38924:6615100] [DMG] Data = 0, + [1690222631903] [38924:6615100] [DMG] }, + [1690222631903] [38924:6615100] [DMG] + [1690222631903] [38924:6615100] [DMG] }, + [1690222631903] [38924:6615100] [DMG] + [1690222631903] [38924:6615100] [DMG] ], + [1690222631903] [38924:6615100] [DMG] + [1690222631903] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222631903] [38924:6615100] [DMG] } + [1690222631903] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299828 + [1690222631903] [38924:6615100] [TOO] WindowStatus: 0 + [1690222631903] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdba23243 Peer = 01:0000000000000001 + [1690222631904] [38924:6615100] [EM] <<< [E:20784r S:948 M:8871668 (Ack:208014048)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222631904] [38924:6615100] [IN] (S) Sending msg 8871668 on secure session with LSID: 948 + [1690222631928] [38924:6615100] [EM] >>> [E:20785r S:948 M:208014049] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222631928] [38924:6615100] [EM] Handling via exchange: 20785r, Delegate: 0x105234be0 + [1690222631928] [38924:6615100] [DMG] ReportDataMessage = + [1690222631928] [38924:6615100] [DMG] { + [1690222631928] [38924:6615100] [DMG] SubscriptionId = 0x3621ba48, + [1690222631928] [38924:6615100] [DMG] AttributeReportIBs = + [1690222631928] [38924:6615100] [DMG] [ + [1690222631928] [38924:6615100] [DMG] AttributeReportIB = + [1690222631928] [38924:6615100] [DMG] { + [1690222631928] [38924:6615100] [DMG] AttributeDataIB = + [1690222631928] [38924:6615100] [DMG] { + [1690222631928] [38924:6615100] [DMG] DataVersion = 0xed5d12b4, + [1690222631928] [38924:6615100] [DMG] AttributePathIB = + [1690222631928] [38924:6615100] [DMG] { + [1690222631928] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222631928] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222631928] [38924:6615100] [DMG] Attribute = 0x0000_0002, + [1690222631928] [38924:6615100] [DMG] } + [1690222631928] [38924:6615100] [DMG] + [1690222631928] [38924:6615100] [DMG] Data = NULL + [1690222631928] [38924:6615100] [DMG] }, + [1690222631928] [38924:6615100] [DMG] + [1690222631928] [38924:6615100] [DMG] }, + [1690222631928] [38924:6615100] [DMG] + [1690222631928] [38924:6615100] [DMG] ], + [1690222631928] [38924:6615100] [DMG] + [1690222631928] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222631928] [38924:6615100] [DMG] } + [1690222631928] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299828 + [1690222631928] [38924:6615100] [TOO] AdminVendorId: null + [1690222631929] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x3621ba48 Peer = 01:0000000000000001 + [1690222631929] [38924:6615100] [EM] <<< [E:20785r S:948 M:8871669 (Ack:208014049)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222631929] [38924:6615100] [IN] (S) Sending msg 8871669 on secure session with LSID: 948 + [1690222631930] [38924:6615100] [EM] >>> [E:20786r S:948 M:208014050] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222631930] [38924:6615100] [EM] Handling via exchange: 20786r, Delegate: 0x105234be0 + [1690222631930] [38924:6615100] [DMG] ReportDataMessage = + [1690222631930] [38924:6615100] [DMG] { + [1690222631930] [38924:6615100] [DMG] SubscriptionId = 0x4daaefab, + [1690222631930] [38924:6615100] [DMG] AttributeReportIBs = + [1690222631930] [38924:6615100] [DMG] [ + [1690222631930] [38924:6615100] [DMG] AttributeReportIB = + [1690222631930] [38924:6615100] [DMG] { + [1690222631930] [38924:6615100] [DMG] AttributeDataIB = + [1690222631930] [38924:6615100] [DMG] { + [1690222631930] [38924:6615100] [DMG] DataVersion = 0xed5d12b4, + [1690222631931] [38924:6615100] [DMG] AttributePathIB = + [1690222631931] [38924:6615100] [DMG] { + [1690222631931] [38924:6615100] [DMG] Endpoint = 0x0, + [1690222631931] [38924:6615100] [DMG] Cluster = 0x3c, + [1690222631931] [38924:6615100] [DMG] Attribute = 0x0000_0001, + [1690222631931] [38924:6615100] [DMG] } + [1690222631931] [38924:6615100] [DMG] + [1690222631931] [38924:6615100] [DMG] Data = NULL + [1690222631931] [38924:6615100] [DMG] }, + [1690222631931] [38924:6615100] [DMG] + [1690222631931] [38924:6615100] [DMG] }, + [1690222631931] [38924:6615100] [DMG] + [1690222631931] [38924:6615100] [DMG] ], + [1690222631931] [38924:6615100] [DMG] + [1690222631931] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690222631931] [38924:6615100] [DMG] } + [1690222631931] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299828 + [1690222631931] [38924:6615100] [TOO] AdminFabricIndex: null + [1690222631931] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x4daaefab Peer = 01:0000000000000001 + [1690222631931] [38924:6615100] [EM] <<< [E:20786r S:948 M:8871670 (Ack:208014050)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222631931] [38924:6615100] [IN] (S) Sending msg 8871670 on secure session with LSID: 948 + [1690222631935] [38924:6615100] [EM] >>> [E:20784r S:948 M:208014051 (Ack:8871668)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222631935] [38924:6615100] [EM] Found matching exchange: 20784r, Delegate: 0x0 + [1690222631935] [38924:6615100] [EM] Rxd Ack; Removing MessageCounter:8871668 from Retrans Table on exchange 20784r + [1690222631943] [38924:6615100] [EM] >>> [E:20785r S:948 M:208014052 (Ack:8871669)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222631943] [38924:6615100] [EM] Found matching exchange: 20785r, Delegate: 0x0 + [1690222631943] [38924:6615100] [EM] Rxd Ack; Removing MessageCounter:8871669 from Retrans Table on exchange 20785r + [1690222631948] [38924:6615100] [EM] >>> [E:20786r S:948 M:208014053 (Ack:8871670)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222631948] [38924:6615100] [EM] Found matching exchange: 20786r, Delegate: 0x0 + [1690222631948] [38924:6615100] [EM] Rxd Ack; Removing MessageCounter:8871670 from Retrans Table on exchange 20786r + disabled: true + + - label: + "Step 23: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 0, AdminFabricIndex value to be null, + AdminVendorId to be null" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 0, AdminFabricIndex value to be null, AdminVendorId to be null + + [1690222631896] [38923:6615905] [EM] >>> [E:20781r S:46405 M:256936841] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0001:05 (IM:ReportData) + [1690222631896] [38923:6615905] [EM] Handling via exchange: 20781r, Delegate: 0x101824be0 + [1690222631896] [38923:6615905] [DMG] ReportDataMessage = + [1690222631896] [38923:6615905] [DMG] { + [1690222631896] [38923:6615905] [DMG] SubscriptionId = 0x225d94ef, + [1690222631896] [38923:6615905] [DMG] AttributeReportIBs = + [1690222631896] [38923:6615905] [DMG] [ + [1690222631896] [38923:6615905] [DMG] AttributeReportIB = + [1690222631896] [38923:6615905] [DMG] { + [1690222631896] [38923:6615905] [DMG] AttributeDataIB = + [1690222631896] [38923:6615905] [DMG] { + [1690222631896] [38923:6615905] [DMG] DataVersion = 0xed5d12b4, + [1690222631896] [38923:6615905] [DMG] AttributePathIB = + [1690222631896] [38923:6615905] [DMG] { + [1690222631896] [38923:6615905] [DMG] Endpoint = 0x0, + [1690222631896] [38923:6615905] [DMG] Cluster = 0x3c, + [1690222631896] [38923:6615905] [DMG] Attribute = 0x0000_0000, + [1690222631896] [38923:6615905] [DMG] } + [1690222631896] [38923:6615905] [DMG] + [1690222631896] [38923:6615905] [DMG] Data = 0, + [1690222631896] [38923:6615905] [DMG] }, + [1690222631896] [38923:6615905] [DMG] + [1690222631896] [38923:6615905] [DMG] }, + [1690222631896] [38923:6615905] [DMG] + [1690222631896] [38923:6615905] [DMG] ], + [1690222631896] [38923:6615905] [DMG] + [1690222631896] [38923:6615905] [DMG] InteractionModelRevision = 1 + [1690222631896] [38923:6615905] [DMG] } + [1690222631897] [38923:6615905] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299828 + [1690222631897] [38923:6615905] [TOO] WindowStatus: 0 + [1690222631897] [38923:6615905] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x225d94ef Peer = 02:0000000000000001 + [1690222631897] [38923:6615905] [EM] <<< [E:20781r S:46405 M:159263163 (Ack:256936841)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690222631897] [38923:6615905] [IN] (S) Sending msg 159263163 on secure session with LSID: 46405 + [1690222631898] [38923:6615905] [EM] >>> [E:20782r S:46406 M:25511812] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222631898] [38923:6615905] [EM] Handling via exchange: 20782r, Delegate: 0x101824be0 + [1690222631898] [38923:6615905] [DMG] ReportDataMessage = + [1690222631898] [38923:6615905] [DMG] { + [1690222631898] [38923:6615905] [DMG] SubscriptionId = 0x86a3ec94, + [1690222631898] [38923:6615905] [DMG] AttributeReportIBs = + [1690222631898] [38923:6615905] [DMG] [ + [1690222631898] [38923:6615905] [DMG] AttributeReportIB = + [1690222631898] [38923:6615905] [DMG] { + [1690222631898] [38923:6615905] [DMG] AttributeDataIB = + [1690222631898] [38923:6615905] [DMG] { + [1690222631898] [38923:6615905] [DMG] DataVersion = 0xed5d12b4, + [1690222631898] [38923:6615905] [DMG] AttributePathIB = + [1690222631898] [38923:6615905] [DMG] { + [1690222631898] [38923:6615905] [DMG] Endpoint = 0x0, + [1690222631898] [38923:6615905] [DMG] Cluster = 0x3c, + [1690222631898] [38923:6615905] [DMG] Attribute = 0x0000_0001, + [1690222631898] [38923:6615905] [DMG] } + [1690222631898] [38923:6615905] [DMG] + [1690222631898] [38923:6615905] [DMG] Data = NULL + [1690222631898] [38923:6615905] [DMG] }, + [1690222631898] [38923:6615905] [DMG] + [1690222631898] [38923:6615905] [DMG] }, + [1690222631898] [38923:6615905] [DMG] + [1690222631898] [38923:6615905] [DMG] ], + [1690222631898] [38923:6615905] [DMG] + [1690222631899] [38923:6615905] [DMG] InteractionModelRevision = 1 + [1690222631899] [38923:6615905] [DMG] } + [1690222631899] [38923:6615905] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299828 + [1690222631899] [38923:6615905] [TOO] AdminFabricIndex: null + [1690222631899] [38923:6615905] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x86a3ec94 Peer = 01:0000000000000001 + [1690222631899] [38923:6615905] [EM] <<< [E:20782r S:46406 M:27652533 (Ack:25511812)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222631899] [38923:6615905] [IN] (S) Sending msg 27652533 on secure session with LSID: 46406 + [1690222631900] [38923:6615905] [EM] >>> [E:20783r S:46406 M:25511813] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690222631900] [38923:6615905] [EM] Handling via exchange: 20783r, Delegate: 0x101824be0 + [1690222631900] [38923:6615905] [DMG] ReportDataMessage = + [1690222631900] [38923:6615905] [DMG] { + [1690222631900] [38923:6615905] [DMG] SubscriptionId = 0x9ce33771, + [1690222631900] [38923:6615905] [DMG] AttributeReportIBs = + [1690222631900] [38923:6615905] [DMG] [ + [1690222631900] [38923:6615905] [DMG] AttributeReportIB = + [1690222631900] [38923:6615905] [DMG] { + [1690222631900] [38923:6615905] [DMG] AttributeDataIB = + [1690222631900] [38923:6615905] [DMG] { + [1690222631900] [38923:6615905] [DMG] DataVersion = 0xed5d12b4, + [1690222631900] [38923:6615905] [DMG] AttributePathIB = + [1690222631900] [38923:6615905] [DMG] { + [1690222631900] [38923:6615905] [DMG] Endpoint = 0x0, + [1690222631900] [38923:6615905] [DMG] Cluster = 0x3c, + [1690222631900] [38923:6615905] [DMG] Attribute = 0x0000_0002, + [1690222631900] [38923:6615905] [DMG] } + [1690222631900] [38923:6615905] [DMG] + [1690222631900] [38923:6615905] [DMG] Data = NULL + [1690222631900] [38923:6615905] [DMG] }, + [1690222631900] [38923:6615905] [DMG] + [1690222631900] [38923:6615905] [DMG] }, + [1690222631900] [38923:6615905] [DMG] + [1690222631900] [38923:6615905] [DMG] ], + [1690222631900] [38923:6615905] [DMG] + [1690222631900] [38923:6615905] [DMG] InteractionModelRevision = 1 + [1690222631900] [38923:6615905] [DMG] } + [1690222631900] [38923:6615905] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299828 + [1690222631900] [38923:6615905] [TOO] AdminVendorId: null + [1690222631900] [38923:6615905] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x9ce33771 Peer = 01:0000000000000001 + [1690222631901] [38923:6615905] [EM] <<< [E:20783r S:46406 M:27652534 (Ack:25511813)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690222631901] [38923:6615905] [IN] (S) Sending msg 27652534 on secure session with LSID: 46406 + [1690222631905] [38923:6615905] [EM] >>> [E:20781r S:46405 M:256936842 (Ack:159263163)] (S) Msg RX from 2:0000000000000001 [40B2] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222631905] [38923:6615905] [EM] Found matching exchange: 20781r, Delegate: 0x0 + [1690222631905] [38923:6615905] [EM] Rxd Ack; Removing MessageCounter:159263163 from Retrans Table on exchange 20781r + [1690222631926] [38923:6615905] [EM] >>> [E:20782r S:46406 M:25511814 (Ack:27652533)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222631926] [38923:6615905] [EM] Found matching exchange: 20782r, Delegate: 0x0 + [1690222631926] [38923:6615905] [EM] Rxd Ack; Removing MessageCounter:27652533 from Retrans Table on exchange 20782r + [1690222631932] [38923:6615905] [EM] >>> [E:20783r S:46406 M:25511815 (Ack:27652534)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690222631932] [38923:6615905] [EM] Found matching exchange: 20783r, Delegate: 0x0 + [1690222631932] [38923:6615905] [EM] Rxd Ack; Removing MessageCounter:27652534 from Retrans Table on exchange 20783r + disabled: true + + - label: + "Step 24: TH_CR2 opens a commissioning window on DUT_CE using BCM with + commissioning timeout of PIXIT.CADMIN.CwDuration seconds" + PICS: CADMIN.S.C01.Rsp + verification: | + In interactive mode of TH_CR2, send command to open commissioning window using ECM + + administratorcommissioning open-basic-commissioning-window 180 1 0 --commissioner-name beta --timedInteractionTimeoutMs 1000 + + On TH_CR2 logs, verify for success response + + + InvokeResponseMessage = + [1690223534922] [38923:6627404] [DMG] { + [1690223534922] [38923:6627404] [DMG] suppressResponse = false, + [1690223534922] [38923:6627404] [DMG] InvokeResponseIBs = + [1690223534922] [38923:6627404] [DMG] [ + [1690223534922] [38923:6627404] [DMG] InvokeResponseIB = + [1690223534922] [38923:6627404] [DMG] { + [1690223534922] [38923:6627404] [DMG] CommandStatusIB = + [1690223534922] [38923:6627404] [DMG] { + [1690223534922] [38923:6627404] [DMG] CommandPathIB = + [1690223534922] [38923:6627404] [DMG] { + [1690223534922] [38923:6627404] [DMG] EndpointId = 0x0, + [1690223534922] [38923:6627404] [DMG] ClusterId = 0x3c, + [1690223534922] [38923:6627404] [DMG] CommandId = 0x1, + [1690223534922] [38923:6627404] [DMG] }, + [1690223534922] [38923:6627404] [DMG] + [1690223534922] [38923:6627404] [DMG] StatusIB = + [1690223534922] [38923:6627404] [DMG] { + [1690223534922] [38923:6627404] [DMG] status = 0x00 (SUCCESS), + [1690223534922] [38923:6627404] [DMG] }, + [1690223534922] [38923:6627404] [DMG] + [1690223534922] [38923:6627404] [DMG] }, + [1690223534922] [38923:6627404] [DMG] + [1690223534922] [38923:6627404] [DMG] }, + [1690223534922] [38923:6627404] [DMG] + [1690223534922] [38923:6627404] [DMG] ], + [1690223534922] [38923:6627404] [DMG] + [1690223534922] [38923:6627404] [DMG] InteractionModelRevision = 1 + [1690223534922] [38923:6627404] [DMG] }, + [1690223534922] [38923:6627404] [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1690223534922] [38923:6627404] [DMG] ICR moving to [AwaitingDe] + disabled: true + + - label: + "Step 25: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690223534931] [38924:6615100] [DMG] { + [1690223534931] [38924:6615100] [DMG] SubscriptionId = 0xdba23243, + [1690223534931] [38924:6615100] [DMG] AttributeReportIBs = + [1690223534931] [38924:6615100] [DMG] [ + [1690223534931] [38924:6615100] [DMG] AttributeReportIB = + [1690223534931] [38924:6615100] [DMG] { + [1690223534931] [38924:6615100] [DMG] AttributeDataIB = + [1690223534931] [38924:6615100] [DMG] { + [1690223534931] [38924:6615100] [DMG] DataVersion = 0xed5d12b7, + [1690223534931] [38924:6615100] [DMG] AttributePathIB = + [1690223534931] [38924:6615100] [DMG] { + [1690223534931] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223534931] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223534932] [38924:6615100] [DMG] Attribute = 0x0000_0000, + [1690223534932] [38924:6615100] [DMG] } + [1690223534932] [38924:6615100] [DMG] + [1690223534932] [38924:6615100] [DMG] Data = 2, + [1690223534932] [38924:6615100] [DMG] }, + [1690223534932] [38924:6615100] [DMG] + [1690223534932] [38924:6615100] [DMG] }, + [1690223534932] [38924:6615100] [DMG] + [1690223534932] [38924:6615100] [DMG] ], + [1690223534932] [38924:6615100] [DMG] + [1690223534932] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223534932] [38924:6615100] [DMG] } + [1690223534932] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299831 + [1690223534932] [38924:6615100] [TOO] WindowStatus: 2 + [1690223534932] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdba23243 Peer = 01:0000000000000001 + [1690223534932] [38924:6615100] [EM] <<< [E:20790r S:948 M:8871671 (Ack:208014054)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690223534932] [38924:6615100] [IN] (S) Sending msg 8871671 on secure session with LSID: 948 + [1690223534939] [38924:6615100] [EM] >>> [E:20791r S:948 M:208014055] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690223534939] [38924:6615100] [EM] Handling via exchange: 20791r, Delegate: 0x105234be0 + [1690223534939] [38924:6615100] [DMG] ReportDataMessage = + [1690223534939] [38924:6615100] [DMG] { + [1690223534939] [38924:6615100] [DMG] SubscriptionId = 0x3621ba48, + [1690223534939] [38924:6615100] [DMG] AttributeReportIBs = + [1690223534939] [38924:6615100] [DMG] [ + [1690223534939] [38924:6615100] [DMG] AttributeReportIB = + [1690223534939] [38924:6615100] [DMG] { + [1690223534939] [38924:6615100] [DMG] AttributeDataIB = + [1690223534939] [38924:6615100] [DMG] { + [1690223534939] [38924:6615100] [DMG] DataVersion = 0xed5d12b7, + [1690223534939] [38924:6615100] [DMG] AttributePathIB = + [1690223534939] [38924:6615100] [DMG] { + [1690223534939] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223534939] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223534939] [38924:6615100] [DMG] Attribute = 0x0000_0002, + [1690223534939] [38924:6615100] [DMG] } + [1690223534939] [38924:6615100] [DMG] + [1690223534939] [38924:6615100] [DMG] Data = 65521, + [1690223534939] [38924:6615100] [DMG] }, + [1690223534939] [38924:6615100] [DMG] + [1690223534939] [38924:6615100] [DMG] }, + [1690223534939] [38924:6615100] [DMG] + [1690223534939] [38924:6615100] [DMG] ], + [1690223534939] [38924:6615100] [DMG] + [1690223534939] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223534939] [38924:6615100] [DMG] } + [1690223534939] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299831 + [1690223534939] [38924:6615100] [TOO] AdminVendorId: 65521 + [1690223534939] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x3621ba48 Peer = 01:0000000000000001 + [1690223534939] [38924:6615100] [EM] <<< [E:20791r S:948 M:8871672 (Ack:208014055)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690223534939] [38924:6615100] [IN] (S) Sending msg 8871672 on secure session with LSID: 948 + [1690223534944] [38924:6615100] [EM] >>> [E:20792r S:948 M:208014056] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690223534944] [38924:6615100] [EM] Handling via exchange: 20792r, Delegate: 0x105234be0 + [1690223534944] [38924:6615100] [DMG] ReportDataMessage = + [1690223534944] [38924:6615100] [DMG] { + [1690223534944] [38924:6615100] [DMG] SubscriptionId = 0x4daaefab, + [1690223534944] [38924:6615100] [DMG] AttributeReportIBs = + [1690223534944] [38924:6615100] [DMG] [ + [1690223534944] [38924:6615100] [DMG] AttributeReportIB = + [1690223534944] [38924:6615100] [DMG] { + [1690223534944] [38924:6615100] [DMG] AttributeDataIB = + [1690223534944] [38924:6615100] [DMG] { + [1690223534944] [38924:6615100] [DMG] DataVersion = 0xed5d12b7, + [1690223534944] [38924:6615100] [DMG] AttributePathIB = + [1690223534944] [38924:6615100] [DMG] { + [1690223534944] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223534944] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223534944] [38924:6615100] [DMG] Attribute = 0x0000_0001, + [1690223534944] [38924:6615100] [DMG] } + [1690223534944] [38924:6615100] [DMG] + [1690223534944] [38924:6615100] [DMG] Data = 2, + [1690223534944] [38924:6615100] [DMG] }, + [1690223534944] [38924:6615100] [DMG] + [1690223534944] [38924:6615100] [DMG] }, + [1690223534944] [38924:6615100] [DMG] + [1690223534944] [38924:6615100] [DMG] ], + [1690223534945] [38924:6615100] [DMG] + [1690223534945] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223534945] [38924:6615100] [DMG] } + [1690223534945] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299831 + [1690223534945] [38924:6615100] [TOO] AdminFabricIndex: 2 + [1690223534945] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x4daaefab Peer = 01:0000000000000001 + [1690223534945] [38924:6615100] [EM] <<< [E:20792r S:948 M:8871673 (Ack:208014056)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690223534945] [38924:6615100] [IN] (S) Sending msg 8871673 on secure session with LSID: 948 + [1690223534952] [38924:6615100] [EM] >>> [E:20790r S:948 M:208014057 (Ack:8871671)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690223534952] [38924:6615100] [EM] Found matching exchange: 20790r, Delegate: 0x0 + [1690223534952] [38924:6615100] [EM] Rxd Ack; Removing MessageCounter:8871671 from Retrans Table on exchange 20790r + [1690223534956] [38924:6627407] [EM] >>> [E:20791r S:948 M:208014058 (Ack:8871672)] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 26: Verify TH_CR2 receives subscription notifications which show + WindowStatus value to be 2, AdminFabricIndex value to be the same as + the Fabric Index of the Fabrics attribute list entry corresponding to + TH_CR2s fabric, AdminVendorId to be the same as the Vendor ID field of + Fabrics attribute list entry corresponding to TH_CR2s fabric" + verification: | + Verify TH_CR2 logs for subscription notifications which show WindowStatus value to be 2, AdminFabricIndex value to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric, AdminVendorId to be the same as the Vendor ID field of Fabrics attribute list entry corresponding to TH_CR2’s fabric + + ReportDataMessage = + [1690223534924] [38923:6627404] [DMG] { + [1690223534924] [38923:6627404] [DMG] SubscriptionId = 0x225d94ef, + [1690223534924] [38923:6627404] [DMG] AttributeReportIBs = + [1690223534924] [38923:6627404] [DMG] [ + [1690223534924] [38923:6627404] [DMG] AttributeReportIB = + [1690223534924] [38923:6627404] [DMG] { + [1690223534924] [38923:6627404] [DMG] AttributeDataIB = + [1690223534924] [38923:6627404] [DMG] { + [1690223534924] [38923:6627404] [DMG] DataVersion = 0xed5d12b7, + [1690223534924] [38923:6627404] [DMG] AttributePathIB = + [1690223534924] [38923:6627404] [DMG] { + [1690223534924] [38923:6627404] [DMG] Endpoint = 0x0, + [1690223534924] [38923:6627404] [DMG] Cluster = 0x3c, + [1690223534924] [38923:6627404] [DMG] Attribute = 0x0000_0000, + [1690223534924] [38923:6627404] [DMG] } + [1690223534924] [38923:6627404] [DMG] + [1690223534924] [38923:6627404] [DMG] Data = 2, + [1690223534924] [38923:6627404] [DMG] }, + [1690223534924] [38923:6627404] [DMG] + [1690223534924] [38923:6627404] [DMG] }, + [1690223534924] [38923:6627404] [DMG] + [1690223534924] [38923:6627404] [DMG] ], + [1690223534924] [38923:6627404] [DMG] + [1690223534924] [38923:6627404] [DMG] InteractionModelRevision = 1 + [1690223534924] [38923:6627404] [DMG] } + [1690223534925] [38923:6627404] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299831 + [1690223534925] [38923:6627404] [TOO] WindowStatus: 2 + [1690223534925] [38923:6627404] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x225d94ef Peer = 02:0000000000000001 + [1690223534925] [38923:6627404] [EM] <<< [E:20787r S:46405 M:159263167 (Ack:256936845)] (S) Msg TX to 2:0000000000000001 [40B2] --- Type 0001:01 (IM:StatusResponse) + [1690223534925] [38923:6627404] [IN] (S) Sending msg 159263167 on secure session with LSID: 46405 + [1690223534927] [38923:6627404] [EM] >>> [E:20788r S:46406 M:25511816] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690223534927] [38923:6627404] [EM] Handling via exchange: 20788r, Delegate: 0x101824be0 + [1690223534927] [38923:6627404] [DMG] ReportDataMessage = + [1690223534927] [38923:6627404] [DMG] { + [1690223534927] [38923:6627404] [DMG] SubscriptionId = 0x86a3ec94, + [1690223534927] [38923:6627404] [DMG] AttributeReportIBs = + [1690223534927] [38923:6627404] [DMG] [ + [1690223534927] [38923:6627404] [DMG] AttributeReportIB = + [1690223534927] [38923:6627404] [DMG] { + [1690223534927] [38923:6627404] [DMG] AttributeDataIB = + [1690223534927] [38923:6627404] [DMG] { + [1690223534927] [38923:6627404] [DMG] DataVersion = 0xed5d12b7, + [1690223534927] [38923:6627404] [DMG] AttributePathIB = + [1690223534927] [38923:6627404] [DMG] { + [1690223534927] [38923:6627404] [DMG] Endpoint = 0x0, + [1690223534927] [38923:6627404] [DMG] Cluster = 0x3c, + [1690223534927] [38923:6627404] [DMG] Attribute = 0x0000_0001, + [1690223534927] [38923:6627404] [DMG] } + [1690223534927] [38923:6627404] [DMG] + [1690223534927] [38923:6627404] [DMG] Data = 2, + [1690223534928] [38923:6627404] [DMG] }, + [1690223534928] [38923:6627404] [DMG] + [1690223534928] [38923:6627404] [DMG] }, + [1690223534928] [38923:6627404] [DMG] + [1690223534928] [38923:6627404] [DMG] ], + [1690223534928] [38923:6627404] [DMG] + [1690223534928] [38923:6627404] [DMG] InteractionModelRevision = 1 + [1690223534928] [38923:6627404] [DMG] } + [1690223534928] [38923:6627404] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299831 + [1690223534928] [38923:6627404] [TOO] AdminFabricIndex: 2 + [1690223534928] [38923:6627404] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x86a3ec94 Peer = 01:0000000000000001 + [1690223534928] [38923:6627404] [EM] <<< [E:20788r S:46406 M:27652535 (Ack:25511816)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690223534928] [38923:6627404] [IN] (S) Sending msg 27652535 on secure session with LSID: 46406 + [1690223534928] [38923:6627404] [EM] >>> [E:20789r S:46406 M:25511817] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690223534928] [38923:6627404] [EM] Handling via exchange: 20789r, Delegate: 0x101824be0 + [1690223534928] [38923:6627404] [DMG] ReportDataMessage = + [1690223534928] [38923:6627404] [DMG] { + [1690223534928] [38923:6627404] [DMG] SubscriptionId = 0x9ce33771, + [1690223534928] [38923:6627404] [DMG] AttributeReportIBs = + [1690223534928] [38923:6627404] [DMG] [ + [1690223534928] [38923:6627404] [DMG] AttributeReportIB = + [1690223534928] [38923:6627404] [DMG] { + [1690223534928] [38923:6627404] [DMG] AttributeDataIB = + [1690223534928] [38923:6627404] [DMG] { + [1690223534928] [38923:6627404] [DMG] DataVersion = 0xed5d12b7, + [1690223534929] [38923:6627404] [DMG] AttributePathIB = + [1690223534929] [38923:6627404] [DMG] { + [1690223534929] [38923:6627404] [DMG] Endpoint = 0x0, + [1690223534929] [38923:6627404] [DMG] Cluster = 0x3c, + [1690223534929] [38923:6627404] [DMG] Attribute = 0x0000_0002, + [1690223534929] [38923:6627404] [DMG] } + [1690223534929] [38923:6627404] [DMG] + [1690223534929] [38923:6627404] [DMG] Data = 65521, + [1690223534929] [38923:6627404] [DMG] }, + [1690223534929] [38923:6627404] [DMG] + [1690223534929] [38923:6627404] [DMG] }, + [1690223534929] [38923:6627404] [DMG] + [1690223534929] [38923:6627404] [DMG] ], + [1690223534929] [38923:6627404] [DMG] + [1690223534929] [38923:6627404] [DMG] InteractionModelRevision = 1 + [1690223534929] [38923:6627404] [DMG] } + [1690223534929] [38923:6627404] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299831 + [1690223534929] [38923:6627404] [TOO] AdminVendorId: 65521 + [1690223534929] [38923:6627404] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x9ce33771 Peer = 01:0000000000000001 + [1690223534929] [38923:6627404] [EM] <<< [E:20789r S:46406 M:27652536 (Ack:25511817)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: + "Step 27: Before expiration of PIXIT.CADMIN.CwDuration seconds set in + step 24, TH_CR1 sends RemoveFabric command to DUT_CE with FabricIndex + set to the fabric index of TH_CR2s fabric" + PICS: OPCREDS.S.C0a.Rsp + verification: | + Before expiration of PIXIT.CADMIN.CwDuration seconds set in step 24, from interactive mode of TH_CR1 send RemoveFabric command with FabricIndex set to the fabric index of TH_CR2’s fabric + + operationalcredentials remove-fabric 2 1 0 --commissioner-name alpha --timedInteractionTimeoutMs 1000 + + On TH_CR1 logs, verify for NOCResponse with statuscode 0 and fabric index equal to fabric index of TH_CR2's fabric + + + + InvokeResponseMessage = + [1690223865565] [38924:6615100] [DMG] { + [1690223865565] [38924:6615100] [DMG] suppressResponse = false, + [1690223865565] [38924:6615100] [DMG] InvokeResponseIBs = + [1690223865565] [38924:6615100] [DMG] [ + [1690223865565] [38924:6615100] [DMG] InvokeResponseIB = + [1690223865565] [38924:6615100] [DMG] { + [1690223865565] [38924:6615100] [DMG] CommandDataIB = + [1690223865565] [38924:6615100] [DMG] { + [1690223865565] [38924:6615100] [DMG] CommandPathIB = + [1690223865565] [38924:6615100] [DMG] { + [1690223865565] [38924:6615100] [DMG] EndpointId = 0x0, + [1690223865565] [38924:6615100] [DMG] ClusterId = 0x3e, + [1690223865566] [38924:6615100] [DMG] CommandId = 0x8, + [1690223865566] [38924:6615100] [DMG] }, + [1690223865566] [38924:6615100] [DMG] + [1690223865566] [38924:6615100] [DMG] CommandFields = + [1690223865566] [38924:6615100] [DMG] { + [1690223865566] [38924:6615100] [DMG] 0x0 = 0, + [1690223865566] [38924:6615100] [DMG] 0x1 = 2, + [1690223865566] [38924:6615100] [DMG] }, + [1690223865566] [38924:6615100] [DMG] }, + [1690223865566] [38924:6615100] [DMG] + [1690223865566] [38924:6615100] [DMG] }, + [1690223865566] [38924:6615100] [DMG] + [1690223865566] [38924:6615100] [DMG] ], + [1690223865566] [38924:6615100] [DMG] + [1690223865566] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223865566] [38924:6615100] [DMG] }, + [1690223865566] [38924:6615100] [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + [1690223865566] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + [1690223865566] [38924:6615100] [TOO] NOCResponse: { + [1690223865566] [38924:6615100] [TOO] statusCode: 0 + [1690223865566] [38924:6615100] [TOO] fabricIndex: 2 + [1690223865566] [38924:6615100] [TOO] } + [1690223865566] [38924:6615100] [DMG] ICR moving to [AwaitingDe] + [1690223865566] [38924:6615100] [EM] <<< [E:2308i S:948 M:8871682 (Ack:208014074)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 28: Verify TH_CR1 receives subscription notifications which show + AdminFabricIndex value to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show AdminFabricIndex value to be null + + + ReportDataMessage = + [1690223865568] [38924:6615100] [DMG] { + [1690223865568] [38924:6615100] [DMG] SubscriptionId = 0x4daaefab, + [1690223865568] [38924:6615100] [DMG] AttributeReportIBs = + [1690223865568] [38924:6615100] [DMG] [ + [1690223865568] [38924:6615100] [DMG] AttributeReportIB = + [1690223865568] [38924:6615100] [DMG] { + [1690223865568] [38924:6615100] [DMG] AttributeDataIB = + [1690223865568] [38924:6615100] [DMG] { + [1690223865568] [38924:6615100] [DMG] DataVersion = 0xed5d12be, + [1690223865568] [38924:6615100] [DMG] AttributePathIB = + [1690223865568] [38924:6615100] [DMG] { + [1690223865568] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223865568] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223865568] [38924:6615100] [DMG] Attribute = 0x0000_0001, + [1690223865568] [38924:6615100] [DMG] } + [1690223865568] [38924:6615100] [DMG] + [1690223865568] [38924:6615100] [DMG] Data = NULL + [1690223865568] [38924:6615100] [DMG] }, + [1690223865568] [38924:6615100] [DMG] + [1690223865568] [38924:6615100] [DMG] }, + [1690223865568] [38924:6615100] [DMG] + [1690223865568] [38924:6615100] [DMG] ], + [1690223865568] [38924:6615100] [DMG] + [1690223865568] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223865568] [38924:6615100] [DMG] } + [1690223865568] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 3982299838 + [1690223865568] [38924:6615100] [TOO] AdminFabricIndex: null + [1690223865568] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x4daaefab Peer = 01:0000000000000001 + [1690223865568] [38924:6615100] [EM] <<< [E:20807r S:948 M:8871683 (Ack:208014075)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true + + - label: "Step 29: TH_CR1 reads WindowStatus attribute from DUT_CE" + PICS: CADMIN.S.A0000 + verification: | + In interactive mode of TH_CR1, read windowstatus attribute, + + administratorcommissioning read window-status 1 0 --commissioner-name alpha + + Verify TH_CR1 logs for windowstatus to be 1 + + + ReportDataMessage = + [1690223928167] [38924:6615100] [DMG] { + [1690223928167] [38924:6615100] [DMG] AttributeReportIBs = + [1690223928167] [38924:6615100] [DMG] [ + [1690223928167] [38924:6615100] [DMG] AttributeReportIB = + [1690223928167] [38924:6615100] [DMG] { + [1690223928167] [38924:6615100] [DMG] AttributeDataIB = + [1690223928167] [38924:6615100] [DMG] { + [1690223928167] [38924:6615100] [DMG] DataVersion = 0xed5d12be, + [1690223928167] [38924:6615100] [DMG] AttributePathIB = + [1690223928167] [38924:6615100] [DMG] { + [1690223928167] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223928167] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223928167] [38924:6615100] [DMG] Attribute = 0x0000_0000, + [1690223928167] [38924:6615100] [DMG] } + [1690223928167] [38924:6615100] [DMG] + [1690223928167] [38924:6615100] [DMG] Data = 2, + [1690223928167] [38924:6615100] [DMG] }, + [1690223928167] [38924:6615100] [DMG] + [1690223928167] [38924:6615100] [DMG] }, + [1690223928167] [38924:6615100] [DMG] + [1690223928167] [38924:6615100] [DMG] ], + [1690223928167] [38924:6615100] [DMG] + [1690223928167] [38924:6615100] [DMG] SuppressResponse = true, + [1690223928167] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223928167] [38924:6615100] [DMG] } + [1690223928167] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299838 + [1690223928167] [38924:6615100] [TOO] WindowStatus: 2 + [1690223928167] [38924:6615100] [EM] <<< [E:2309i S:948 M:8871685 (Ack:208014077)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: "Step 30: TH_CR1 reads AdminVendorID attribute from DUT_CE" + PICS: CADMIN.S.A0002 + verification: | + In interactive mode of TH_CR1, read adminvendorid attribute, + + administratorcommissioning read admin-vendor-id 1 0 --commissioner-name alpha + + On TH_CR1 logs, verify the value of adminvendorid to be the same as the Fabric Index of the Fabrics attribute list entry corresponding to TH_CR2’s fabric + + + ReportDataMessage = + [1690223970283] [38924:6615100] [DMG] { + [1690223970283] [38924:6615100] [DMG] AttributeReportIBs = + [1690223970283] [38924:6615100] [DMG] [ + [1690223970283] [38924:6615100] [DMG] AttributeReportIB = + [1690223970283] [38924:6615100] [DMG] { + [1690223970283] [38924:6615100] [DMG] AttributeDataIB = + [1690223970283] [38924:6615100] [DMG] { + [1690223970283] [38924:6615100] [DMG] DataVersion = 0xed5d12be, + [1690223970283] [38924:6615100] [DMG] AttributePathIB = + [1690223970283] [38924:6615100] [DMG] { + [1690223970283] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223970283] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223970283] [38924:6615100] [DMG] Attribute = 0x0000_0002, + [1690223970283] [38924:6615100] [DMG] } + [1690223970283] [38924:6615100] [DMG] + [1690223970283] [38924:6615100] [DMG] Data = 65521, + [1690223970283] [38924:6615100] [DMG] }, + [1690223970283] [38924:6615100] [DMG] + [1690223970283] [38924:6615100] [DMG] }, + [1690223970283] [38924:6615100] [DMG] + [1690223970283] [38924:6615100] [DMG] ], + [1690223970283] [38924:6615100] [DMG] + [1690223970283] [38924:6615100] [DMG] SuppressResponse = true, + [1690223970283] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223970283] [38924:6615100] [DMG] } + [1690223970283] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299838 + [1690223970283] [38924:6615100] [TOO] AdminVendorId: 65521 + [1690223970283] [38924:6615100] [EM] <<< [E:2310i S:948 M:8871687 (Ack:208014078)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0000:10 (SecureChannel:StandaloneAck) + disabled: true + + - label: + "Step 31: Wait for the expiration of PIXIT.CADMIN.CwDuration seconds + that is set in step 24" + verification: | + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 24 + disabled: true + + - label: + "Step 32: Verify TH_CR1 receives subscription notifications which show + WindowStatus value to be 0, AdminVendorId to be null" + verification: | + Verify TH_CR1 logs for subscription notifications which show WindowStatus value to be 0, AdminVendorId to be null + + ReportDataMessage = + [1690223990049] [38924:6615100] [DMG] { + [1690223990049] [38924:6615100] [DMG] SubscriptionId = 0xdba23243, + [1690223990049] [38924:6615100] [DMG] AttributeReportIBs = + [1690223990049] [38924:6615100] [DMG] [ + [1690223990049] [38924:6615100] [DMG] AttributeReportIB = + [1690223990049] [38924:6615100] [DMG] { + [1690223990049] [38924:6615100] [DMG] AttributeDataIB = + [1690223990049] [38924:6615100] [DMG] { + [1690223990049] [38924:6615100] [DMG] DataVersion = 0xed5d12c0, + [1690223990049] [38924:6615100] [DMG] AttributePathIB = + [1690223990049] [38924:6615100] [DMG] { + [1690223990049] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223990049] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223990049] [38924:6615100] [DMG] Attribute = 0x0000_0000, + [1690223990050] [38924:6615100] [DMG] } + [1690223990050] [38924:6615100] [DMG] + [1690223990050] [38924:6615100] [DMG] Data = 0, + [1690223990050] [38924:6615100] [DMG] }, + [1690223990050] [38924:6615100] [DMG] + [1690223990050] [38924:6615100] [DMG] }, + [1690223990050] [38924:6615100] [DMG] + [1690223990050] [38924:6615100] [DMG] ], + [1690223990050] [38924:6615100] [DMG] + [1690223990050] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223990050] [38924:6615100] [DMG] } + [1690223990050] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 3982299840 + [1690223990050] [38924:6615100] [TOO] WindowStatus: 0 + [1690223990050] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0xdba23243 Peer = 01:0000000000000001 + [1690223990051] [38924:6615100] [EM] <<< [E:20809r S:948 M:8871688 (Ack:208014079)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + [1690223990051] [38924:6615100] [IN] (S) Sending msg 8871688 on secure session with LSID: 948 + [1690223990051] [38924:6615100] [EM] >>> [E:20810r S:948 M:208014080] (S) Msg RX from 1:0000000000000001 [4A14] --- Type 0001:05 (IM:ReportData) + [1690223990051] [38924:6615100] [EM] Handling via exchange: 20810r, Delegate: 0x105234be0 + [1690223990051] [38924:6615100] [DMG] ReportDataMessage = + [1690223990051] [38924:6615100] [DMG] { + [1690223990051] [38924:6615100] [DMG] SubscriptionId = 0x3621ba48, + [1690223990051] [38924:6615100] [DMG] AttributeReportIBs = + [1690223990051] [38924:6615100] [DMG] [ + [1690223990051] [38924:6615100] [DMG] AttributeReportIB = + [1690223990051] [38924:6615100] [DMG] { + [1690223990051] [38924:6615100] [DMG] AttributeDataIB = + [1690223990051] [38924:6615100] [DMG] { + [1690223990051] [38924:6615100] [DMG] DataVersion = 0xed5d12c0, + [1690223990051] [38924:6615100] [DMG] AttributePathIB = + [1690223990051] [38924:6615100] [DMG] { + [1690223990051] [38924:6615100] [DMG] Endpoint = 0x0, + [1690223990051] [38924:6615100] [DMG] Cluster = 0x3c, + [1690223990051] [38924:6615100] [DMG] Attribute = 0x0000_0002, + [1690223990051] [38924:6615100] [DMG] } + [1690223990051] [38924:6615100] [DMG] + [1690223990051] [38924:6615100] [DMG] Data = NULL + [1690223990051] [38924:6615100] [DMG] }, + [1690223990051] [38924:6615100] [DMG] + [1690223990051] [38924:6615100] [DMG] }, + [1690223990051] [38924:6615100] [DMG] + [1690223990051] [38924:6615100] [DMG] ], + [1690223990051] [38924:6615100] [DMG] + [1690223990051] [38924:6615100] [DMG] InteractionModelRevision = 1 + [1690223990051] [38924:6615100] [DMG] } + [1690223990052] [38924:6615100] [TOO] Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 3982299840 + [1690223990052] [38924:6615100] [TOO] AdminVendorId: null + [1690223990052] [38924:6615100] [DMG] Refresh LivenessCheckTime for 3004224 milliseconds with SubscriptionId = 0x3621ba48 Peer = 01:0000000000000001 + [1690223990052] [38924:6615100] [EM] <<< [E:20810r S:948 M:8871689 (Ack:208014080)] (S) Msg TX to 1:0000000000000001 [4A14] --- Type 0001:01 (IM:StatusResponse) + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml index b297d4a4b1fc89..990b1b942a77a3 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml @@ -31,13 +31,25 @@ tests: - name: "nodeId" value: nodeId + #Issue: https://github.com/project-chip/connectedhomeip/issues/26598 - label: "Step 2: read the global attribute: ClusterRevision" - command: "readAttribute" - attribute: "ClusterRevision" - response: - value: 5 - constraints: - type: int16u + verification: | + ./chip-tool colorcontrol read cluster-revision 1 1 + + Verify "ClusterRevision" value is of unit16 and reflects the highest revision number, in RPI the value of ClusterRevision is 6 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1649660967.485745][7940:7945] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0300 Attribute 0x0000_FFFD DataVersion: 4087274515 + [1649660967.485839][7940:7945] CHIP:TOO: ClusterRevision:5 + [1649660967.485946][7940:7945] CHIP:EM: Sending Standalone Ack for MessageCounter:1573389 on exchange 13361i + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" - label: "Step 3a: Read the global attribute: FeatureMap" PICS: ( !CC.S.F00 && !CC.S.F01 && !CC.S.F02 && !CC.S.F03 && !CC.S.F04 ) diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml deleted file mode 100644 index 1b487bc296e03f..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_CC_2_2_Simulated.yaml +++ /dev/null @@ -1,318 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 25.2.2. [TC-CC-2.2] Attributes with client as DUT - -PICS: - - CC.C - -config: - nodeId: 0x12344321 - cluster: "Color Control" - endpoint: 1 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads from the TH the (0x0000) CurrentHue attribute" - PICS: CC.C.A0000 - wait: "readAttribute" - attribute: "CurrentHue" - - - label: "DUT reads from the TH the (0x0001) CurrentSaturation attribute" - PICS: CC.C.A0001 - wait: "readAttribute" - attribute: "CurrentSaturation" - - - label: - "DUT reads from the TH the Optional (0x0002) RemainingTime attribute" - PICS: CC.C.A0002 - wait: "readAttribute" - attribute: "RemainingTime" - - - label: "DUT reads from the TH the (0x0003) CurrentX attribute" - PICS: CC.C.A0003 - wait: "readAttribute" - attribute: "CurrentX" - - - label: "DUT reads from the TH the (0x0004) CurrentY attribute" - PICS: CC.C.A0004 - wait: "readAttribute" - attribute: "CurrentY" - - - label: - "DUT reads from the TH the Optional (0x0005) DriftCompensation - attribute" - PICS: CC.C.A0005 - wait: "readAttribute" - attribute: "DriftCompensation" - - - label: - "DUT reads from the TH the Optional (0x0006) CompensationText - attribute" - PICS: CC.C.A0006 - wait: "readAttribute" - attribute: "CompensationText" - - - label: - "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute" - PICS: CC.C.A0007 - wait: "readAttribute" - attribute: "ColorTemperatureMireds" - - - label: "DUT reads from the TH the (0x0008) ColorMode attribute" - PICS: CC.C.A0008 - wait: "readAttribute" - attribute: "ColorMode" - - - label: "DUT reads from the TH the (0x000f) Options attribute" - PICS: CC.C.A000f - wait: "readAttribute" - attribute: "Options" - - - label: "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute" - PICS: CC.C.A4000 - wait: "readAttribute" - attribute: "EnhancedCurrentHue" - - - label: "DUT reads from the TH the (0x4001) EnhancedColorMode attribute" - PICS: CC.C.A4001 - wait: "readAttribute" - attribute: "EnhancedColorMode" - - - label: "DUT reads from the TH the (0x4002) ColorLoopActive attribute" - PICS: CC.C.A4002 - wait: "readAttribute" - attribute: "ColorLoopActive" - - - label: "DUT reads from the TH the (0x4003) ColorLoopDirection attribute" - PICS: CC.C.A4003 - wait: "readAttribute" - attribute: "ColorLoopDirection" - - - label: "DUT reads from the TH the (0x4004) ColorLoopTime attribute" - PICS: CC.C.A4004 - wait: "readAttribute" - attribute: "ColorLoopTime" - - - label: - "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue - attribute" - PICS: CC.C.A4005 - wait: "readAttribute" - attribute: "ColorLoopStartEnhancedHue" - - - label: - "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue - attribute" - PICS: CC.C.A4006 - wait: "readAttribute" - attribute: "ColorLoopStoredEnhancedHue" - - - label: "DUT reads from the TH the (0x400a) ColorCapabilities attribute" - PICS: CC.C.A400a - wait: "readAttribute" - attribute: "ColorCapabilities" - - - label: - "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds - attribute" - PICS: CC.C.A400b - wait: "readAttribute" - attribute: "ColorTempPhysicalMinMireds" - - - label: - "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds - attribute" - PICS: CC.C.A400c - wait: "readAttribute" - attribute: "ColorTempPhysicalMaxMireds" - - - label: - "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds - attribute" - PICS: CC.C.A400d - wait: "readAttribute" - attribute: "CoupleColorTempToLevelMinMireds" - - - label: - "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds - attribute" - PICS: CC.C.A4010 - wait: "readAttribute" - attribute: "StartUpColorTemperatureMireds" - - - label: "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute" - PICS: CC.C.A0010 - wait: "readAttribute" - attribute: "NumberOfPrimaries" - - - label: "DUT reads from the TH the (0x0011) Primary1X attribute" - PICS: CC.C.A0011 - wait: "readAttribute" - attribute: "Primary1X" - - - label: "DUT reads from the TH the (0x0012) Primary1Y attribute" - PICS: CC.C.A0012 - wait: "readAttribute" - attribute: "Primary1Y" - - - label: "DUT reads from the TH the (0x0013) Primary1Intensity attribute" - PICS: CC.C.A0013 - wait: "readAttribute" - attribute: "Primary1Intensity" - - - label: "DUT reads from the TH the (0x0015) Primary2X attribute" - PICS: CC.C.A0015 - wait: "readAttribute" - attribute: "Primary2X" - - - label: "DUT reads from the TH the (0x0016) Primary2Y attribute" - PICS: CC.C.A0016 - wait: "readAttribute" - attribute: "Primary2Y" - - - label: "DUT reads from the TH the (0x0017) Primary2Intensity attribute" - PICS: CC.C.A0017 - wait: "readAttribute" - attribute: "Primary2Intensity" - - - label: "DUT reads from the TH the (0x0019) Primary3X attribute" - PICS: CC.C.A0019 - wait: "readAttribute" - attribute: "Primary3X" - - - label: "DUT reads from the TH the (0x001a) Primary3Y attribute" - PICS: CC.C.A001a - wait: "readAttribute" - attribute: "Primary3Y" - - - label: "DUT reads from the TH the (0x001b) Primary3Intensity attribute" - PICS: CC.C.A001b - wait: "readAttribute" - attribute: "Primary3Intensity" - - - label: "DUT reads from the TH the (0x0020) Primary4X attribute" - PICS: CC.C.A0020 - wait: "readAttribute" - attribute: "Primary4X" - - - label: "DUT reads from the TH the (0x0021) Primary4Y attribute" - PICS: CC.C.A0021 - wait: "readAttribute" - attribute: "Primary4Y" - - - label: "DUT reads from the TH the (0x0022) Primary4Intensity attribute" - PICS: CC.C.A0022 - wait: "readAttribute" - attribute: "Primary4Intensity" - - - label: "DUT reads from the TH the (0x0024) Primary5X attribute" - PICS: CC.C.A0024 - wait: "readAttribute" - attribute: "Primary5X" - - - label: "DUT reads from the TH the (0x0025) Primary5Y attribute" - PICS: CC.C.A0025 - wait: "readAttribute" - attribute: "Primary5Y" - - - label: "DUT reads from the TH the (0x0026) Primary5Intensity attribute" - PICS: CC.C.A0026 - wait: "readAttribute" - attribute: "Primary5Intensity" - - - label: "DUT reads from the TH the (0x0028) Primary6X attribute" - PICS: CC.C.A0028 - wait: "readAttribute" - attribute: "Primary6X" - - - label: "DUT reads from the TH the (0x0029) Primary6Y attribute" - PICS: CC.C.A0029 - wait: "readAttribute" - attribute: "Primary6Y" - - - label: "DUT reads from the TH the (0x002a) Primary6Intensity attribute" - PICS: CC.C.A002a - wait: "readAttribute" - attribute: "Primary6Intensity" - - - label: "DUT reads from the TH the Optional (0x0030) WhitePointX attribute" - PICS: CC.C.A0030 - wait: "readAttribute" - attribute: "WhitePointX" - - - label: "DUT reads from the TH the Optional (0x0031) WhitePointY attribute" - PICS: CC.C.A0031 - wait: "readAttribute" - attribute: "WhitePointY" - - - label: - "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute" - PICS: CC.C.A0032 - wait: "readAttribute" - attribute: "ColorPointRX" - - - label: - "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute" - PICS: CC.C.A0033 - wait: "readAttribute" - attribute: "ColorPointRY" - - - label: - "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity - attribute" - PICS: CC.C.A0034 - wait: "readAttribute" - attribute: "ColorPointRIntensity" - - - label: - "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute" - PICS: CC.C.A0036 - wait: "readAttribute" - attribute: "ColorPointGX" - - - label: - "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute" - PICS: CC.C.A0037 - wait: "readAttribute" - attribute: "ColorPointGY" - - - label: - "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity - attribute" - PICS: CC.C.A0038 - wait: "readAttribute" - attribute: "ColorPointGIntensity" - - - label: - "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute" - PICS: CC.C.A003a - wait: "readAttribute" - attribute: "ColorPointBX" - - - label: - "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute" - PICS: CC.C.A003b - wait: "readAttribute" - attribute: "ColorPointBY" - - - label: - "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity - attribute" - PICS: CC.C.A003c - wait: "readAttribute" - attribute: "ColorPointBIntensity" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml index 72074fef588ca0..ed4cf48f1dea58 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_1.yaml @@ -152,7 +152,7 @@ tests: - name: "ms" value: 5000 - - label: "TStep 2f: H reads CurrentHue attribute from DUT" + - label: "Step 2f: H reads CurrentHue attribute from DUT" PICS: CC.S.F00 && CC.S.A0000 command: "readAttribute" attribute: "CurrentHue" @@ -336,7 +336,7 @@ tests: value: 100 - label: - "TStep 4b: H sends MoveToHue command to DUT with Hue=120, + "Step 4b: H sends MoveToHue command to DUT with Hue=120, Direction=0x02 (up) and TransitionTime=300 (30s)" PICS: CC.S.F00 && CC.S.C00.Rsp command: "MoveToHue" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml index 2a223b88134b8f..8a6a953fb25af8 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml @@ -228,7 +228,7 @@ tests: - name: "ms" value: 10000 - - label: "TStep 3c: H reads CurrentSaturation attribute from DUT" + - label: "Step 3c: H reads CurrentSaturation attribute from DUT" PICS: CC.S.F00 && CC.S.A0001 command: "readAttribute" attribute: "CurrentSaturation" @@ -317,7 +317,7 @@ tests: minValue: 0 maxValue: 2 - - label: "TStep 4b: H reads EnhancedColorMode attribute from DUT" + - label: "Step 4b: H reads EnhancedColorMode attribute from DUT" PICS: CC.S.F00 && CC.S.A4001 command: "readAttribute" attribute: "EnhancedColorMode" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml index a072ad1f75ecc9..746355f0f442f1 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_1.yaml @@ -48,7 +48,7 @@ tests: cluster: "On/Off" command: "On" - - label: "TStep 1a: H reads ColorTempPhysicalMinMireds attribute from DUT" + - label: "Step 1a: H reads ColorTempPhysicalMinMireds attribute from DUT" PICS: CC.S.F04 && CC.S.A400b command: "readAttribute" attribute: "ColorTempPhysicalMinMireds" diff --git a/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml index 8dc61902cdfbb1..2492c644355dfc 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_8_1.yaml @@ -44,7 +44,7 @@ tests: command: "On" - label: - "TStep 2a: H sends MoveToHue command to DUT with Hue=200, + "Step 2a: H sends MoveToHue command to DUT with Hue=200, Direction=0x00 (shortest distance) and TransitionTime=0 (immediately)." PICS: CC.S.C00.Rsp command: "MoveToHue" diff --git a/src/app/tests/suites/certification/Test_TC_CDOCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CDOCONC_1_1.yaml index 807729d36aa952..097b390ed16acc 100644 --- a/src/app/tests/suites/certification/Test_TC_CDOCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CDOCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: CDOCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !CDOCONC.S.F00 && !CDOCONC.S.F01 && !CDOCONC.S.F02 && !CDOCONC.S.F03 + && !CDOCONC.S.F04 && !CDOCONC.S.F05" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given CDOCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && CDOCONC.S.F00 + PICS: CDOCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && !CDOCONC.S.F00 + PICS: " !CDOCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && CDOCONC.S.F01 + PICS: CDOCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && !CDOCONC.S.F01 + PICS: " !CDOCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && CDOCONC.S.F02 + PICS: CDOCONC.S.F02 && CDOCONC.S.F01 response: constraints: type: bitmap32 @@ -113,18 +112,18 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && !CDOCONC.S.F02 + PICS: " !CDOCONC.S.F02 && !CDOCONC.S.F01" response: constraints: type: bitmap32 - hasMasksClear: [0x4] + hasMasksClear: [0x4, 0x2] - label: "Step 3h: Given CDOCONC.S.F03(CRI) ensure featuremap has the correct bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && CDOCONC.S.F03 + PICS: CDOCONC.S.F03 && CDOCONC.S.F01 response: constraints: type: bitmap32 @@ -135,18 +134,18 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && !CDOCONC.S.F03 + PICS: " !CDOCONC.S.F03 && !CDOCONC.S.F01" response: constraints: type: bitmap32 - hasMasksClear: [0x8] + hasMasksClear: [0x8, 0x2] - label: "Step 3j: Given CDOCONC.S.F04(PEA) ensure featuremap has the correct bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && CDOCONC.S.F04 + PICS: CDOCONC.S.F04 && CDOCONC.S.F00 response: constraints: type: bitmap32 @@ -157,18 +156,18 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && !CDOCONC.S.F04 + PICS: " !CDOCONC.S.F04 && !CDOCONC.S.F00" response: constraints: type: bitmap32 - hasMasksClear: [0x10] + hasMasksClear: [0x10, 0x1] - label: "Step 3l: Given CDOCONC.S.F05(AVG) ensure featuremap has the correct bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && CDOCONC.S.F05 + PICS: CDOCONC.S.F05 && CDOCONC.S.F00 response: constraints: type: bitmap32 @@ -179,16 +178,16 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CDOCONC.S.Afffc && !CDOCONC.S.F05 + PICS: " !CDOCONC.S.F05 && !CDOCONC.S.F00" response: constraints: type: bitmap32 - hasMasksClear: [0x20] + hasMasksClear: [0x20, 0x1] - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && CDOCONC.S.A0007 && CDOCONC.S.F00 + PICS: CDOCONC.S.A0007 && CDOCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when CDOCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && !CDOCONC.S.A0007 + PICS: " !CDOCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && CDOCONC.S.F00 + PICS: CDOCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when CDOCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && !CDOCONC.S.F00 + PICS: " !CDOCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && CDOCONC.S.F04 + PICS: CDOCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when CDOCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && !CDOCONC.S.F04 + PICS: " !CDOCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && CDOCONC.S.F05 + PICS: CDOCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: CDOCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && !CDOCONC.S.F05 + PICS: " !CDOCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && CDOCONC.S.F01 + PICS: CDOCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: CDOCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CDOCONC.S.Afffb && !CDOCONC.S.F01 + PICS: " !CDOCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: CDOCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: CDOCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_CMOCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CMOCONC_1_1.yaml index 725034a1575c82..3c80b3bbe7fccf 100644 --- a/src/app/tests/suites/certification/Test_TC_CMOCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CMOCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: CMOCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !CMOCONC.S.F00 && !CMOCONC.S.F01 && !CMOCONC.S.F02 && !CMOCONC.S.F03 + && !CMOCONC.S.F04 && !CMOCONC.S.F05 " command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && CMOCONC.S.F00 + PICS: CMOCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && !CMOCONC.S.F00 + PICS: " !CMOCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && CMOCONC.S.F01 + PICS: CMOCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && !CMOCONC.S.F01 + PICS: " !CMOCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && CMOCONC.S.F02 + PICS: CMOCONC.S.F02 && CMOCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && !CMOCONC.S.F02 + PICS: " !CMOCONC.S.F02 && !CMOCONC.S.F01" response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && CMOCONC.S.F03 + PICS: CMOCONC.S.F03 && CMOCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && !CMOCONC.S.F03 + PICS: " !CMOCONC.S.F03 && !CMOCONC.S.F01" response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && CMOCONC.S.F04 + PICS: CMOCONC.S.F04 && CMOCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && !CMOCONC.S.F04 + PICS: " !CMOCONC.S.F04 && !CMOCONC.S.F00" response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && CMOCONC.S.F05 + PICS: CMOCONC.S.F05 && CMOCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: CMOCONC.S.Afffc && !CMOCONC.S.F05 + PICS: " !CMOCONC.S.F05 && !CMOCONC.S.F00 " response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && CMOCONC.S.A0007 && CMOCONC.S.F00 + PICS: CMOCONC.S.A0007 && CMOCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when CMOCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && !CMOCONC.S.A0007 + PICS: " !CMOCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && CMOCONC.S.F00 + PICS: CMOCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when CMOCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && !CMOCONC.S.F00 + PICS: " !CMOCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && CMOCONC.S.F04 + PICS: CMOCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when CMOCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && !CMOCONC.S.F04 + PICS: " !CMOCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && CMOCONC.S.F05 + PICS: CMOCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: CMOCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && !CMOCONC.S.F05 + PICS: " !CMOCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && CMOCONC.S.F01 + PICS: CMOCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: CMOCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: CMOCONC.S.Afffb && !CMOCONC.S.F01 + PICS: " !CMOCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: CMOCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: CMOCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml deleted file mode 100644 index a014fb35013667..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml +++ /dev/null @@ -1,681 +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: - 12.4.15. [TC-CNET-4.17] [WiFi] Verification for attributes check - [DUT-Client] - -PICS: - - CNET.C.F00 - -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 TH and DUT over BLE to setup the Wi-Fi" - verification: | - - disabled: true - - - label: "Step 1: DUT reads the MaxNetworks attribute from the TH" - PICS: CNET.C.A0000 - verification: | - ./chip-tool networkcommissioning read max-networks 1 0 --trace_decode 1 - - Verify MaxNetworks attribute response on TH(all-clusters-app) log: - - [1667208272.085200][14293:14293] CHIP:EM: Handling via exchange: 31335r, Delegate: 0xaaaaaff382d8 - [1667208272.085299][14293:14293] CHIP:IM: Received Read request - [1667208272.085469][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208272.085536][14293:14293] CHIP:DMG: { - [1667208272.085591][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208272.085656][14293:14293] CHIP:DMG: [ - [1667208272.085717][14293:14293] CHIP:DMG: AttributePathIB = - [1667208272.085795][14293:14293] CHIP:DMG: { - [1667208272.085875][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208272.085965][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208272.086053][14293:14293] CHIP:DMG: Attribute = 0x0000_0000, - [1667208272.086129][14293:14293] CHIP:DMG: } - [1667208272.086305][14293:14293] CHIP:DMG: - [1667208272.086375][14293:14293] CHIP:DMG: ], - [1667208272.086446][14293:14293] CHIP:DMG: - [1667208272.086558][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208272.086623][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208272.086683][14293:14293] CHIP:DMG: }, - [1667208272.086838][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208272.087061][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208272.087133][14293:14293] CHIP:DMG: Cluster 31, Attribute 0 is dirty - [1667208272.087187][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0000 (expanded=0) - [1667208272.087411][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208272.087490][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208272.087693][14293:14293] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667208272.088306][14293:14293] CHIP:EM: <<< [E:31335r M:207979142 (Ack:102020621)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208272.088408][14293:14293] CHIP:IN: (S) Sending msg 207979142 on secure session with LSID: 36091 - [1667208272.089216][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:51656 | 207979142 | [Interaction Model (1) / Report Data (0x05) / Session = 62189 / Exchange = 31335] - [1667208272.089312][14293:14293] CHIP:DMG: Header Flags = - [1667208272.089370][14293:14293] CHIP:DMG: { - [1667208272.089455][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208272.089511][14293:14293] CHIP:DMG: { - [1667208272.089571][14293:14293] CHIP:DMG: AckMsg = 102020621 - [1667208272.089698][14293:14293] CHIP:DMG: NeedsAck = true - [1667208272.089751][14293:14293] CHIP:DMG: } - [1667208272.089825][14293:14293] CHIP:DMG: } - [1667208272.089880][14293:14293] CHIP:DMG: - [1667208272.089947][14293:14293] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667208272.090003][14293:14293] CHIP:DMG: { - [1667208272.090058][14293:14293] CHIP:DMG: data = 00edf2008682650ca88b35a87ab9790201216607af689478e5c56dad2629043281e44b91b4ac9e365e70b2ddd2a03df4d99b2f61bdd43e79d8cd1ebac7435b1d5f00ede22d15 - [1667208272.090116][14293:14293] CHIP:DMG: buffer_ptr = 187650247915488 - [1667208272.090169][14293:14293] CHIP:DMG: } - [1667208272.090220][14293:14293] CHIP:DMG: - [1667208272.090295][14293:14293] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667208272.090351][14293:14293] CHIP:DMG: { - [1667208272.090405][14293:14293] CHIP:DMG: data = 153601153501260083a6a084370124020024033124040018240201181818290424ff0118 - [1667208272.090489][14293:14293] CHIP:DMG: } - [1667208272.090613][14293:14293] CHIP:DMG: - [1667208272.090767][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208272.090833][14293:14293] CHIP:DMG: { - [1667208272.090958][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208272.091047][14293:14293] CHIP:DMG: [ - [1667208272.091111][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208272.091200][14293:14293] CHIP:DMG: { - [1667208272.091274][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208272.091356][14293:14293] CHIP:DMG: { - [1667208272.091508][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208272.091585][14293:14293] CHIP:DMG: AttributePathIB = - [1667208272.091679][14293:14293] CHIP:DMG: { - [1667208272.091772][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208272.091871][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208272.091961][14293:14293] CHIP:DMG: Attribute = 0x0000_0000, - [1667208272.092109][14293:14293] CHIP:DMG: } - [1667208272.092212][14293:14293] CHIP:DMG: - [1667208272.092308][14293:14293] CHIP:DMG: Data = 1, - [1667208272.092394][14293:14293] CHIP:DMG: }, - [1667208272.092489][14293:14293] CHIP:DMG: - [1667208272.092558][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 2: DUT reads the Networks attribute from the TH" - PICS: CNET.C.A0001 - verification: | - ./chip-tool networkcommissioning read networks 1 0 --trace_decode 1 - - Verify Networks attribute response on TH(all-clusters-app) log: - - [1667208308.741069][14293:14293] CHIP:EM: Handling via exchange: 43353r, Delegate: 0xaaaaaff382d8 - [1667208308.741175][14293:14293] CHIP:IM: Received Read request - [1667208308.741369][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208308.741460][14293:14293] CHIP:DMG: { - [1667208308.741516][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208308.741582][14293:14293] CHIP:DMG: [ - [1667208308.741667][14293:14293] CHIP:DMG: AttributePathIB = - [1667208308.741840][14293:14293] CHIP:DMG: { - [1667208308.741921][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208308.742024][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208308.742187][14293:14293] CHIP:DMG: Attribute = 0x0000_0001, - [1667208308.742319][14293:14293] CHIP:DMG: } - [1667208308.742512][14293:14293] CHIP:DMG: - [1667208308.742609][14293:14293] CHIP:DMG: ], - [1667208308.742684][14293:14293] CHIP:DMG: - [1667208308.742830][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208308.742954][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208308.743093][14293:14293] CHIP:DMG: }, - [1667208308.743284][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208308.743587][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208308.743666][14293:14293] CHIP:DMG: Cluster 31, Attribute 1 is dirty - [1667208308.743746][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0001 (expanded=0) - [1667208308.743815][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208308.743892][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208308.745831][14293:14293] CHIP:DMG: Sending report (payload has 73 bytes)... - [1667208308.746713][14293:14293] CHIP:EM: <<< [E:43353r M:155711130 (Ack:201136820)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208308.746838][14293:14293] CHIP:IN: (S) Sending msg 155711130 on secure session with LSID: 36092 - [1667208308.747599][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:52150 | 155711130 | [Interaction Model (1) / Report Data (0x05) / Session = 40348 / Exchange = 43353] - [1667208308.747711][14293:14293] CHIP:DMG: Header Flags = - [1667208308.747768][14293:14293] CHIP:DMG: { - [1667208308.747856][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208308.747913][14293:14293] CHIP:DMG: { - [1667208308.747974][14293:14293] CHIP:DMG: AckMsg = 201136820 - [1667208308.748053][14293:14293] CHIP:DMG: NeedsAck = true - [1667208308.748108][14293:14293] CHIP:DMG: } - [1667208308.748180][14293:14293] CHIP:DMG: } - [1667208308.748264][14293:14293] CHIP:DMG: - [1667208308.748333][14293:14293] CHIP:DMG: Encrypted Payload (107 bytes) = - [1667208308.748389][14293:14293] CHIP:DMG: { - [1667208308.748465][14293:14293] CHIP:DMG: data = 009c9d009af64709fd692537184757531ff033e57fff8702ca85430f673c4c8802c45aefde3185456e10531518fbd5f20b65eb97c3e838cb25b721f6f888c8193a57321ca2a250076c3193de634943ed81438452b3634c9eaad965089bb493bbf863758b04303f072253e7 - [1667208308.748528][14293:14293] CHIP:DMG: buffer_ptr = 187650247918064 - [1667208308.748580][14293:14293] CHIP:DMG: } - [1667208308.748659][14293:14293] CHIP:DMG: - [1667208308.748734][14293:14293] CHIP:DMG: Decrypted Payload (73 bytes) = - [1667208308.748790][14293:14293] CHIP:DMG: { - [1667208308.748868][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240401183602181818153501260083a6a0843701240200240331240401340518350230000465746830290118181818290424ff0118 - [1667208308.748924][14293:14293] CHIP:DMG: } - [1667208308.748976][14293:14293] CHIP:DMG: - [1667208308.749223][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208308.749291][14293:14293] CHIP:DMG: { - [1667208308.749345][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208308.749440][14293:14293] CHIP:DMG: [ - [1667208308.749526][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208308.749608][14293:14293] CHIP:DMG: { - [1667208308.749695][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208308.749785][14293:14293] CHIP:DMG: { - [1667208308.749889][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208308.749979][14293:14293] CHIP:DMG: AttributePathIB = - [1667208308.750094][14293:14293] CHIP:DMG: { - [1667208308.750191][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208308.750316][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208308.750437][14293:14293] CHIP:DMG: Attribute = 0x0000_0001, - [1667208308.750555][14293:14293] CHIP:DMG: } - [1667208308.750682][14293:14293] CHIP:DMG: - [1667208308.750770][14293:14293] CHIP:DMG: Data = [ - [1667208308.750884][14293:14293] CHIP:DMG: - [1667208308.750982][14293:14293] CHIP:DMG: ], - [1667208308.751090][14293:14293] CHIP:DMG: }, - [1667208308.751200][14293:14293] CHIP:DMG: - [1667208308.751275][14293:14293] CHIP:DMG: }, - [1667208308.751401][14293:14293] CHIP:DMG: - [1667208308.751471][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208308.751584][14293:14293] CHIP:DMG: { - [1667208308.751666][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208308.751765][14293:14293] CHIP:DMG: { - [1667208308.751856][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208308.751962][14293:14293] CHIP:DMG: AttributePathIB = - [1667208308.752053][14293:14293] CHIP:DMG: { - [1667208308.752159][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208308.752264][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208308.752376][14293:14293] CHIP:DMG: Attribute = 0x0000_0001, - [1667208308.752493][14293:14293] CHIP:DMG: ListIndex = Null, - [1667208308.752596][14293:14293] CHIP:DMG: } - [1667208308.752712][14293:14293] CHIP:DMG: - [1667208308.752794][14293:14293] CHIP:DMG: Data = - [1667208308.752909][14293:14293] CHIP:DMG: { - [1667208308.752998][14293:14293] CHIP:DMG: 0x0 = [ - [1667208308.753108][14293:14293] CHIP:DMG: 0x65, 0x74, 0x68, 0x30, - [1667208308.753240][14293:14293] CHIP:DMG: ] (4 bytes) - [1667208308.753335][14293:14293] CHIP:DMG: 0x1 = true, - [1667208308.753456][14293:14293] CHIP:DMG: }, - [1667208308.753544][14293:14293] CHIP:DMG: }, - [1667208308.753658][14293:14293] CHIP:DMG: - disabled: true - - - label: "Step 3: DUT reads ScanMaxTimeSeconds attribute from the TH" - PICS: CNET.C.A0002 - verification: | - ./chip-tool networkcommissioning read scan-max-time-seconds 1 0 --trace_decode 1 - - Verify ScanMaxTimeSeconds attribute response on TH(all-clusters-app) log: - - [1667208358.868821][14293:14293] CHIP:EM: Handling via exchange: 17173r, Delegate: 0xaaaaaff382d8 - [1667208358.868931][14293:14293] CHIP:IM: Received Read request - [1667208358.869170][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208358.869237][14293:14293] CHIP:DMG: { - [1667208358.869291][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208358.869370][14293:14293] CHIP:DMG: [ - [1667208358.869433][14293:14293] CHIP:DMG: AttributePathIB = - [1667208358.869511][14293:14293] CHIP:DMG: { - [1667208358.869593][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208358.869686][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208358.869775][14293:14293] CHIP:DMG: Attribute = 0x0000_0002, - [1667208358.869850][14293:14293] CHIP:DMG: } - [1667208358.869926][14293:14293] CHIP:DMG: - [1667208358.870064][14293:14293] CHIP:DMG: ], - [1667208358.870143][14293:14293] CHIP:DMG: - [1667208358.870210][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208358.870343][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208358.870407][14293:14293] CHIP:DMG: }, - [1667208358.870595][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208358.870832][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208358.870903][14293:14293] CHIP:DMG: Cluster 31, Attribute 2 is dirty - [1667208358.870958][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0002 (expanded=0) - [1667208358.871103][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=v - [1667208358.871189][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208358.871303][14293:14293] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667208358.871854][14293:14293] CHIP:EM: <<< [E:17173r M:175083412 (Ack:257131767)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208358.871956][14293:14293] CHIP:IN: (S) Sending msg 175083412 on secure session with LSID: 36093 - [1667208358.872780][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:41082 | 175083412 | [Interaction Model (1) / Report Data (0x05) / Session = 43326 / Exchange = 17173] - [1667208358.873041][14293:14293] CHIP:DMG: Header Flags = - [1667208358.873159][14293:14293] CHIP:DMG: { - [1667208358.873252][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208358.873310][14293:14293] CHIP:DMG: { - [1667208358.873369][14293:14293] CHIP:DMG: AckMsg = 257131767 - [1667208358.873425][14293:14293] CHIP:DMG: NeedsAck = true - [1667208358.873478][14293:14293] CHIP:DMG: } - [1667208358.873550][14293:14293] CHIP:DMG: } - [1667208358.873605][14293:14293] CHIP:DMG: - [1667208358.873672][14293:14293] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667208358.873727][14293:14293] CHIP:DMG: { - [1667208358.873781][14293:14293] CHIP:DMG: data = 003ea900948f6f0a64576cb350999ca4bfe0f2c004599f0e32405a5fb661b2d77968c18d24e8ca5bed619834ff7141e03479eb4aa7dfeeb71e0ac45551af4e607392c200306a - [1667208358.873849][14293:14293] CHIP:DMG: buffer_ptr = 187650247916560 - [1667208358.873902][14293:14293] CHIP:DMG: } - [1667208358.873954][14293:14293] CHIP:DMG: - [1667208358.874026][14293:14293] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667208358.874082][14293:14293] CHIP:DMG: { - [1667208358.874195][14293:14293] CHIP:DMG: data = 153601153501260083a6a084370124020024033124040218240200181818290424ff0118 - [1667208358.874255][14293:14293] CHIP:DMG: } - [1667208358.874306][14293:14293] CHIP:DMG: - [1667208358.874455][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208358.874660][14293:14293] CHIP:DMG: { - [1667208358.874714][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208358.874846][14293:14293] CHIP:DMG: [ - [1667208358.874910][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208358.874997][14293:14293] CHIP:DMG: { - [1667208358.875069][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208358.875156][14293:14293] CHIP:DMG: { - [1667208358.875392][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208358.875546][14293:14293] CHIP:DMG: AttributePathIB = - [1667208358.875633][14293:14293] CHIP:DMG: { - [1667208358.875728][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208358.875827][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208358.875926][14293:14293] CHIP:DMG: Attribute = 0x0000_0002, - [1667208358.876076][14293:14293] CHIP:DMG: } - [1667208358.876180][14293:14293] CHIP:DMG: - [1667208358.876270][14293:14293] CHIP:DMG: Data = 10, - [1667208358.876349][14293:14293] CHIP:DMG: }, - [1667208358.876442][14293:14293] CHIP:DMG: - [1667208358.876513][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 4: DUT reads ConnectMaxTimeSeconds attribute from the TH" - PICS: CNET.C.A0003 - verification: | - ./chip-tool networkcommissioning read connect-max-time-seconds 1 0 --trace_decode 1 - - Verify ConnectMaxTimeSeconds attribute response on TH(all-clusters-app) log: - - [1667208410.708719][14293:14293] CHIP:EM: Handling via exchange: 52668r, Delegate: 0xaaaaaff382d8 - [1667208410.708835][14293:14293] CHIP:IM: Received Read request - [1667208410.709030][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208410.709096][14293:14293] CHIP:DMG: { - [1667208410.709174][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208410.709242][14293:14293] CHIP:DMG: [ - [1667208410.709303][14293:14293] CHIP:DMG: AttributePathIB = - [1667208410.709385][14293:14293] CHIP:DMG: { - [1667208410.709484][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208410.709575][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208410.709676][14293:14293] CHIP:DMG: Attribute = 0x0000_0003, - [1667208410.709759][14293:14293] CHIP:DMG: } - [1667208410.709856][14293:14293] CHIP:DMG: - [1667208410.709927][14293:14293] CHIP:DMG: ], - [1667208410.710019][14293:14293] CHIP:DMG: - [1667208410.710087][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208410.710152][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208410.710232][14293:14293] CHIP:DMG: }, - [1667208410.710419][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208410.710816][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208410.710911][14293:14293] CHIP:DMG: Cluster 31, Attribute 3 is dirty - [1667208410.710967][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0003 (expanded=0) - [1667208410.711033][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=v - [1667208410.711109][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208410.711245][14293:14293] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667208410.711825][14293:14293] CHIP:EM: <<< [E:52668r M:204757753 (Ack:51978211)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208410.711925][14293:14293] CHIP:IN: (S) Sending msg 204757753 on secure session with LSID: 36094 - [1667208410.712576][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:48829 | 204757753 | [Interaction Model (1) / Report Data (0x05) / Session = 43814 / Exchange = 52668] - [1667208410.712671][14293:14293] CHIP:DMG: Header Flags = - [1667208410.712728][14293:14293] CHIP:DMG: { - [1667208410.712812][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208410.712868][14293:14293] CHIP:DMG: { - [1667208410.712927][14293:14293] CHIP:DMG: AckMsg = 51978211 - [1667208410.712982][14293:14293] CHIP:DMG: NeedsAck = true - [1667208410.713035][14293:14293] CHIP:DMG: } - [1667208410.713106][14293:14293] CHIP:DMG: } - [1667208410.713160][14293:14293] CHIP:DMG: - [1667208410.713219][14293:14293] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667208410.713266][14293:14293] CHIP:DMG: { - [1667208410.713337][14293:14293] CHIP:DMG: data = 0026ab00f95a340cdd7df02341572cbef90c9a4badc623b39e13ff0fe25d3e7649550df3a5deca3b8dbb139bd27f8ee1e519d7659c3e00f890959a903cd9c9672a1cb799e59c - [1667208410.713389][14293:14293] CHIP:DMG: buffer_ptr = 187650247919616 - [1667208410.713446][14293:14293] CHIP:DMG: } - [1667208410.713498][14293:14293] CHIP:DMG: - [1667208410.713573][14293:14293] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667208410.713657][14293:14293] CHIP:DMG: { - [1667208410.713713][14293:14293] CHIP:DMG: data = 153601153501260083a6a084370124020024033124040318240200181818290424ff0118 - [1667208410.713768][14293:14293] CHIP:DMG: } - [1667208410.713819][14293:14293] CHIP:DMG: - [1667208410.713984][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208410.714078][14293:14293] CHIP:DMG: { - [1667208410.714133][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208410.714239][14293:14293] CHIP:DMG: [ - [1667208410.714303][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208410.714389][14293:14293] CHIP:DMG: { - [1667208410.714533][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208410.714625][14293:14293] CHIP:DMG: { - [1667208410.714735][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208410.714825][14293:14293] CHIP:DMG: AttributePathIB = - [1667208410.714928][14293:14293] CHIP:DMG: { - [1667208410.715023][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208410.715144][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208410.715262][14293:14293] CHIP:DMG: Attribute = 0x0000_0003, - [1667208410.715349][14293:14293] CHIP:DMG: } - [1667208410.715460][14293:14293] CHIP:DMG: - [1667208410.715558][14293:14293] CHIP:DMG: Data = 20, - [1667208410.715820][14293:14293] CHIP:DMG: }, - [1667208410.715914][14293:14293] CHIP:DMG: - [1667208410.715987][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 5: DUT reads InterfaceEnabled attribute from the TH" - PICS: CNET.C.A0004 - verification: | - ./chip-tool networkcommissioning read interface-enabled 1 0 --trace_decode 1 - - Verify InterfaceEnabled attribute response on TH(all-clusters-app) log: - - [1667208443.008116][14293:14293] CHIP:EM: Handling via exchange: 58556r, Delegate: 0xaaaaaff382d8 - [1667208443.008243][14293:14293] CHIP:IM: Received Read request - [1667208443.008440][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208443.008508][14293:14293] CHIP:DMG: { - [1667208443.008563][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208443.008628][14293:14293] CHIP:DMG: [ - [1667208443.008713][14293:14293] CHIP:DMG: AttributePathIB = - [1667208443.008809][14293:14293] CHIP:DMG: { - [1667208443.008883][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208443.008967][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208443.009074][14293:14293] CHIP:DMG: Attribute = 0x0000_0004, - [1667208443.009158][14293:14293] CHIP:DMG: } - [1667208443.009256][14293:14293] CHIP:DMG: - [1667208443.009328][14293:14293] CHIP:DMG: ], - [1667208443.009421][14293:14293] CHIP:DMG: - [1667208443.009491][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208443.009567][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208443.009650][14293:14293] CHIP:DMG: }, - [1667208443.009833][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208443.010086][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208443.010157][14293:14293] CHIP:DMG: Cluster 31, Attribute 4 is dirty - [1667208443.010235][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0004 (expanded=0) - [1667208443.010305][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=v - [1667208443.010382][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208443.010532][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208443.011166][14293:14293] CHIP:EM: <<< [E:58556r M:187682312 (Ack:202477555)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208443.011267][14293:14293] CHIP:IN: (S) Sending msg 187682312 on secure session with LSID: 36095 - [1667208443.011979][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:55431 | 187682312 | [Interaction Model (1) / Report Data (0x05) / Session = 33043 / Exchange = 58556] - [1667208443.012078][14293:14293] CHIP:DMG: Header Flags = - [1667208443.012135][14293:14293] CHIP:DMG: { - [1667208443.012221][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208443.012277][14293:14293] CHIP:DMG: { - [1667208443.012337][14293:14293] CHIP:DMG: AckMsg = 202477555 - [1667208443.012417][14293:14293] CHIP:DMG: NeedsAck = true - [1667208443.012471][14293:14293] CHIP:DMG: } - [1667208443.012544][14293:14293] CHIP:DMG: } - [1667208443.012623][14293:14293] CHIP:DMG: - [1667208443.012689][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208443.012766][14293:14293] CHIP:DMG: { - [1667208443.012822][14293:14293] CHIP:DMG: data = 0013810008ce2f0b6a8e60eea7fcefa14510f7d1d921eac543f9f7fa8e2a5a6c200fe67232673f9d798999b6784b99d7eb3c84e98ff73a9cc013cd53663d1fd14135e4f579 - [1667208443.012880][14293:14293] CHIP:DMG: buffer_ptr = 187650247916304 - [1667208443.013136][14293:14293] CHIP:DMG: } - [1667208443.013195][14293:14293] CHIP:DMG: - [1667208443.013272][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208443.013353][14293:14293] CHIP:DMG: { - [1667208443.013410][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240404182902181818290424ff0118 - [1667208443.013465][14293:14293] CHIP:DMG: } - [1667208443.013517][14293:14293] CHIP:DMG: - [1667208443.013685][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208443.013773][14293:14293] CHIP:DMG: { - [1667208443.013828][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208443.013928][14293:14293] CHIP:DMG: [ - [1667208443.013993][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208443.014103][14293:14293] CHIP:DMG: { - [1667208443.014188][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208443.014297][14293:14293] CHIP:DMG: { - [1667208443.014391][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208443.014520][14293:14293] CHIP:DMG: AttributePathIB = - [1667208443.014612][14293:14293] CHIP:DMG: { - [1667208443.014723][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208443.014814][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208443.014930][14293:14293] CHIP:DMG: Attribute = 0x0000_0004, - [1667208443.015015][14293:14293] CHIP:DMG: } - [1667208443.015134][14293:14293] CHIP:DMG: - [1667208443.015245][14293:14293] CHIP:DMG: Data = true, - [1667208443.015327][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 6: DUT reads LastNetworkingStatus attribute from the TH" - PICS: CNET.C.A0005 - verification: | - ./chip-tool networkcommissioning read last-networking-status 1 0 --trace_decode 1 - - Verify LastNetworkingStatus attribute response on TH(all-clusters-app) log: - - [1667208469.154755][14293:14293] CHIP:EM: Handling via exchange: 45977r, Delegate: 0xaaaaaff382d8 - [1667208469.154875][14293:14293] CHIP:IM: Received Read request - [1667208469.155241][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208469.155315][14293:14293] CHIP:DMG: { - [1667208469.155395][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208469.155461][14293:14293] CHIP:DMG: [ - [1667208469.155514][14293:14293] CHIP:DMG: AttributePathIB = - [1667208469.155586][14293:14293] CHIP:DMG: { - [1667208469.155664][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208469.155777][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208469.155868][14293:14293] CHIP:DMG: Attribute = 0x0000_0005, - [1667208469.155968][14293:14293] CHIP:DMG: } - [1667208469.156047][14293:14293] CHIP:DMG: - [1667208469.156136][14293:14293] CHIP:DMG: ], - [1667208469.156210][14293:14293] CHIP:DMG: - [1667208469.156277][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208469.156361][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208469.156422][14293:14293] CHIP:DMG: }, - [1667208469.156602][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208469.156848][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208469.156943][14293:14293] CHIP:DMG: Cluster 31, Attribute 5 is dirty - [1667208469.156998][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0005 (expanded=0) - [1667208469.157065][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208469.157164][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208469.157295][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208469.157908][14293:14293] CHIP:EM: <<< [E:45977r M:124480128 (Ack:41106952)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208469.158007][14293:14293] CHIP:IN: (S) Sending msg 124480128 on secure session with LSID: 36096 - [1667208469.158760][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:42766 | 124480128 | [Interaction Model (1) / Report Data (0x05) / Session = 62096 / Exchange = 45977] - [1667208469.158858][14293:14293] CHIP:DMG: Header Flags = - [1667208469.158915][14293:14293] CHIP:DMG: { - [1667208469.158999][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208469.159055][14293:14293] CHIP:DMG: { - [1667208469.159113][14293:14293] CHIP:DMG: AckMsg = 41106952 - [1667208469.159200][14293:14293] CHIP:DMG: NeedsAck = true - [1667208469.159254][14293:14293] CHIP:DMG: } - [1667208469.159327][14293:14293] CHIP:DMG: } - [1667208469.159406][14293:14293] CHIP:DMG: - [1667208469.159475][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208469.159531][14293:14293] CHIP:DMG: { - [1667208469.159609][14293:14293] CHIP:DMG: data = 0090f200806a6b07d642bf93d4c8b77a7c81b3f962ba8e786850a3096e2e6ec88d07c84d2be0da74164ac245461957f335581afcfccced791c8558dc20ac7837f4c3e563ac - [1667208469.159668][14293:14293] CHIP:DMG: buffer_ptr = 187650247921216 - [1667208469.159721][14293:14293] CHIP:DMG: } - [1667208469.159796][14293:14293] CHIP:DMG: - [1667208469.159872][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208469.159951][14293:14293] CHIP:DMG: { - [1667208469.160007][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240405183402181818290424ff0118 - [1667208469.160063][14293:14293] CHIP:DMG: } - [1667208469.160136][14293:14293] CHIP:DMG: - [1667208469.160282][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208469.160369][14293:14293] CHIP:DMG: { - [1667208469.160423][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208469.160528][14293:14293] CHIP:DMG: [ - [1667208469.160593][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208469.160702][14293:14293] CHIP:DMG: { - [1667208469.160785][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208469.160900][14293:14293] CHIP:DMG: { - [1667208469.160994][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208469.161104][14293:14293] CHIP:DMG: AttributePathIB = - [1667208469.161196][14293:14293] CHIP:DMG: { - [1667208469.161310][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208469.161424][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208469.161517][14293:14293] CHIP:DMG: Attribute = 0x0000_0005, - [1667208469.161634][14293:14293] CHIP:DMG: } - [1667208469.161732][14293:14293] CHIP:DMG: - [1667208469.161834][14293:14293] CHIP:DMG: Data = 0, - [1667208469.161919][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 7: DUT reads LastNetworkID attribute from the TH" - PICS: CNET.C.A0006 - verification: | - ./chip-tool networkcommissioning read last-network-id 1 0 --trace_decode 1 - - Verify LastNetworkID attribute response on TH(all-clusters-app) log: - - [1667208560.669590][14293:14293] CHIP:EM: Handling via exchange: 8923r, Delegate: 0xaaaaaff382d8 - [1667208560.669685][14293:14293] CHIP:IM: Received Read request - [1667208560.669852][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208560.669918][14293:14293] CHIP:DMG: { - [1667208560.669971][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208560.670037][14293:14293] CHIP:DMG: [ - [1667208560.670098][14293:14293] CHIP:DMG: AttributePathIB = - [1667208560.670181][14293:14293] CHIP:DMG: { - [1667208560.670254][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208560.670337][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208560.670411][14293:14293] CHIP:DMG: Attribute = 0x0000_0006, - [1667208560.670531][14293:14293] CHIP:DMG: } - [1667208560.670600][14293:14293] CHIP:DMG: - [1667208560.670656][14293:14293] CHIP:DMG: ], - [1667208560.670717][14293:14293] CHIP:DMG: - [1667208560.670813][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208560.670879][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208560.670938][14293:14293] CHIP:DMG: }, - [1667208560.671124][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208560.671497][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208560.671571][14293:14293] CHIP:DMG: Cluster 31, Attribute 6 is dirty - [1667208560.671652][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0006 (expanded=0) - [1667208560.671721][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208560.671798][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208560.671909][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208560.672533][14293:14293] CHIP:EM: <<< [E:8923r M:15654191 (Ack:76394150)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208560.672634][14293:14293] CHIP:IN: (S) Sending msg 15654191 on secure session with LSID: 36097 - [1667208560.673339][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:58362 | 15654191 | [Interaction Model (1) / Report Data (0x05) / Session = 25183 / Exchange = 8923] - [1667208560.673436][14293:14293] CHIP:DMG: Header Flags = - [1667208560.673492][14293:14293] CHIP:DMG: { - [1667208560.673577][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208560.673633][14293:14293] CHIP:DMG: { - [1667208560.673692][14293:14293] CHIP:DMG: AckMsg = 76394150 - [1667208560.673772][14293:14293] CHIP:DMG: NeedsAck = true - [1667208560.673827][14293:14293] CHIP:DMG: } - [1667208560.673899][14293:14293] CHIP:DMG: } - [1667208560.673977][14293:14293] CHIP:DMG: - [1667208560.674046][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208560.674101][14293:14293] CHIP:DMG: { - [1667208560.674178][14293:14293] CHIP:DMG: data = 005f62002fddee00d80c8412f88ff071d10fe8c05870e885a47452243d3e90e359d9d7a0e44c456808561806f24b7814babb12c7762f1633bf6489e9baabe9ae6fd8c49efb - [1667208560.674237][14293:14293] CHIP:DMG: buffer_ptr = 187650247916272 - [1667208560.674290][14293:14293] CHIP:DMG: } - [1667208560.674369][14293:14293] CHIP:DMG: - [1667208560.674445][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208560.674546][14293:14293] CHIP:DMG: { - [1667208560.674622][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240406183402181818290424ff0118 - [1667208560.674679][14293:14293] CHIP:DMG: } - [1667208560.674730][14293:14293] CHIP:DMG: - [1686200885.068762][2221:2223] CHIP:DMG: ReportDataMessage = - [1686200885.068823][2221:2223] CHIP:DMG: { - [1686200885.068872][2221:2223] CHIP:DMG: AttributeReportIBs = - [1686200885.068944][2221:2223] CHIP:DMG: [ - [1686200885.069000][2221:2223] CHIP:DMG: AttributeReportIB = - [1686200885.069077][2221:2223] CHIP:DMG: { - [1686200885.069138][2221:2223] CHIP:DMG: AttributeDataIB = - [1686200885.069209][2221:2223] CHIP:DMG: { - [1686200885.069283][2221:2223] CHIP:DMG: DataVersion = 0xe8e1d5c0, - [1686200885.069354][2221:2223] CHIP:DMG: AttributePathIB = - [1686200885.069429][2221:2223] CHIP:DMG: { - [1686200885.069504][2221:2223] CHIP:DMG: Endpoint = 0x0, - [1686200885.069621][2221:2223] CHIP:DMG: Cluster = 0x31, - [1686200885.069710][2221:2223] CHIP:DMG: Attribute = 0x0000_0006, - [1686200885.069785][2221:2223] CHIP:DMG: } - [1686200885.069860][2221:2223] CHIP:DMG: - [1686200885.069933][2221:2223] CHIP:DMG: Data = [ - [1686200885.070011][2221:2223] CHIP:DMG: 0x47, 0x52, 0x4c, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - [1686200885.070094][2221:2223] CHIP:DMG: ] (10 bytes) - [1686200885.070161][2221:2223] CHIP:DMG: }, - [1686200885.070236][2221:2223] CHIP:DMG: - [1686200885.070296][2221:2223] CHIP:DMG: }, - [1686200885.070369][2221:2223] CHIP:DMG: - [1686200885.070424][2221:2223] CHIP:DMG: ], - [1686200885.070494][2221:2223] CHIP:DMG: - [1686200885.070550][2221:2223] CHIP:DMG: SuppressResponse = true, - [1686200885.070608][2221:2223] CHIP:DMG: InteractionModelRevision = 1 - [1686200885.070662][2221:2223] CHIP:DMG: } - disabled: true - - - label: "Step 8: DUT reads LastConnectErrorValue attribute from the TH" - PICS: CNET.C.A0007 - verification: | - ./chip-tool networkcommissioning read last-connect-error-value 1 0 --trace_decode 1 - - Verify LastConnectErrorValue attribute response on TH(all-clusters-app) log: - - [1667208660.521154][14293:14293] CHIP:EM: Handling via exchange: 50685r, Delegate: 0xaaaaaff382d8 - [1667208660.521272][14293:14293] CHIP:IM: Received Read request - [1667208660.521464][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208660.521530][14293:14293] CHIP:DMG: { - [1667208660.521585][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208660.521649][14293:14293] CHIP:DMG: [ - [1667208660.521732][14293:14293] CHIP:DMG: AttributePathIB = - [1667208660.521810][14293:14293] CHIP:DMG: { - [1667208660.521889][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208660.522001][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208660.522112][14293:14293] CHIP:DMG: Attribute = 0x0000_0007, - [1667208660.522195][14293:14293] CHIP:DMG: } - [1667208660.522294][14293:14293] CHIP:DMG: - [1667208660.522366][14293:14293] CHIP:DMG: ], - [1667208660.522437][14293:14293] CHIP:DMG: - [1667208660.522624][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208660.522716][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208660.522777][14293:14293] CHIP:DMG: }, - [1667208660.522959][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208660.523199][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208660.523295][14293:14293] CHIP:DMG: Cluster 31, Attribute 7 is dirty - [1667208660.523354][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0007 (expanded=0) - [1667208660.523415][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208660.523490][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208660.523597][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208660.524201][14293:14293] CHIP:EM: <<< [E:50685r M:187408347 (Ack:256041164)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208660.524304][14293:14293] CHIP:IN: (S) Sending msg 187408347 on secure session with LSID: 36098 - [1667208660.525002][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:41724 | 187408347 | [Interaction Model (1) / Report Data (0x05) / Session = 11768 / Exchange = 50685] - [1667208660.525101][14293:14293] CHIP:DMG: Header Flags = - [1667208660.525159][14293:14293] CHIP:DMG: { - [1667208660.525244][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208660.525300][14293:14293] CHIP:DMG: { - [1667208660.525358][14293:14293] CHIP:DMG: AckMsg = 256041164 - [1667208660.525438][14293:14293] CHIP:DMG: NeedsAck = true - [1667208660.525493][14293:14293] CHIP:DMG: } - [1667208660.525567][14293:14293] CHIP:DMG: } - [1667208660.525646][14293:14293] CHIP:DMG: - [1667208660.525716][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208660.525771][14293:14293] CHIP:DMG: { - [1667208660.525851][14293:14293] CHIP:DMG: data = 00f82d00db9f2b0bfc92cc46b01644793468172d04b473e3be4af5b2ac225fbab6a8196d30b3b489100a7c4a3acb5939adce0594f1b13bb12e488a8a8d655958887b4f367c - [1667208660.525910][14293:14293] CHIP:DMG: buffer_ptr = 187650247916496 - [1667208660.525963][14293:14293] CHIP:DMG: } - [1667208660.526038][14293:14293] CHIP:DMG: - [1667208660.526115][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208660.526171][14293:14293] CHIP:DMG: { - [1667208660.526249][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240407183402181818290424ff0118 - [1667208660.526305][14293:14293] CHIP:DMG: } - [1667208660.526357][14293:14293] CHIP:DMG: - [1667208660.526570][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208660.526666][14293:14293] CHIP:DMG: { - [1667208660.526721][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208660.526820][14293:14293] CHIP:DMG: [ - [1667208660.526885][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208660.526972][14293:14293] CHIP:DMG: { - [1667208660.527061][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208660.527142][14293:14293] CHIP:DMG: { - [1667208660.527245][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208660.527329][14293:14293] CHIP:DMG: AttributePathIB = - [1667208660.527432][14293:14293] CHIP:DMG: { - [1667208660.527527][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208660.527633][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208660.527733][14293:14293] CHIP:DMG: Attribute = 0x0000_0007, - [1667208660.527840][14293:14293] CHIP:DMG: } - [1667208660.527951][14293:14293] CHIP:DMG: - [1667208660.528048][14293:14293] CHIP:DMG: Data = NULL - [1667208660.528152][14293:14293] CHIP:DMG: }, - [1667208660.528240][14293:14293] CHIP:DMG: - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml deleted file mode 100644 index 22453236dde1be..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml +++ /dev/null @@ -1,193 +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: - 12.4.16. [TC-CNET-4.18] [Thread] Verification for attributes check - [DUT-Client] - -PICS: - - CNET.C.F01 - -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 TH and DUT on Thread setup" - verification: | - - disabled: true - - - label: "Step 1: DUT reads the MaxNetworks attribute from the TH" - PICS: CNET.C.A0000 - verification: | - ./chip-tool networkcommissioning read max-networks 54 0 - - Verify MaxNetworks attribute response on TH(all-clusters-app) log: - - D: 7993601 [SC]Allocated SecureSession (0x20003680) - waiting for Sigma1 msg - D: 7993608 [EM]Retransmitting MessageCounter:53368032 on exchange 5643r Send Cnt 1 - I: 7993615 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53368032 to 0x0000000000000000c - I: 7993630 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:231115534 on exchar - D: 7993640 [EM]Handling via exchange: 5644r, Delegate: 0x200070ec - D: 7993647 [IM]Received Read request - D: 7993651 [DMG]IM RH moving to [GeneratingReports] - D: 7993657 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 7993666 [DMG] Cluster 31, Attribute 0 is dirty - D: 7993671 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0000 (expanded=0) - D: 7993682 [DMG] Sending report (payload has 36 bytes)... - I: 7993688 [IN]Prepared secure message 0x200048b4 to 0x00000000000 - disabled: true - - - label: "Step 2: DUT reads the Networks attribute from the TH" - PICS: CNET.C.A0001 - verification: | - ./chip-tool networkcommissioning read networks 54 0 - - Verify Networks attribute response on TH(all-clusters-app) log: - - D: 8065181 [SC]Allocated SecureSession (0x20003738) - waiting for Sigma1 msg - D: 8065188 [EM]Retransmitting MessageCounter:53368036 on exchange 57159r Send Cnt 1 - I: 8065196 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53368036 to 0x0000000000000000c - I: 8065213 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:15008713 on exchanr - D: 8065223 [EM]Handling via exchange: 57160r, Delegate: 0x200070ec - D: 8065229 [IM]Received Read request - D: 8065233 [DMG]IM RH moving to [GeneratingReports] - D: 8065240 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8065248 [DMG] Cluster 31, Attribute 1 is dirty - D: 8065254 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0001 (expanded=0) - D: 8065265 [DMG] Sending report (payload has 77 bytes)... - disabled: true - - - label: "Step 3: DUT reads ScanMaxTimeSeconds attribute from the TH" - PICS: CNET.C.A0002 - verification: | - ./chip-tool networkcommissioning read scan-max-time-seconds 54 0 - - Verify ScanMaxTimeSeconds attribute response on TH(all-clusters-app) log: - - - D: 8108702 [SC]Allocated SecureSession (0x200037f0) - waiting for Sigma1 msg - I: 8108710 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:194637583 on exchar - D: 8108720 [EM]Handling via exchange: 42632r, Delegate: 0x200070ec - D: 8108726 [IM]Received Read request - D: 8108730 [DMG]IM RH moving to [GeneratingReports] - D: 8108735 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8108743 [DMG] Cluster 31, Attribute 2 is dirty - D: 8108749 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0002 (expanded=0) - D: 8108758 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "Step 4: DUT reads ConnectMaxTimeSeconds attribute from the TH" - PICS: CNET.C.A0003 - verification: | - ./chip-tool networkcommissioning read connect-max-time-seconds 54 0 - - Verify InterfaceEnabled attribute response on TH(all-clusters-app) log: - - D: 8145477 [SC]Allocated SecureSession (0x20002c70) - waiting for Sigma1 msg - I: 8145484 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:134704639 on exchar - D: 8145495 [EM]Handling via exchange: 57526r, Delegate: 0x200070ec - D: 8145502 [IM]Received Read request - D: 8145506 [DMG]IM RH moving to [GeneratingReports] - D: 8145511 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8145520 [DMG] Cluster 31, Attribute 3 is dirty - D: 8145525 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0003 (expanded=0) - D: 8145534 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "Step 5: DUT reads InterfaceEnabled attribute from the TH" - PICS: CNET.C.A0004 - verification: | - ./chip-tool networkcommissioning read interface-enabled 54 0 - - Verify InterfaceEnabled attribute response on TH(all-clusters-app) log: - - D: 8179717 [SC]Allocated SecureSession (0x20002de0) - waiting for Sigma1 msg - I: 8179725 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:158532673 on exchar - D: 8179735 [EM]Handling via exchange: 13106r, Delegate: 0x200070ec - D: 8179741 [IM]Received Read request - D: 8179745 [DMG]IM RH moving to [GeneratingReports] - D: 8179750 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8179759 [DMG] Cluster 31, Attribute 4 is dirty - D: 8179764 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0004 (expanded=0) - D: 8179775 [DMG] Sending report (payload has 35 bytes)... - disabled: true - - - label: "Step 6: DUT reads LastNetworkingStatus attribute from the TH" - PICS: CNET.C.A0005 - verification: | - ./chip-tool networkcommissioning read last-networking-status 54 0 - - Verify LastNetworkingStatus attribute response on TH(all-clusters-app) log: - - D: 8428403 [SC]Allocated SecureSession (0x20002d28) - waiting for Sigma1 msg - I: 8428410 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:135181543 on exchar - D: 8428421 [EM]Handling via exchange: 29697r, Delegate: 0x200070ec - D: 8428427 [IM]Received Read request - D: 8428431 [DMG]IM RH moving to [GeneratingReports] - D: 8428435 [EM]Retransmitting MessageCounter:53368052 on exchange 29696r Send Cnt 1 - I: 8428443 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53368052 to 0x0000000000000000c - D: 8428459 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8428468 [DMG] Cluster 31, Attribute 5 is dirty - D: 8428473 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0005 (expanded=0) - D: 8428483 [DMG] Sending report (payload has 36 bytes)... - disabled: true - - - label: "Step 7: DUT reads LastNetworkID attribute from the TH" - PICS: CNET.C.A0006 - verification: | - ./chip-tool networkcommissioning read last-network-id 54 0 - - Verify LastNetworkID attribute response on TH(all-clusters-app) log: - - D: 8469179 [SC]Allocated SecureSession (0x20002e98) - waiting for Sigma1 msg - I: 8469187 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:91003604 on exchanr - D: 8469197 [EM]Handling via exchange: 63120r, Delegate: 0x200070ec - D: 8469203 [IM]Received Read request - D: 8469207 [DMG]IM RH moving to [GeneratingReports] - D: 8469212 [EM]Retransmitting MessageCounter:53368056 on exchange 63119r Send Cnt 1 - I: 8469219 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53368056 to 0x0000000000000000c - D: 8469233 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8469242 [DMG] Cluster 31, Attribute 6 is dirty - D: 8469248 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0006 (expanded=0) - D: 8469258 [DMG] Sending report (payload has 44 bytes)... - disabled: true - - - label: "Step 8: DUT reads LastConnectErrorValue attribute from the TH" - PICS: CNET.C.A0007 - verification: | - ./chip-tool networkcommissioning read last-connect-error-value 54 0 - - Verify LastConnectErrorValue attribute response on TH(all-clusters-app) log: - - D: 8729020 [SC]Allocated SecureSession (0x20002f50) - waiting for Sigma1 msg - I: 8729028 [EM]Received message of type 0x2 with protocolId (0, 1) and MessageCounter:249692114 on exchar - D: 8729038 [EM]Handling via exchange: 17068r, Delegate: 0x200070ec - D: 8729044 [IM]Received Read request - D: 8729048 [DMG]IM RH moving to [GeneratingReports] - D: 8729053 [EM]Retransmitting MessageCounter:53368060 on exchange 17067r Send Cnt 1 - I: 8729060 [IN]Sending unauthenticated msg 0x2000489c with MessageCounter:53368060 to 0x0000000000000000c - D: 8729074 [DMG]Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - D: 8729083 [DMG] Cluster 31, Attribute 7 is dirty - D: 8729089 [DMG]Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0007 (expanded=0) - D: 8729100 [DMG] Sending report (payload has 35 bytes)... - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml deleted file mode 100644 index fc77ec9f4b2e59..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml +++ /dev/null @@ -1,517 +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: - 12.4.17. [TC-CNET-4.19] [Ethernet] Verification for attributes check - [DUT-Client] - -PICS: - - CNET.C.F02 - -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 TH and DUT on Ethernet setup" - verification: | - - disabled: true - - - label: "Step 1: DUT reads the MaxNetworks attribute from the TH" - PICS: CNET.C.A0000 - verification: | - ./chip-tool networkcommissioning read max-networks 1 0 --trace_decode 1 - - Verify MaxNetworks attribute response on TH(all-clusters-app) log: - - [1667208272.085200][14293:14293] CHIP:EM: Handling via exchange: 31335r, Delegate: 0xaaaaaff382d8 - [1667208272.085299][14293:14293] CHIP:IM: Received Read request - [1667208272.085469][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208272.085536][14293:14293] CHIP:DMG: { - [1667208272.085591][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208272.085656][14293:14293] CHIP:DMG: [ - [1667208272.085717][14293:14293] CHIP:DMG: AttributePathIB = - [1667208272.085795][14293:14293] CHIP:DMG: { - [1667208272.085875][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208272.085965][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208272.086053][14293:14293] CHIP:DMG: Attribute = 0x0000_0000, - [1667208272.086129][14293:14293] CHIP:DMG: } - [1667208272.086305][14293:14293] CHIP:DMG: - [1667208272.086375][14293:14293] CHIP:DMG: ], - [1667208272.086446][14293:14293] CHIP:DMG: - [1667208272.086558][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208272.086623][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208272.086683][14293:14293] CHIP:DMG: }, - [1667208272.086838][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208272.087061][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208272.087133][14293:14293] CHIP:DMG: Cluster 31, Attribute 0 is dirty - [1667208272.087187][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0000 (expanded=0) - [1667208272.087411][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208272.087490][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208272.087693][14293:14293] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667208272.088306][14293:14293] CHIP:EM: <<< [E:31335r M:207979142 (Ack:102020621)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208272.088408][14293:14293] CHIP:IN: (S) Sending msg 207979142 on secure session with LSID: 36091 - [1667208272.089216][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:51656 | 207979142 | [Interaction Model (1) / Report Data (0x05) / Session = 62189 / Exchange = 31335] - [1667208272.089312][14293:14293] CHIP:DMG: Header Flags = - [1667208272.089370][14293:14293] CHIP:DMG: { - [1667208272.089455][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208272.089511][14293:14293] CHIP:DMG: { - [1667208272.089571][14293:14293] CHIP:DMG: AckMsg = 102020621 - [1667208272.089698][14293:14293] CHIP:DMG: NeedsAck = true - [1667208272.089751][14293:14293] CHIP:DMG: } - [1667208272.089825][14293:14293] CHIP:DMG: } - [1667208272.089880][14293:14293] CHIP:DMG: - [1667208272.089947][14293:14293] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667208272.090003][14293:14293] CHIP:DMG: { - [1667208272.090058][14293:14293] CHIP:DMG: data = 00edf2008682650ca88b35a87ab9790201216607af689478e5c56dad2629043281e44b91b4ac9e365e70b2ddd2a03df4d99b2f61bdd43e79d8cd1ebac7435b1d5f00ede22d15 - [1667208272.090116][14293:14293] CHIP:DMG: buffer_ptr = 187650247915488 - [1667208272.090169][14293:14293] CHIP:DMG: } - [1667208272.090220][14293:14293] CHIP:DMG: - [1667208272.090295][14293:14293] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667208272.090351][14293:14293] CHIP:DMG: { - [1667208272.090405][14293:14293] CHIP:DMG: data = 153601153501260083a6a084370124020024033124040018240201181818290424ff0118 - [1667208272.090489][14293:14293] CHIP:DMG: } - [1667208272.090613][14293:14293] CHIP:DMG: - [1667208272.090767][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208272.090833][14293:14293] CHIP:DMG: { - [1667208272.090958][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208272.091047][14293:14293] CHIP:DMG: [ - [1667208272.091111][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208272.091200][14293:14293] CHIP:DMG: { - [1667208272.091274][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208272.091356][14293:14293] CHIP:DMG: { - [1667208272.091508][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208272.091585][14293:14293] CHIP:DMG: AttributePathIB = - [1667208272.091679][14293:14293] CHIP:DMG: { - [1667208272.091772][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208272.091871][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208272.091961][14293:14293] CHIP:DMG: Attribute = 0x0000_0000, - [1667208272.092109][14293:14293] CHIP:DMG: } - [1667208272.092212][14293:14293] CHIP:DMG: - [1667208272.092308][14293:14293] CHIP:DMG: Data = 1, - [1667208272.092394][14293:14293] CHIP:DMG: }, - [1667208272.092489][14293:14293] CHIP:DMG: - [1667208272.092558][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 2: DUT reads the Networks attribute from the TH" - PICS: CNET.C.A0001 - verification: | - ./chip-tool networkcommissioning read networks 1 0 --trace_decode 1 - - Verify Networks attribute response on TH(all-clusters-app) log: - - [1667208308.741069][14293:14293] CHIP:EM: Handling via exchange: 43353r, Delegate: 0xaaaaaff382d8 - [1667208308.741175][14293:14293] CHIP:IM: Received Read request - [1667208308.741369][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208308.741460][14293:14293] CHIP:DMG: { - [1667208308.741516][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208308.741582][14293:14293] CHIP:DMG: [ - [1667208308.741667][14293:14293] CHIP:DMG: AttributePathIB = - [1667208308.741840][14293:14293] CHIP:DMG: { - [1667208308.741921][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208308.742024][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208308.742187][14293:14293] CHIP:DMG: Attribute = 0x0000_0001, - [1667208308.742319][14293:14293] CHIP:DMG: } - [1667208308.742512][14293:14293] CHIP:DMG: - [1667208308.742609][14293:14293] CHIP:DMG: ], - [1667208308.742684][14293:14293] CHIP:DMG: - [1667208308.742830][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208308.742954][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208308.743093][14293:14293] CHIP:DMG: }, - [1667208308.743284][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208308.743587][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208308.743666][14293:14293] CHIP:DMG: Cluster 31, Attribute 1 is dirty - [1667208308.743746][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0001 (expanded=0) - [1667208308.743815][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208308.743892][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208308.745831][14293:14293] CHIP:DMG: Sending report (payload has 73 bytes)... - [1667208308.746713][14293:14293] CHIP:EM: <<< [E:43353r M:155711130 (Ack:201136820)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208308.746838][14293:14293] CHIP:IN: (S) Sending msg 155711130 on secure session with LSID: 36092 - [1667208308.747599][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:52150 | 155711130 | [Interaction Model (1) / Report Data (0x05) / Session = 40348 / Exchange = 43353] - [1667208308.747711][14293:14293] CHIP:DMG: Header Flags = - [1667208308.747768][14293:14293] CHIP:DMG: { - [1667208308.747856][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208308.747913][14293:14293] CHIP:DMG: { - [1667208308.747974][14293:14293] CHIP:DMG: AckMsg = 201136820 - [1667208308.748053][14293:14293] CHIP:DMG: NeedsAck = true - [1667208308.748108][14293:14293] CHIP:DMG: } - [1667208308.748180][14293:14293] CHIP:DMG: } - [1667208308.748264][14293:14293] CHIP:DMG: - [1667208308.748333][14293:14293] CHIP:DMG: Encrypted Payload (107 bytes) = - [1667208308.748389][14293:14293] CHIP:DMG: { - [1667208308.748465][14293:14293] CHIP:DMG: data = 009c9d009af64709fd692537184757531ff033e57fff8702ca85430f673c4c8802c45aefde3185456e10531518fbd5f20b65eb97c3e838cb25b721f6f888c8193a57321ca2a250076c3193de634943ed81438452b3634c9eaad965089bb493bbf863758b04303f072253e7 - [1667208308.748528][14293:14293] CHIP:DMG: buffer_ptr = 187650247918064 - [1667208308.748580][14293:14293] CHIP:DMG: } - [1667208308.748659][14293:14293] CHIP:DMG: - [1667208308.748734][14293:14293] CHIP:DMG: Decrypted Payload (73 bytes) = - [1667208308.748790][14293:14293] CHIP:DMG: { - [1667208308.748868][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240401183602181818153501260083a6a0843701240200240331240401340518350230000465746830290118181818290424ff0118 - [1667208308.748924][14293:14293] CHIP:DMG: } - [1667208308.748976][14293:14293] CHIP:DMG: - [1667208308.749223][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208308.749291][14293:14293] CHIP:DMG: { - [1667208308.749345][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208308.749440][14293:14293] CHIP:DMG: [ - [1667208308.749526][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208308.749608][14293:14293] CHIP:DMG: { - [1667208308.749695][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208308.749785][14293:14293] CHIP:DMG: { - [1667208308.749889][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208308.749979][14293:14293] CHIP:DMG: AttributePathIB = - [1667208308.750094][14293:14293] CHIP:DMG: { - [1667208308.750191][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208308.750316][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208308.750437][14293:14293] CHIP:DMG: Attribute = 0x0000_0001, - [1667208308.750555][14293:14293] CHIP:DMG: } - [1667208308.750682][14293:14293] CHIP:DMG: - [1667208308.750770][14293:14293] CHIP:DMG: Data = [ - [1667208308.750884][14293:14293] CHIP:DMG: - [1667208308.750982][14293:14293] CHIP:DMG: ], - [1667208308.751090][14293:14293] CHIP:DMG: }, - [1667208308.751200][14293:14293] CHIP:DMG: - [1667208308.751275][14293:14293] CHIP:DMG: }, - [1667208308.751401][14293:14293] CHIP:DMG: - [1667208308.751471][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208308.751584][14293:14293] CHIP:DMG: { - [1667208308.751666][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208308.751765][14293:14293] CHIP:DMG: { - [1667208308.751856][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208308.751962][14293:14293] CHIP:DMG: AttributePathIB = - [1667208308.752053][14293:14293] CHIP:DMG: { - [1667208308.752159][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208308.752264][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208308.752376][14293:14293] CHIP:DMG: Attribute = 0x0000_0001, - [1667208308.752493][14293:14293] CHIP:DMG: ListIndex = Null, - [1667208308.752596][14293:14293] CHIP:DMG: } - [1667208308.752712][14293:14293] CHIP:DMG: - [1667208308.752794][14293:14293] CHIP:DMG: Data = - [1667208308.752909][14293:14293] CHIP:DMG: { - [1667208308.752998][14293:14293] CHIP:DMG: 0x0 = [ - [1667208308.753108][14293:14293] CHIP:DMG: 0x65, 0x74, 0x68, 0x30, - [1667208308.753240][14293:14293] CHIP:DMG: ] (4 bytes) - [1667208308.753335][14293:14293] CHIP:DMG: 0x1 = true, - [1667208308.753456][14293:14293] CHIP:DMG: }, - [1667208308.753544][14293:14293] CHIP:DMG: }, - [1667208308.753658][14293:14293] CHIP:DMG: - disabled: true - - - label: "Step 3: DUT reads InterfaceEnabled attribute from the TH" - PICS: CNET.C.A0004 - verification: | - ./chip-tool networkcommissioning read interface-enabled 1 0 --trace_decode 1 - - Verify InterfaceEnabled attribute response on TH(all-clusters-app) log: - - [1667208443.008116][14293:14293] CHIP:EM: Handling via exchange: 58556r, Delegate: 0xaaaaaff382d8 - [1667208443.008243][14293:14293] CHIP:IM: Received Read request - [1667208443.008440][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208443.008508][14293:14293] CHIP:DMG: { - [1667208443.008563][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208443.008628][14293:14293] CHIP:DMG: [ - [1667208443.008713][14293:14293] CHIP:DMG: AttributePathIB = - [1667208443.008809][14293:14293] CHIP:DMG: { - [1667208443.008883][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208443.008967][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208443.009074][14293:14293] CHIP:DMG: Attribute = 0x0000_0004, - [1667208443.009158][14293:14293] CHIP:DMG: } - [1667208443.009256][14293:14293] CHIP:DMG: - [1667208443.009328][14293:14293] CHIP:DMG: ], - [1667208443.009421][14293:14293] CHIP:DMG: - [1667208443.009491][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208443.009567][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208443.009650][14293:14293] CHIP:DMG: }, - [1667208443.009833][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208443.010086][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208443.010157][14293:14293] CHIP:DMG: Cluster 31, Attribute 4 is dirty - [1667208443.010235][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0004 (expanded=0) - [1667208443.010305][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=v - [1667208443.010382][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208443.010532][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208443.011166][14293:14293] CHIP:EM: <<< [E:58556r M:187682312 (Ack:202477555)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208443.011267][14293:14293] CHIP:IN: (S) Sending msg 187682312 on secure session with LSID: 36095 - [1667208443.011979][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:55431 | 187682312 | [Interaction Model (1) / Report Data (0x05) / Session = 33043 / Exchange = 58556] - [1667208443.012078][14293:14293] CHIP:DMG: Header Flags = - [1667208443.012135][14293:14293] CHIP:DMG: { - [1667208443.012221][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208443.012277][14293:14293] CHIP:DMG: { - [1667208443.012337][14293:14293] CHIP:DMG: AckMsg = 202477555 - [1667208443.012417][14293:14293] CHIP:DMG: NeedsAck = true - [1667208443.012471][14293:14293] CHIP:DMG: } - [1667208443.012544][14293:14293] CHIP:DMG: } - [1667208443.012623][14293:14293] CHIP:DMG: - [1667208443.012689][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208443.012766][14293:14293] CHIP:DMG: { - [1667208443.012822][14293:14293] CHIP:DMG: data = 0013810008ce2f0b6a8e60eea7fcefa14510f7d1d921eac543f9f7fa8e2a5a6c200fe67232673f9d798999b6784b99d7eb3c84e98ff73a9cc013cd53663d1fd14135e4f579 - [1667208443.012880][14293:14293] CHIP:DMG: buffer_ptr = 187650247916304 - [1667208443.013136][14293:14293] CHIP:DMG: } - [1667208443.013195][14293:14293] CHIP:DMG: - [1667208443.013272][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208443.013353][14293:14293] CHIP:DMG: { - [1667208443.013410][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240404182902181818290424ff0118 - [1667208443.013465][14293:14293] CHIP:DMG: } - [1667208443.013517][14293:14293] CHIP:DMG: - [1667208443.013685][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208443.013773][14293:14293] CHIP:DMG: { - [1667208443.013828][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208443.013928][14293:14293] CHIP:DMG: [ - [1667208443.013993][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208443.014103][14293:14293] CHIP:DMG: { - [1667208443.014188][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208443.014297][14293:14293] CHIP:DMG: { - [1667208443.014391][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208443.014520][14293:14293] CHIP:DMG: AttributePathIB = - [1667208443.014612][14293:14293] CHIP:DMG: { - [1667208443.014723][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208443.014814][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208443.014930][14293:14293] CHIP:DMG: Attribute = 0x0000_0004, - [1667208443.015015][14293:14293] CHIP:DMG: } - [1667208443.015134][14293:14293] CHIP:DMG: - [1667208443.015245][14293:14293] CHIP:DMG: Data = true, - [1667208443.015327][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 4: DUT reads LastNetworkingStatus attribute from the TH" - PICS: CNET.C.A0005 - verification: | - ./chip-tool networkcommissioning read last-networking-status 1 0 --trace_decode 1 - - Verify LastNetworkingStatus attribute response on TH(all-clusters-app) log: - - [1667208469.154755][14293:14293] CHIP:EM: Handling via exchange: 45977r, Delegate: 0xaaaaaff382d8 - [1667208469.154875][14293:14293] CHIP:IM: Received Read request - [1667208469.155241][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208469.155315][14293:14293] CHIP:DMG: { - [1667208469.155395][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208469.155461][14293:14293] CHIP:DMG: [ - [1667208469.155514][14293:14293] CHIP:DMG: AttributePathIB = - [1667208469.155586][14293:14293] CHIP:DMG: { - [1667208469.155664][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208469.155777][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208469.155868][14293:14293] CHIP:DMG: Attribute = 0x0000_0005, - [1667208469.155968][14293:14293] CHIP:DMG: } - [1667208469.156047][14293:14293] CHIP:DMG: - [1667208469.156136][14293:14293] CHIP:DMG: ], - [1667208469.156210][14293:14293] CHIP:DMG: - [1667208469.156277][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208469.156361][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208469.156422][14293:14293] CHIP:DMG: }, - [1667208469.156602][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208469.156848][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208469.156943][14293:14293] CHIP:DMG: Cluster 31, Attribute 5 is dirty - [1667208469.156998][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0005 (expanded=0) - [1667208469.157065][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208469.157164][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208469.157295][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208469.157908][14293:14293] CHIP:EM: <<< [E:45977r M:124480128 (Ack:41106952)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208469.158007][14293:14293] CHIP:IN: (S) Sending msg 124480128 on secure session with LSID: 36096 - [1667208469.158760][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:42766 | 124480128 | [Interaction Model (1) / Report Data (0x05) / Session = 62096 / Exchange = 45977] - [1667208469.158858][14293:14293] CHIP:DMG: Header Flags = - [1667208469.158915][14293:14293] CHIP:DMG: { - [1667208469.158999][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208469.159055][14293:14293] CHIP:DMG: { - [1667208469.159113][14293:14293] CHIP:DMG: AckMsg = 41106952 - [1667208469.159200][14293:14293] CHIP:DMG: NeedsAck = true - [1667208469.159254][14293:14293] CHIP:DMG: } - [1667208469.159327][14293:14293] CHIP:DMG: } - [1667208469.159406][14293:14293] CHIP:DMG: - [1667208469.159475][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208469.159531][14293:14293] CHIP:DMG: { - [1667208469.159609][14293:14293] CHIP:DMG: data = 0090f200806a6b07d642bf93d4c8b77a7c81b3f962ba8e786850a3096e2e6ec88d07c84d2be0da74164ac245461957f335581afcfccced791c8558dc20ac7837f4c3e563ac - [1667208469.159668][14293:14293] CHIP:DMG: buffer_ptr = 187650247921216 - [1667208469.159721][14293:14293] CHIP:DMG: } - [1667208469.159796][14293:14293] CHIP:DMG: - [1667208469.159872][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208469.159951][14293:14293] CHIP:DMG: { - [1667208469.160007][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240405183402181818290424ff0118 - [1667208469.160063][14293:14293] CHIP:DMG: } - [1667208469.160136][14293:14293] CHIP:DMG: - [1667208469.160282][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208469.160369][14293:14293] CHIP:DMG: { - [1667208469.160423][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208469.160528][14293:14293] CHIP:DMG: [ - [1667208469.160593][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208469.160702][14293:14293] CHIP:DMG: { - [1667208469.160785][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208469.160900][14293:14293] CHIP:DMG: { - [1667208469.160994][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208469.161104][14293:14293] CHIP:DMG: AttributePathIB = - [1667208469.161196][14293:14293] CHIP:DMG: { - [1667208469.161310][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208469.161424][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208469.161517][14293:14293] CHIP:DMG: Attribute = 0x0000_0005, - [1667208469.161634][14293:14293] CHIP:DMG: } - [1667208469.161732][14293:14293] CHIP:DMG: - [1667208469.161834][14293:14293] CHIP:DMG: Data = NULL - [1667208469.161919][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 5: DUT reads LastNetworkID attribute from the TH" - PICS: CNET.C.A0006 - verification: | - ./chip-tool networkcommissioning read last-network-id 1 0 --trace_decode 1 - - Verify LastNetworkID attribute response from TH(all-clusters-app) log: - - [1667208560.669590][14293:14293] CHIP:EM: Handling via exchange: 8923r, Delegate: 0xaaaaaff382d8 - [1667208560.669685][14293:14293] CHIP:IM: Received Read request - [1667208560.669852][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208560.669918][14293:14293] CHIP:DMG: { - [1667208560.669971][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208560.670037][14293:14293] CHIP:DMG: [ - [1667208560.670098][14293:14293] CHIP:DMG: AttributePathIB = - [1667208560.670181][14293:14293] CHIP:DMG: { - [1667208560.670254][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208560.670337][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208560.670411][14293:14293] CHIP:DMG: Attribute = 0x0000_0006, - [1667208560.670531][14293:14293] CHIP:DMG: } - [1667208560.670600][14293:14293] CHIP:DMG: - [1667208560.670656][14293:14293] CHIP:DMG: ], - [1667208560.670717][14293:14293] CHIP:DMG: - [1667208560.670813][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208560.670879][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208560.670938][14293:14293] CHIP:DMG: }, - [1667208560.671124][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208560.671497][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208560.671571][14293:14293] CHIP:DMG: Cluster 31, Attribute 6 is dirty - [1667208560.671652][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0006 (expanded=0) - [1667208560.671721][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208560.671798][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208560.671909][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208560.672533][14293:14293] CHIP:EM: <<< [E:8923r M:15654191 (Ack:76394150)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208560.672634][14293:14293] CHIP:IN: (S) Sending msg 15654191 on secure session with LSID: 36097 - [1667208560.673339][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:58362 | 15654191 | [Interaction Model (1) / Report Data (0x05) / Session = 25183 / Exchange = 8923] - [1667208560.673436][14293:14293] CHIP:DMG: Header Flags = - [1667208560.673492][14293:14293] CHIP:DMG: { - [1667208560.673577][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208560.673633][14293:14293] CHIP:DMG: { - [1667208560.673692][14293:14293] CHIP:DMG: AckMsg = 76394150 - [1667208560.673772][14293:14293] CHIP:DMG: NeedsAck = true - [1667208560.673827][14293:14293] CHIP:DMG: } - [1667208560.673899][14293:14293] CHIP:DMG: } - [1667208560.673977][14293:14293] CHIP:DMG: - [1667208560.674046][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208560.674101][14293:14293] CHIP:DMG: { - [1667208560.674178][14293:14293] CHIP:DMG: data = 005f62002fddee00d80c8412f88ff071d10fe8c05870e885a47452243d3e90e359d9d7a0e44c456808561806f24b7814babb12c7762f1633bf6489e9baabe9ae6fd8c49efb - [1667208560.674237][14293:14293] CHIP:DMG: buffer_ptr = 187650247916272 - [1667208560.674290][14293:14293] CHIP:DMG: } - [1667208560.674369][14293:14293] CHIP:DMG: - [1667208560.674445][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208560.674546][14293:14293] CHIP:DMG: { - [1667208560.674622][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240406183402181818290424ff0118 - [1667208560.674679][14293:14293] CHIP:DMG: } - [1667208560.674730][14293:14293] CHIP:DMG: - [1667208560.674900][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208560.674967][14293:14293] CHIP:DMG: { - [1667208560.675021][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208560.675129][14293:14293] CHIP:DMG: [ - [1667208560.675193][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208560.675302][14293:14293] CHIP:DMG: { - [1667208560.675383][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208560.675488][14293:14293] CHIP:DMG: { - [1667208560.675595][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208560.675681][14293:14293] CHIP:DMG: AttributePathIB = - [1667208560.675788][14293:14293] CHIP:DMG: { - [1667208560.675884][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208560.676000][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208560.676102][14293:14293] CHIP:DMG: Attribute = 0x0000_0006, - [1667208560.676211][14293:14293] CHIP:DMG: } - [1667208560.676303][14293:14293] CHIP:DMG: - [1667208560.676413][14293:14293] CHIP:DMG: Data = NULL - [1667208560.676494][14293:14293] CHIP:DMG: }, - disabled: true - - - label: "Step 6: DUT reads LastConnectErrorValue attribute from the TH" - PICS: CNET.C.A0007 - verification: | - ./chip-tool networkcommissioning read last-connect-error-value 1 0 --trace_decode 1 - - Verify LastConnectErrorValue attribute response from on TH(all-clusters-app) log: - - [1667208660.521154][14293:14293] CHIP:EM: Handling via exchange: 50685r, Delegate: 0xaaaaaff382d8 - [1667208660.521272][14293:14293] CHIP:IM: Received Read request - [1667208660.521464][14293:14293] CHIP:DMG: ReadRequestMessage = - [1667208660.521530][14293:14293] CHIP:DMG: { - [1667208660.521585][14293:14293] CHIP:DMG: AttributePathIBs = - [1667208660.521649][14293:14293] CHIP:DMG: [ - [1667208660.521732][14293:14293] CHIP:DMG: AttributePathIB = - [1667208660.521810][14293:14293] CHIP:DMG: { - [1667208660.521889][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208660.522001][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208660.522112][14293:14293] CHIP:DMG: Attribute = 0x0000_0007, - [1667208660.522195][14293:14293] CHIP:DMG: } - [1667208660.522294][14293:14293] CHIP:DMG: - [1667208660.522366][14293:14293] CHIP:DMG: ], - [1667208660.522437][14293:14293] CHIP:DMG: - [1667208660.522624][14293:14293] CHIP:DMG: isFabricFiltered = true, - [1667208660.522716][14293:14293] CHIP:DMG: InteractionModelRevision = 1 - [1667208660.522777][14293:14293] CHIP:DMG: }, - [1667208660.522959][14293:14293] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667208660.523199][14293:14293] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667208660.523295][14293:14293] CHIP:DMG: Cluster 31, Attribute 7 is dirty - [1667208660.523354][14293:14293] CHIP:DMG: Reading attribute: Cluster=0x0000_0031 Endpoint=0 AttributeId=0x0000_0007 (expanded=0) - [1667208660.523415][14293:14293] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0031 e=0 p=a - [1667208660.523490][14293:14293] CHIP:DMG: AccessControl: allowed - [1667208660.523597][14293:14293] CHIP:DMG: Sending report (payload has 35 bytes)... - [1667208660.524201][14293:14293] CHIP:EM: <<< [E:50685r M:187408347 (Ack:256041164)] (S) Msg TX to 1:000000000001B669 [9A5A] --- Type 0001:05 (IM:ReportData) - [1667208660.524304][14293:14293] CHIP:IN: (S) Sending msg 187408347 on secure session with LSID: 36098 - [1667208660.525002][14293:14293] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:41724 | 187408347 | [Interaction Model (1) / Report Data (0x05) / Session = 11768 / Exchange = 50685] - [1667208660.525101][14293:14293] CHIP:DMG: Header Flags = - [1667208660.525159][14293:14293] CHIP:DMG: { - [1667208660.525244][14293:14293] CHIP:DMG: Exchange (0x06) = - [1667208660.525300][14293:14293] CHIP:DMG: { - [1667208660.525358][14293:14293] CHIP:DMG: AckMsg = 256041164 - [1667208660.525438][14293:14293] CHIP:DMG: NeedsAck = true - [1667208660.525493][14293:14293] CHIP:DMG: } - [1667208660.525567][14293:14293] CHIP:DMG: } - [1667208660.525646][14293:14293] CHIP:DMG: - [1667208660.525716][14293:14293] CHIP:DMG: Encrypted Payload (69 bytes) = - [1667208660.525771][14293:14293] CHIP:DMG: { - [1667208660.525851][14293:14293] CHIP:DMG: data = 00f82d00db9f2b0bfc92cc46b01644793468172d04b473e3be4af5b2ac225fbab6a8196d30b3b489100a7c4a3acb5939adce0594f1b13bb12e488a8a8d655958887b4f367c - [1667208660.525910][14293:14293] CHIP:DMG: buffer_ptr = 187650247916496 - [1667208660.525963][14293:14293] CHIP:DMG: } - [1667208660.526038][14293:14293] CHIP:DMG: - [1667208660.526115][14293:14293] CHIP:DMG: Decrypted Payload (35 bytes) = - [1667208660.526171][14293:14293] CHIP:DMG: { - [1667208660.526249][14293:14293] CHIP:DMG: data = 153601153501260083a6a0843701240200240331240407183402181818290424ff0118 - [1667208660.526305][14293:14293] CHIP:DMG: } - [1667208660.526357][14293:14293] CHIP:DMG: - [1667208660.526570][14293:14293] CHIP:DMG: ReportDataMessage = - [1667208660.526666][14293:14293] CHIP:DMG: { - [1667208660.526721][14293:14293] CHIP:DMG: AttributeReportIBs = - [1667208660.526820][14293:14293] CHIP:DMG: [ - [1667208660.526885][14293:14293] CHIP:DMG: AttributeReportIB = - [1667208660.526972][14293:14293] CHIP:DMG: { - [1667208660.527061][14293:14293] CHIP:DMG: AttributeDataIB = - [1667208660.527142][14293:14293] CHIP:DMG: { - [1667208660.527245][14293:14293] CHIP:DMG: DataVersion = 0x84a0a683, - [1667208660.527329][14293:14293] CHIP:DMG: AttributePathIB = - [1667208660.527432][14293:14293] CHIP:DMG: { - [1667208660.527527][14293:14293] CHIP:DMG: Endpoint = 0x0, - [1667208660.527633][14293:14293] CHIP:DMG: Cluster = 0x31, - [1667208660.527733][14293:14293] CHIP:DMG: Attribute = 0x0000_0007, - [1667208660.527840][14293:14293] CHIP:DMG: } - [1667208660.527951][14293:14293] CHIP:DMG: - [1667208660.528048][14293:14293] CHIP:DMG: Data = NULL - [1667208660.528152][14293:14293] CHIP:DMG: }, - [1667208660.528240][14293:14293] CHIP:DMG: - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml index ce0b858b614348..8a4565b3f310dd 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml @@ -302,9 +302,9 @@ tests: "Step 11: TH sends ArmFailSafe command to the DUT with ExpiryLengthSeconds set to 900" verification: | - ./chip-tool generalcommissioning arm-fail-safe 90 1 1 0 + ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - Via the TH (chip-tool), Verify the DUT sends ArmFailSafe with timeout as 90 secs to the TH. + Via the TH (chip-tool), Verify the DUT sends ArmFailSafe with timeout as 900 secs to the TH. [1657288428.409103][2382:2388] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1657288428.409191][2382:2388] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml index 34d6396a670121..a82b0a37f5682a 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml @@ -38,9 +38,9 @@ tests: - Printed using a minimum font size of 6 points, typically producing a typeface height of 2.1 mm (6/72 inches) - - Include dashes between the groups of Manual Pairing Code digits (e.g. "MATTER 1234-5678-901") + - Include dashes between the groups of Manual Pairing Code digits with the following spacing: - - If the code is presented in audio format it SHOULD be read in groups of 4 digits, with the last group being only 3 or 1 digits depending on overall size. + - For 11 or 21-digit codes, the first row spacing is 4-3-4 (First Row: "1234-567-8901") - - If a Matter logo cannot be printed alongside the code then the code SHOULD be prefixed with MATTER (e.g. "MATTER 1234-5678-901") + - For 21-digit codes, the second row spacing is 4-3-2-1 (Second Row:"9876-543-21-0") disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DESC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DESC_1_1.yaml index 3923c8291cf4d8..2e469df84d7d10 100644 --- a/src/app/tests/suites/certification/Test_TC_DESC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DESC_1_1.yaml @@ -33,7 +33,6 @@ tests: value: nodeId - label: "Step 2: Read the global attribute: ClusterRevision" - PICS: DESC.S.Afffd command: "readAttribute" attribute: "ClusterRevision" response: @@ -42,7 +41,6 @@ tests: type: int16u - label: "Step 3: Read the global attribute: FeatureMap" - PICS: DESC.S.Afffc command: "readAttribute" attribute: "FeatureMap" response: @@ -51,7 +49,7 @@ tests: type: bitmap32 - label: "Step 4a: Read the global attribute: AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && DESC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" attribute: "AttributeList" response: @@ -61,7 +59,7 @@ tests: #List values range check support https://github.com/project-chip/connectedhomeip/issues/26570 - label: "Step 4a: Read the global attribute: AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && DESC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" command: "readAttribute" attribute: "AttributeList" response: @@ -100,7 +98,7 @@ tests: [1676280023.477370][3892:3894] CHIP:TOO: [10]: 65533 cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && DESC.S.Afffb + PICS: PICS_USER_PROMPT arguments: values: - name: "message" @@ -125,7 +123,7 @@ tests: [1676366852.531334][9747:9749] CHIP:TOO: EventList: 0 entries cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && DESC.S.Afffa + PICS: PICS_USER_PROMPT arguments: values: - name: "message" @@ -152,7 +150,7 @@ tests: [1649425400.031430][3493:3498] CHIP:TOO: AcceptedCommandList: 0 entries cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && DESC.S.Afff9 + PICS: PICS_USER_PROMPT arguments: values: - name: "message" @@ -179,7 +177,7 @@ tests: [1649425614.162088][3509:3514] CHIP:TOO: GeneratedCommandList: 0 entries cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && DESC.S.Afff8 + PICS: PICS_USER_PROMPT arguments: values: - name: "message" diff --git a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml index 3e725d334c4b05..04ffc88831b5d4 100644 --- a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml @@ -244,14 +244,7 @@ tests: disabled: true - label: "Step 5: TH reads from the DUT the 'TagList' attribute." + PICS: DESC.S.A0004 verification: | - Chip-tool has to implement the Taglist attribute - disabled: true - - - label: - "Step 6: The cluster tests applicable to each Device Type should be - executed to make sure all mandatory (and applicable optional) - attributes/commands are implemented." - verification: | - This step is redundant as during certification the appropriate tests are being run + SDK has to implement the Taglist attribute disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DESC_2_2_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DESC_2_2_Simulated.yaml deleted file mode 100644 index 6a5cc7c919395e..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DESC_2_2_Simulated.yaml +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 84.2.2. [TC-DESC-2.2] Descriptor Cluster Attributes [DUT-Client] - -PICS: - - DESC.C - -config: - nodeId: 0x12344321 - cluster: "Descriptor" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads DeviceTypeList from TH." - PICS: DESC.C.A0000 - wait: "readAttribute" - attribute: "DeviceTypeList" - - - label: "DUT reads ServerList from the TH" - PICS: DESC.C.A0001 - wait: "readAttribute" - attribute: "ServerList" - - - label: "DUT reads ClientList attribute from the TH" - PICS: DESC.C.A0002 - wait: "readAttribute" - attribute: "ClientList" - - - label: "DUT reads PartsList attribute from the TH" - PICS: DESC.C.A0003 - wait: "readAttribute" - attribute: "PartsList" - - - label: "DUT reads TagList from the TH" - PICS: PICS_USER_PROMPT - verification: | - Chip-tool has to implement the Taglist attribute - cluster: "LogCommands" - command: "UserPrompt" - arguments: - values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_DGETH_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGETH_3_1_Simulated.yaml deleted file mode 100644 index d9d5df4e8e4c31..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGETH_3_1_Simulated.yaml +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 47.3.1. [TC-DGETH-3.1] Attributes [DUT as Client] - -PICS: - - DGETH.C - -config: - nodeId: 0x12344321 - cluster: "Ethernet Network Diagnostics" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: PHYRate" - PICS: DGETH.C.A0000 - wait: "readAttribute" - attribute: "PHYRate" - - - label: "Read attribute: FullDuplex" - PICS: DGETH.C.A0001 - wait: "readAttribute" - attribute: "FullDuplex" - - - label: "Read attribute: PacketRxCount" - PICS: DGETH.C.A0002 - wait: "readAttribute" - attribute: "PacketRxCount" - - - label: "Read attribute: PacketTxCount" - PICS: DGETH.C.A0003 - wait: "readAttribute" - attribute: "PacketTxCount" - - - label: "Read attribute: TxErrCount" - PICS: DGETH.C.A0004 - wait: "readAttribute" - attribute: "TxErrCount" - - - label: "Read attribute: CollisionCount" - PICS: DGETH.C.A0005 - wait: "readAttribute" - attribute: "CollisionCount" - - - label: "Read attribute: OverrunCount" - PICS: DGETH.C.A0006 - wait: "readAttribute" - attribute: "OverrunCount" - - - label: "Read attribute: CarrierDetect" - PICS: DGETH.C.A0007 - wait: "readAttribute" - attribute: "CarrierDetect" - - - label: "Read attribute: TimeSinceReset" - PICS: DGETH.C.A0008 - wait: "readAttribute" - attribute: "TimeSinceReset" diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml deleted file mode 100644 index 4d9de778ecbee0..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml +++ /dev/null @@ -1,864 +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: 88.3.1. [TC-DGGEN-3.1] Attributes [DUT as Client] - -PICS: - - DGGEN.C - -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: "Step 1: Commission TH to DUT" - verification: | - execute the below mentioned command to put TH into a commissionable state in RPI platform, Pls use equivalent command on the respective platform - - step-1: create a file using touch command , something like touch mytest.txt - step-2: chmod 777 mytest.txt - step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt --trace_decode 1 - - - - Once TH reach the commissionable state pls send below mentioned command on DUT in RPI platform. Pls use equivalent command on the respective platform - ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1 - Verify the commissioning completed with success on TH(chip-tool) from DUT - [1650455358.501816][4366:4371] CHIP:TOO: Device commissioning completed with success - disabled: true - - - label: "Step 2: DUT reads NetworkInterfaces structure attribute from TH." - PICS: DGGEN.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 generaldiagnostics read network-interfaces 1 0 - - On TH(all-clusters-app), Verify that The NetworkInterfaces attribute SHALL be a list of NetworkInterface structs, i.e The read data type( NetworkInterface struct) must match the value listed below - • Name(interface name) - • IsOperational (indicates the node is operational in the fabric) - • OffPremiseServicesReachableIPv4(Ability to reach off-premise services it uses by utilizing IPv4, if not NULL) - • OffPremiseServicesReachableIPv6(Ability to reach off-premise services it uses by utilizing IPv6, if not NULL) - • HardwareAddress(MAC-layer address for a 802.3 or IEEE 802.11-2020 network interface, or 802.15.4) - • IPv4Addresses and IPv6Addresses (a list of the unicast IPv6 addresses that are GUA and ULA) - • Type(Interface types). - - Below is the example log which is observed in the RPI platform : - - 06e45f010f19ff36051004c0a800641836061010fe80000000000000e65f01fffe0f19ff1824070218152c00026c6f290134023403300406000000000000360510047f000001183606101000000000000000000000000000000001182407001818181818290424ff0118 - [1686306559.824697][57013:57013] CHIP:DMG: } - [1686306559.824743][57013:57013] CHIP:DMG: - [1686306559.825340][57013:57013] CHIP:DMG: ReportDataMessage = - [1686306559.825522][57013:57013] CHIP:DMG: { - [1686306559.825576][57013:57013] CHIP:DMG: AttributeReportIBs = - [1686306559.825825][57013:57013] CHIP:DMG: [ - [1686306559.825887][57013:57013] CHIP:DMG: AttributeReportIB = - [1686306559.826121][57013:57013] CHIP:DMG: { - [1686306559.826183][57013:57013] CHIP:DMG: AttributeDataIB = - [1686306559.826249][57013:57013] CHIP:DMG: { - [1686306559.826324][57013:57013] CHIP:DMG: DataVersion = 0x280892f3, - [1686306559.826397][57013:57013] CHIP:DMG: AttributePathIB = - [1686306559.826472][57013:57013] CHIP:DMG: { - [1686306559.826549][57013:57013] CHIP:DMG: Endpoint = 0x0, - [1686306559.826631][57013:57013] CHIP:DMG: Cluster = 0x33, - [1686306559.826711][57013:57013] CHIP:DMG: Attribute = 0x0000_0000, - [1686306559.826788][57013:57013] CHIP:DMG: } - [1686306559.826867][57013:57013] CHIP:DMG: - [1686306559.826943][57013:57013] CHIP:DMG: Data = [ - [1686306559.827019][57013:57013] CHIP:DMG: - [1686306559.827100][57013:57013] CHIP:DMG: { - [1686306559.827190][57013:57013] CHIP:DMG: 0x0 = "veth272794b" (11 chars), - [1686306559.827279][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.827366][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.827452][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.827537][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.827623][57013:57013] CHIP:DMG: 0xa2, 0x2a, 0xce, 0x32, 0x00, 0x85, - [1686306559.827721][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.827804][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.827885][57013:57013] CHIP:DMG: - [1686306559.827973][57013:57013] CHIP:DMG: ], - [1686306559.828056][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.828141][57013:57013] CHIP:DMG: [ - [1686306559.828258][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x2a, 0xce, 0xff, 0xfe, 0x32, 0x00, 0x85, - [1686306559.828360][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.828451][57013:57013] CHIP:DMG: ], - [1686306559.828537][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.828622][57013:57013] CHIP:DMG: }, - [1686306559.828702][57013:57013] CHIP:DMG: { - [1686306559.828786][57013:57013] CHIP:DMG: 0x0 = "vethcfd3c36" (11 chars), - [1686306559.828875][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.828960][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.829041][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.829124][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.829209][57013:57013] CHIP:DMG: 0x2a, 0x59, 0xb8, 0x51, 0x27, 0xa9, - [1686306559.829303][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.829386][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.829467][57013:57013] CHIP:DMG: - [1686306559.829559][57013:57013] CHIP:DMG: ], - [1686306559.829642][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.829747][57013:57013] CHIP:DMG: [ - [1686306559.829856][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x59, 0xb8, 0xff, 0xfe, 0x51, 0x27, 0xa9, - [1686306559.829959][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.830047][57013:57013] CHIP:DMG: ], - [1686306559.830133][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.830217][57013:57013] CHIP:DMG: }, - [1686306559.830297][57013:57013] CHIP:DMG: { - [1686306559.830380][57013:57013] CHIP:DMG: 0x0 = "veth1237750" (11 chars), - [1686306559.830467][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.830554][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.830641][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.830724][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.830809][57013:57013] CHIP:DMG: 0x22, 0x0b, 0x8c, 0xe3, 0x7a, 0x60, - [1686306559.830902][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.830984][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.831066][57013:57013] CHIP:DMG: - [1686306559.831154][57013:57013] CHIP:DMG: ], - [1686306559.831236][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.831320][57013:57013] CHIP:DMG: [ - [1686306559.831430][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0b, 0x8c, 0xff, 0xfe, 0xe3, 0x7a, 0x60, - [1686306559.831532][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.831615][57013:57013] CHIP:DMG: ], - [1686306559.831701][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.831785][57013:57013] CHIP:DMG: }, - [1686306559.831865][57013:57013] CHIP:DMG: { - [1686306559.831949][57013:57013] CHIP:DMG: 0x0 = "veth9ebd7bf" (11 chars), - [1686306559.832037][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.832122][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.832208][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.832292][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.832378][57013:57013] CHIP:DMG: 0x26, 0xa7, 0x64, 0xaf, 0x5f, 0xfb, - [1686306559.832479][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.832562][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.832644][57013:57013] CHIP:DMG: - [1686306559.832733][57013:57013] CHIP:DMG: ], - [1686306559.832816][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.832900][57013:57013] CHIP:DMG: [ - [1686306559.833008][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xa7, 0x64, 0xff, 0xfe, 0xaf, 0x5f, 0xfb, - [1686306559.833109][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.833198][57013:57013] CHIP:DMG: ], - [1686306559.833284][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.833367][57013:57013] CHIP:DMG: }, - [1686306559.833463][57013:57013] CHIP:DMG: { - [1686306559.833577][57013:57013] CHIP:DMG: 0x0 = "veth82c835f" (11 chars), - [1686306559.833673][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.834130][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.834229][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.834315][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.834399][57013:57013] CHIP:DMG: 0xf6, 0x3b, 0x4e, 0x45, 0xb5, 0xea, - [1686306559.834498][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.834583][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.834879][57013:57013] CHIP:DMG: - [1686306559.834980][57013:57013] CHIP:DMG: ], - [1686306559.835064][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.835148][57013:57013] CHIP:DMG: [ - [1686306559.835256][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x3b, 0x4e, 0xff, 0xfe, 0x45, 0xb5, 0xea, - [1686306559.835540][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.835638][57013:57013] CHIP:DMG: ], - [1686306559.835726][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.835813][57013:57013] CHIP:DMG: }, - [1686306559.835894][57013:57013] CHIP:DMG: { - [1686306559.835980][57013:57013] CHIP:DMG: 0x0 = "docker0" (7 chars), - [1686306559.836068][57013:57013] CHIP:DMG: 0x1 = false, - [1686306559.836154][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.836240][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.836323][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.836410][57013:57013] CHIP:DMG: 0x02, 0x42, 0x83, 0xd0, 0x85, 0xc7, - [1686306559.836515][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.836598][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.836683][57013:57013] CHIP:DMG: [ - [1686306559.836780][57013:57013] CHIP:DMG: 0xac, 0x11, 0x00, 0x01, - [1686306559.836880][57013:57013] CHIP:DMG: ] (4 bytes) - [1686306559.836974][57013:57013] CHIP:DMG: ], - [1686306559.837057][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.837141][57013:57013] CHIP:DMG: [ - [1686306559.837243][57013:57013] CHIP:DMG: - [1686306559.837348][57013:57013] CHIP:DMG: ] (0 bytes) - [1686306559.837438][57013:57013] CHIP:DMG: ], - [1686306559.837523][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.837609][57013:57013] CHIP:DMG: }, - [1686306559.837727][57013:57013] CHIP:DMG: { - [1686306559.837818][57013:57013] CHIP:DMG: 0x0 = "br-78aec9e78929" (15 chars), - [1686306559.837908][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.837994][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.838080][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.838164][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.838250][57013:57013] CHIP:DMG: 0x02, 0x42, 0xfc, 0xcb, 0x3f, 0xc9, - [1686306559.838339][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.838422][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.838508][57013:57013] CHIP:DMG: [ - [1686306559.838605][57013:57013] CHIP:DMG: 0xac, 0x13, 0x00, 0x01, - [1686306559.838699][57013:57013] CHIP:DMG: ] (4 bytes) - [1686306559.838794][57013:57013] CHIP:DMG: ], - [1686306559.838871][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.838956][57013:57013] CHIP:DMG: [ - [1686306559.839055][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfc, 0xff, 0xfe, 0xcb, 0x3f, 0xc9, - [1686306559.839159][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.839254][57013:57013] CHIP:DMG: ], - [1686306559.839342][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.839426][57013:57013] CHIP:DMG: }, - [1686306559.839507][57013:57013] CHIP:DMG: { - [1686306559.839591][57013:57013] CHIP:DMG: 0x0 = "br-33eb65c97608" (15 chars), - [1686306559.839678][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.839759][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.839845][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.839923][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.840007][57013:57013] CHIP:DMG: 0x02, 0x42, 0x25, 0x3e, 0x90, 0xfe, - [1686306559.840097][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.840179][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.840263][57013:57013] CHIP:DMG: [ - [1686306559.840361][57013:57013] CHIP:DMG: 0xac, 0x12, 0x00, 0x01, - [1686306559.840455][57013:57013] CHIP:DMG: ] (4 bytes) - [1686306559.840546][57013:57013] CHIP:DMG: ], - [1686306559.840628][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.840713][57013:57013] CHIP:DMG: [ - [1686306559.840817][57013:57013] CHIP:DMG: 0xfd, 0x00, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - [1686306559.840922][57013:57013] CHIP:DMG: ] (16 bytes)[ - [1686306559.841023][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x25, 0xff, 0xfe, 0x3e, 0x90, 0xfe, - [1686306559.841126][57013:57013] CHIP:DMG: ] (16 bytes)[ - [1686306559.841234][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - [1686306559.841337][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.841432][57013:57013] CHIP:DMG: ], - [1686306559.841519][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.841604][57013:57013] CHIP:DMG: }, - [1686306559.841684][57013:57013] CHIP:DMG: { - [1686306559.841811][57013:57013] CHIP:DMG: 0x0 = "wlan0" (5 chars), - [1686306559.841900][57013:57013] CHIP:DMG: 0x1 = false, - [1686306559.841985][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.842072][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.842155][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.842241][57013:57013] CHIP:DMG: 0xe4, 0x5f, 0x01, 0x0f, 0x1a, 0x01, - [1686306559.842327][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.842408][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.842490][57013:57013] CHIP:DMG: - [1686306559.842579][57013:57013] CHIP:DMG: ], - [1686306559.842662][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.842743][57013:57013] CHIP:DMG: - [1686306559.842834][57013:57013] CHIP:DMG: ], - [1686306559.842922][57013:57013] CHIP:DMG: 0x7 = 1, - [1686306559.843006][57013:57013] CHIP:DMG: }, - [1686306559.843088][57013:57013] CHIP:DMG: { - [1686306559.843171][57013:57013] CHIP:DMG: 0x0 = "eth0" (4 chars), - [1686306559.843259][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.843346][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.843431][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.843516][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.843602][57013:57013] CHIP:DMG: 0xe4, 0x5f, 0x01, 0x0f, 0x19, 0xff, - [1686306559.843698][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.843775][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.843860][57013:57013] CHIP:DMG: [ - [1686306559.843950][57013:57013] CHIP:DMG: 0xc0, 0xa8, 0x00, 0x64, - [1686306559.844050][57013:57013] CHIP:DMG: ] (4 bytes) - [1686306559.844133][57013:57013] CHIP:DMG: ], - [1686306559.844215][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.844299][57013:57013] CHIP:DMG: [ - [1686306559.844407][57013:57013] CHIP:DMG: 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x5f, 0x01, 0xff, 0xfe, 0x0f, 0x19, 0xff, - [1686306559.844513][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.844603][57013:57013] CHIP:DMG: ], - [1686306559.844690][57013:57013] CHIP:DMG: 0x7 = 2, - [1686306559.844774][57013:57013] CHIP:DMG: }, - [1686306559.844854][57013:57013] CHIP:DMG: { - [1686306559.844938][57013:57013] CHIP:DMG: 0x0 = "lo" (2 chars), - [1686306559.845025][57013:57013] CHIP:DMG: 0x1 = true, - [1686306559.845112][57013:57013] CHIP:DMG: 0x2 = NULL - [1686306559.845197][57013:57013] CHIP:DMG: 0x3 = NULL - [1686306559.845281][57013:57013] CHIP:DMG: 0x4 = [ - [1686306559.845367][57013:57013] CHIP:DMG: 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - [1686306559.845463][57013:57013] CHIP:DMG: ] (6 bytes) - [1686306559.845546][57013:57013] CHIP:DMG: 0x5 = [ - [1686306559.845632][57013:57013] CHIP:DMG: [ - [1686306559.845753][57013:57013] CHIP:DMG: 0x7f, 0x00, 0x00, 0x01, - [1686306559.845856][57013:57013] CHIP:DMG: ] (4 bytes) - [1686306559.845948][57013:57013] CHIP:DMG: ], - [1686306559.846031][57013:57013] CHIP:DMG: 0x6 = [ - [1686306559.846116][57013:57013] CHIP:DMG: [ - [1686306559.846226][57013:57013] CHIP:DMG: 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - [1686306559.846331][57013:57013] CHIP:DMG: ] (16 bytes) - [1686306559.846419][57013:57013] CHIP:DMG: ], - [1686306559.846504][57013:57013] CHIP:DMG: 0x7 = 0, - [1686306559.846587][57013:57013] CHIP:DMG: }, - [1686306559.846667][57013:57013] CHIP:DMG: ], - [1686306559.846737][57013:57013] CHIP:DMG: }, - [1686306559.846960][57013:57013] CHIP:DMG: - [1686306559.847020][57013:57013] CHIP:DMG: }, - [1686306559.847234][57013:57013] CHIP:DMG: - [1686306559.847290][57013:57013] CHIP:DMG: ], - [1686306559.847502][57013:57013] CHIP:DMG: - [1686306559.847560][57013:57013] CHIP:DMG: SuppressResponse = true, - [1686306559.847619][57013:57013] CHIP:DMG: InteractionModelRevision = 1 - [1686306559.847674][57013:57013] CHIP:DMG: } - [1686306559.847727][57013:57013] CHIP:DMG: - [1686306559.848154][57013:57013] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686306559.848223][57013:57013] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - disabled: true - - - label: - "Step 3: DUT reads a RebootCount attribute value from TH. Then a TH - (node) gets rebooted more than 2 times." - PICS: DGGEN.C.A0001 - verification: | - ./chip-tool generaldiagnostics read reboot-count 1 0 - On TH(all-clusters-app), Verify that RebootCount attribute data type must be UINT16 - Below is the example log which is observed in the RPI platform : - - [1686307500.023849][57061:57061] CHIP:DMG: - [1686307500.023993][57061:57061] CHIP:DMG: ReportDataMessage = - [1686307500.024054][57061:57061] CHIP:DMG: { - [1686307500.024103][57061:57061] CHIP:DMG: AttributeReportIBs = - [1686307500.024175][57061:57061] CHIP:DMG: [ - [1686307500.024233][57061:57061] CHIP:DMG: AttributeReportIB = - [1686307500.024308][57061:57061] CHIP:DMG: { - [1686307500.024370][57061:57061] CHIP:DMG: AttributeDataIB = - [1686307500.024440][57061:57061] CHIP:DMG: { - [1686307500.024513][57061:57061] CHIP:DMG: DataVersion = 0x73550a54, - [1686307500.024586][57061:57061] CHIP:DMG: AttributePathIB = - [1686307500.024661][57061:57061] CHIP:DMG: { - [1686307500.024737][57061:57061] CHIP:DMG: Endpoint = 0x0, - [1686307500.024819][57061:57061] CHIP:DMG: Cluster = 0x33, - [1686307500.024899][57061:57061] CHIP:DMG: Attribute = 0x0000_0001, - [1686307500.024974][57061:57061] CHIP:DMG: } - [1686307500.025050][57061:57061] CHIP:DMG: - [1686307500.025129][57061:57061] CHIP:DMG: Data = 1, - [1686307500.025200][57061:57061] CHIP:DMG: }, - [1686307500.025279][57061:57061] CHIP:DMG: - [1686307500.025340][57061:57061] CHIP:DMG: }, - [1686307500.025411][57061:57061] CHIP:DMG: - [1686307500.025467][57061:57061] CHIP:DMG: ], - [1686307500.025539][57061:57061] CHIP:DMG: - [1686307500.025598][57061:57061] CHIP:DMG: SuppressResponse = true, - [1686307500.025658][57061:57061] CHIP:DMG: InteractionModelRevision = 1 - [1686307500.025745][57061:57061] CHIP:DMG: } - [1686307500.025800][57061:57061] CHIP:DMG: - [1686307500.026135][57061:57061] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307500.026203][57061:57061] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686307500.026252][57061:57061] CHIP:DMG: IM RH moving to [AwaitingDestruction] - [1686307500.026313][57061:57061] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet - - Below is the example value which is observed in the RPI platform the value may be differ based on the dut implementation. - - To reboot the TH(all-clusters-app) more than 2 times please follow the mentioned procedure and it's Only applicable on raspi, Pls use equivalent command to reboot on the respective DUT - - Kill DUT and launch again, without commission follow the next steps - - ./chip-tool generaldiagnostics read reboot-count 1 0 - The reboot-count count should match with the number of rebooted times - [1686307529.634007][57073:57073] CHIP:DMG: - [1686307529.634151][57073:57073] CHIP:DMG: ReportDataMessage = - [1686307529.634212][57073:57073] CHIP:DMG: { - [1686307529.634260][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686307529.634332][57073:57073] CHIP:DMG: [ - [1686307529.634390][57073:57073] CHIP:DMG: AttributeReportIB = - [1686307529.634465][57073:57073] CHIP:DMG: { - [1686307529.634527][57073:57073] CHIP:DMG: AttributeDataIB = - [1686307529.634596][57073:57073] CHIP:DMG: { - [1686307529.634669][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686307529.634737][57073:57073] CHIP:DMG: AttributePathIB = - [1686307529.634811][57073:57073] CHIP:DMG: { - [1686307529.634883][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686307529.634965][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686307529.635046][57073:57073] CHIP:DMG: Attribute = 0x0000_0001, - [1686307529.635118][57073:57073] CHIP:DMG: } - [1686307529.635195][57073:57073] CHIP:DMG: - [1686307529.635273][57073:57073] CHIP:DMG: Data = 3, - [1686307529.635342][57073:57073] CHIP:DMG: }, - [1686307529.635419][57073:57073] CHIP:DMG: - [1686307529.635479][57073:57073] CHIP:DMG: }, - [1686307529.635549][57073:57073] CHIP:DMG: - [1686307529.635605][57073:57073] CHIP:DMG: ], - [1686307529.635674][57073:57073] CHIP:DMG: - [1686307529.635732][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686307529.635792][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307529.635846][57073:57073] CHIP:DMG: } - [1686307529.635896][57073:57073] CHIP:DMG: - [1686307529.636229][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307529.636296][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686307529.636346][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - [1686307529.636411][57073:57073] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet - disabled: true - - - label: - "Step 4: TH reboots and DUT reads a UpTime attribute value of TH since - some arbitrary start time of TH rebooting." - PICS: DGGEN.C.A0002 - verification: | - This is optional attribute implemented in RPI so its not compulsory to get the expected outcome - - ./chip-tool generaldiagnostics read up-time 1 0 - - On TH(all-clusters-app), Verify that UpTime attribute data type must be UINT64 and the time duratoin should be represented in seconds since TH (node) has been rebooted. - Below is the example log which is observed in the RPI platform : - - [1686307643.700814][57073:57073] CHIP:DMG: - [1686307643.700956][57073:57073] CHIP:DMG: ReportDataMessage = - [1686307643.701016][57073:57073] CHIP:DMG: { - [1686307643.701064][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686307643.701136][57073:57073] CHIP:DMG: [ - [1686307643.701193][57073:57073] CHIP:DMG: AttributeReportIB = - [1686307643.701267][57073:57073] CHIP:DMG: { - [1686307643.701329][57073:57073] CHIP:DMG: AttributeDataIB = - [1686307643.701397][57073:57073] CHIP:DMG: { - [1686307643.701467][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686307643.701538][57073:57073] CHIP:DMG: AttributePathIB = - [1686307643.701611][57073:57073] CHIP:DMG: { - [1686307643.701719][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686307643.701822][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686307643.701902][57073:57073] CHIP:DMG: Attribute = 0x0000_0002, - [1686307643.701979][57073:57073] CHIP:DMG: } - [1686307643.702056][57073:57073] CHIP:DMG: - [1686307643.702135][57073:57073] CHIP:DMG: Data = 118, - [1686307643.702205][57073:57073] CHIP:DMG: }, - [1686307643.702287][57073:57073] CHIP:DMG: - [1686307643.702346][57073:57073] CHIP:DMG: }, - [1686307643.702415][57073:57073] CHIP:DMG: - [1686307643.702470][57073:57073] CHIP:DMG: ], - [1686307643.702539][57073:57073] CHIP:DMG: - [1686307643.702596][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686307643.702654][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307643.702707][57073:57073] CHIP:DMG: } - [1686307643.702756][57073:57073] CHIP:DMG: - [1686307643.703091][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307643.703157][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686307643.703207][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - [1686307643.703273][57073:57073] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet - disabled: true - - - label: - "Step 5: DUT reads a TotalOperationalHours attribute value from TH." - PICS: DGGEN.C.A0003 - verification: | - This is optional attribute implemented in RPI so its not compulsory to get the expected outcome - - ./chip-tool generaldiagnostics read total-operational-hours 1 0 - - On TH(all-clusters-app), Verify that TotalOperationalHours attribute data type must be UINT32 and the value indicates the number of hours the node has been operational since TH (node) has been rebooted, - - Below is the example log which is observed in the RPI platform : - - [1686307701.675949][57073:57073] CHIP:DMG: - [1686307701.676094][57073:57073] CHIP:DMG: ReportDataMessage = - [1686307701.676154][57073:57073] CHIP:DMG: { - [1686307701.676202][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686307701.676273][57073:57073] CHIP:DMG: [ - [1686307701.676331][57073:57073] CHIP:DMG: AttributeReportIB = - [1686307701.676405][57073:57073] CHIP:DMG: { - [1686307701.676466][57073:57073] CHIP:DMG: AttributeDataIB = - [1686307701.676534][57073:57073] CHIP:DMG: { - [1686307701.676607][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686307701.676679][57073:57073] CHIP:DMG: AttributePathIB = - [1686307701.676749][57073:57073] CHIP:DMG: { - [1686307701.676825][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686307701.676906][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686307701.676986][57073:57073] CHIP:DMG: Attribute = 0x0000_0003, - [1686307701.677062][57073:57073] CHIP:DMG: } - [1686307701.677140][57073:57073] CHIP:DMG: - [1686307701.677219][57073:57073] CHIP:DMG: Data = 0, - [1686307701.677286][57073:57073] CHIP:DMG: }, - [1686307701.677363][57073:57073] CHIP:DMG: - [1686307701.677423][57073:57073] CHIP:DMG: }, - [1686307701.677493][57073:57073] CHIP:DMG: - [1686307701.677547][57073:57073] CHIP:DMG: ], - [1686307701.677616][57073:57073] CHIP:DMG: - [1686307701.677674][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686307701.677865][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307701.677920][57073:57073] CHIP:DMG: } - [1686307701.677970][57073:57073] CHIP:DMG: - [1686307701.678326][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307701.678393][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686307701.678445][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - disabled: true - - - label: - "Step 6: TH undergoes a reboot process. DUT reads a attribute value - from TH." - PICS: DGGEN.C.A0004 - verification: | - This is optional attribute implemented in RPI so its not compulsory to get the expected outcome - - ./chip-tool generaldiagnostics read boot-reason 1 0 - - On TH(all-clusters-app), Verify that bootreason attribute data type must match the value listed in Table 105 BootReason ENUM table in spec. - - Below is the example log which is observed in the RPI platform : - - [1686307743.025877][57073:57073] CHIP:DMG: ReportDataMessage = - [1686307743.025942][57073:57073] CHIP:DMG: { - [1686307743.025991][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686307743.026063][57073:57073] CHIP:DMG: [ - [1686307743.026121][57073:57073] CHIP:DMG: AttributeReportIB = - [1686307743.026197][57073:57073] CHIP:DMG: { - [1686307743.026259][57073:57073] CHIP:DMG: AttributeDataIB = - [1686307743.026329][57073:57073] CHIP:DMG: { - [1686307743.026402][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686307743.026475][57073:57073] CHIP:DMG: AttributePathIB = - [1686307743.026549][57073:57073] CHIP:DMG: { - [1686307743.026626][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686307743.026706][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686307743.026786][57073:57073] CHIP:DMG: Attribute = 0x0000_0004, - [1686307743.026863][57073:57073] CHIP:DMG: } - [1686307743.026942][57073:57073] CHIP:DMG: - [1686307743.027017][57073:57073] CHIP:DMG: Data = 0, - [1686307743.027088][57073:57073] CHIP:DMG: }, - [1686307743.027165][57073:57073] CHIP:DMG: - [1686307743.027226][57073:57073] CHIP:DMG: }, - [1686307743.027297][57073:57073] CHIP:DMG: - [1686307743.027353][57073:57073] CHIP:DMG: ], - [1686307743.027422][57073:57073] CHIP:DMG: - [1686307743.027481][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686307743.027617][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307743.027672][57073:57073] CHIP:DMG: } - [1686307743.027722][57073:57073] CHIP:DMG: - [1686307743.028065][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307743.028132][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686307743.028183][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - disabled: true - - - label: - "Step 7: DUT reads ActiveHardwareFaults attribute value from TH. - Subscription is possible option for this attribute." - PICS: DGGEN.C.A0005 - verification: | - This is optional attribute implemented in RPI so its not compulsory to get the expected outcome - - ./chip-tool generaldiagnostics read active-hardware-faults 1 0 - - On TH(all-clusters-app), Verify that ActiveHardwareFaults attribute the attribute response should be empty. But when a hardware fault occurs, the return attribute value must match the value listed in the HardwareFault ENUM table 11.11.6.1. - - Below is the example log which is observed in the RPI platform : - - [1686307781.603898][57073:57073] CHIP:DMG: ReportDataMessage = - [1686307781.603957][57073:57073] CHIP:DMG: { - [1686307781.604008][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686307781.604080][57073:57073] CHIP:DMG: [ - [1686307781.604138][57073:57073] CHIP:DMG: AttributeReportIB = - [1686307781.604214][57073:57073] CHIP:DMG: { - [1686307781.604276][57073:57073] CHIP:DMG: AttributeDataIB = - [1686307781.604344][57073:57073] CHIP:DMG: { - [1686307781.604417][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686307781.604490][57073:57073] CHIP:DMG: AttributePathIB = - [1686307781.604563][57073:57073] CHIP:DMG: { - [1686307781.604639][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686307781.604715][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686307781.604796][57073:57073] CHIP:DMG: Attribute = 0x0000_0005, - [1686307781.604872][57073:57073] CHIP:DMG: } - [1686307781.604950][57073:57073] CHIP:DMG: - [1686307781.605024][57073:57073] CHIP:DMG: Data = [ - [1686307781.605097][57073:57073] CHIP:DMG: - [1686307781.605177][57073:57073] CHIP:DMG: ], - [1686307781.605243][57073:57073] CHIP:DMG: }, - [1686307781.605320][57073:57073] CHIP:DMG: - [1686307781.605380][57073:57073] CHIP:DMG: }, - [1686307781.605451][57073:57073] CHIP:DMG: - [1686307781.605507][57073:57073] CHIP:DMG: ], - [1686307781.605577][57073:57073] CHIP:DMG: - [1686307781.605634][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686307781.605730][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307781.605790][57073:57073] CHIP:DMG: } - [1686307781.605840][57073:57073] CHIP:DMG: - [1686307781.606181][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307781.606249][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - Please perform subscription in Interactive mode - Here the command to enter interactive mode:-- ./chip-tool interactive start - - generaldiagnostics subscribe active-hardware-faults 3 100 1 0 - - On TH(all-clusters-app), Verify that ActiveHardwareFaults attribute the attribute response should be empty. But when a hardware fault occurs, the return attribute value must match the value listed in the HardwareFault ENUM table 11.11.6.1. This value may be subscribed. - - Below is the example log which is observed in the RPI platform : - - [1686307843.510650][57073:57073] CHIP:EM: Rxd Ack; Removing MessageCounter:23103056 from Retrans Table on exchange 24036r - [1686307843.510781][57073:57073] CHIP:DMG: StatusResponseMessage = - [1686307843.510845][57073:57073] CHIP:DMG: { - [1686307843.510922][57073:57073] CHIP:DMG: Status = 0x00 (SUCCESS), - [1686307843.510984][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307843.511038][57073:57073] CHIP:DMG: } - [1686307843.511116][57073:57073] CHIP:IM: Received status response, status is 0x00 (SUCCESS) - [1686307843.511216][57073:57073] CHIP:DMG: Refresh Subscribe Sync Timer with min 3 seconds and max 100 seconds - [1686307843.511770][57073:57073] CHIP:EM: <<< [E:24036r S:63322 M:23103057 (Ack:112203453)] (S) Msg TX to 1:000000000001B669 [A822] --- Type 0001:04 (IM:SubscribeResponse) - [1686307843.511859][57073:57073] CHIP:IN: (S) Sending msg 23103057 on secure session with LSID: 63322 - [1686307843.512510][57073:57073] CHIP:DMG: >> to UDP:[fe80::e9f6:2c08:2794:357d%eth0]:59421 | 23103057 | [Interaction Model (1) / Subscribe Response (0x04) / Session = 6810 / Exchange = 24036] - [1686307843.512597][57073:57073] CHIP:DMG: Header Flags = - [1686307843.512648][57073:57073] CHIP:DMG: { - [1686307843.512724][57073:57073] CHIP:DMG: Exchange (0x06) = - [1686307843.512775][57073:57073] CHIP:DMG: { - [1686307843.512826][57073:57073] CHIP:DMG: AckMsg = 112203453 - [1686307843.512898][57073:57073] CHIP:DMG: NeedsAck = true - [1686307843.512949][57073:57073] CHIP:DMG: } - [1686307843.513013][57073:57073] CHIP:DMG: } - [1686307843.513083][57073:57073] CHIP:DMG: - [1686307843.513145][57073:57073] CHIP:DMG: Encrypted Payload (48 bytes) = - [1686307843.513194][57073:57073] CHIP:DMG: { - [1686307843.513264][57073:57073] CHIP:DMG: data = 009a1a00518660011eb0619ea074318af4478c0426dc2e7e25cc783a1f14f0c1919836a77ef5e395bbdae42d05c30c31 - [1686307843.513316][57073:57073] CHIP:DMG: buffer_ptr = 187651312554688 - [1686307843.513363][57073:57073] CHIP:DMG: } - [1686307843.513408][57073:57073] CHIP:DMG: - [1686307843.513496][57073:57073] CHIP:DMG: Decrypted Payload (14 bytes) = - [1686307843.513548][57073:57073] CHIP:DMG: { - [1686307843.513595][57073:57073] CHIP:DMG: data = 15260084a6fd9624026424ff0118 - [1686307843.513667][57073:57073] CHIP:DMG: } - [1686307843.513826][57073:57073] CHIP:DMG: - [1686307843.513939][57073:57073] CHIP:DMG: SubscribeResponseMessage = - [1686307843.513998][57073:57073] CHIP:DMG: { - [1686307843.514073][57073:57073] CHIP:DMG: SubscriptionId = 0x96fda684, - [1686307843.514136][57073:57073] CHIP:DMG: MaxInterval = 0x64, - [1686307843.514196][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307843.514273][57073:57073] CHIP:DMG: } - [1686307843.514323][57073:57073] CHIP:DMG: - [1686307843.514684][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307843.514768][57073:57073] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true - - - label: - "Step 8: DUT reads ActiveRadioFaults attribute value from TH. - Subscription is possible option for this attribute." - PICS: DGGEN.C.A0006 - verification: | - This is optional attribute implemented in RPI so its not compulsory to get the expected outcome - - ./chip-tool generaldiagnostics read active-radio-faults 1 0 - On TH(all-clusters-app), Verify that ActiveRadioFaults attribute response should be empty. But when a radio fault occurs, the return attribute value must match the value listed in the RadioFault ENUM table. 11.11.6.2. - Below is the example log which is observed in the RPI platform : - [1686308161.710734][57073:57073] CHIP:DMG: ReportDataMessage = - [1686308161.710792][57073:57073] CHIP:DMG: { - [1686308161.710840][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686308161.710912][57073:57073] CHIP:DMG: [ - [1686308161.710969][57073:57073] CHIP:DMG: AttributeReportIB = - [1686308161.711044][57073:57073] CHIP:DMG: { - [1686308161.711105][57073:57073] CHIP:DMG: AttributeDataIB = - [1686308161.711175][57073:57073] CHIP:DMG: { - [1686308161.711245][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686308161.711317][57073:57073] CHIP:DMG: AttributePathIB = - [1686308161.711392][57073:57073] CHIP:DMG: { - [1686308161.711466][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686308161.711546][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686308161.711626][57073:57073] CHIP:DMG: Attribute = 0x0000_0006, - [1686308161.711702][57073:57073] CHIP:DMG: } - [1686308161.711780][57073:57073] CHIP:DMG: - [1686308161.711854][57073:57073] CHIP:DMG: Data = [ - [1686308161.711928][57073:57073] CHIP:DMG: - [1686308161.712008][57073:57073] CHIP:DMG: ], - [1686308161.712078][57073:57073] CHIP:DMG: }, - [1686308161.712161][57073:57073] CHIP:DMG: - [1686308161.712221][57073:57073] CHIP:DMG: }, - [1686308161.712292][57073:57073] CHIP:DMG: - [1686308161.712348][57073:57073] CHIP:DMG: ], - [1686308161.712418][57073:57073] CHIP:DMG: - [1686308161.712475][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686308161.712533][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686308161.712587][57073:57073] CHIP:DMG: } - [1686308161.712637][57073:57073] CHIP:DMG: - [1686308161.712974][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686308161.713043][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 1, RE has no more messages - [1686308161.713094][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - - - - Please perform subscription in Interactive mode - Here the command to enter interactive mode:-- ./chip-tool interactive start - - generaldiagnostics subscribe active-radio-faults 100 1000 1 0 - - On TH(all-clusters-app), Verify that ActiveRadioFaults attribute response should be empty. But when a radio fault occurs, the return attribute value must match the value listed in the RadioFault ENUM table. 11.11.6.2. . This value may be subscribed. - Below is the example log which is observed in the RPI platform : - - - [1686307919.469064][57073:57073] CHIP:DMG: StatusResponseMessage = - [1686307919.469149][57073:57073] CHIP:DMG: { - [1686307919.469207][57073:57073] CHIP:DMG: Status = 0x00 (SUCCESS), - [1686307919.469267][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307919.469344][57073:57073] CHIP:DMG: } - [1686307919.469400][57073:57073] CHIP:IM: Received status response, status is 0x00 (SUCCESS) - [1686307919.469519][57073:57073] CHIP:DMG: Refresh Subscribe Sync Timer with min 100 seconds and max 1000 seconds - [1686307919.470080][57073:57073] CHIP:EM: <<< [E:24037r S:63322 M:23103059 (Ack:112203456)] (S) Msg TX to 1:000000000001B669 [A822] --- Type 0001:04 (IM:SubscribeResponse) - [1686307919.470170][57073:57073] CHIP:IN: (S) Sending msg 23103059 on secure session with LSID: 63322 - [1686307919.470842][57073:57073] CHIP:DMG: >> to UDP:[fe80::e9f6:2c08:2794:357d%eth0]:59421 | 23103059 | [Interaction Model (1) / Subscribe Response (0x04) / Session = 6810 / Exchange = 24037] - [1686307919.470931][57073:57073] CHIP:DMG: Header Flags = - [1686307919.470983][57073:57073] CHIP:DMG: { - [1686307919.471061][57073:57073] CHIP:DMG: Exchange (0x06) = - [1686307919.471112][57073:57073] CHIP:DMG: { - [1686307919.471164][57073:57073] CHIP:DMG: AckMsg = 112203456 - [1686307919.471237][57073:57073] CHIP:DMG: NeedsAck = true - [1686307919.471288][57073:57073] CHIP:DMG: } - [1686307919.471352][57073:57073] CHIP:DMG: } - [1686307919.471420][57073:57073] CHIP:DMG: - [1686307919.471484][57073:57073] CHIP:DMG: Encrypted Payload (49 bytes) = - [1686307919.471534][57073:57073] CHIP:DMG: { - [1686307919.471604][57073:57073] CHIP:DMG: data = 009a1a0053866001e6272a390623bd75fd74354aab79de80781818aa40a6d57a63027f9adb46fa0c80dbcbea6e887e7814 - [1686307919.471658][57073:57073] CHIP:DMG: buffer_ptr = 187651312554688 - [1686307919.471704][57073:57073] CHIP:DMG: } - [1686307919.471750][57073:57073] CHIP:DMG: - [1686307919.471839][57073:57073] CHIP:DMG: Decrypted Payload (15 bytes) = - [1686307919.471891][57073:57073] CHIP:DMG: { - [1686307919.471938][57073:57073] CHIP:DMG: data = 1526009ab98a6b2502e80324ff0118 - [1686307919.472007][57073:57073] CHIP:DMG: } - [1686307919.472054][57073:57073] CHIP:DMG: - [1686307919.472164][57073:57073] CHIP:DMG: SubscribeResponseMessage = - [1686307919.472223][57073:57073] CHIP:DMG: { - [1686307919.472276][57073:57073] CHIP:DMG: SubscriptionId = 0x6b8ab99a, - [1686307919.472362][57073:57073] CHIP:DMG: MaxInterval = 0x3e8, - [1686307919.472422][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307919.472477][57073:57073] CHIP:DMG: } - [1686307919.472547][57073:57073] CHIP:DMG: - [1686307919.472904][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307919.472965][57073:57073] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true - - - label: - "Step 9: DUT reads ActiveNetworkFaults attribute value from TH. - Subscription is possible option for this attribute." - PICS: DGGEN.C.A0007 - verification: | - This is optional attribute implemented in RPI so its not compulsory to get the expected outcome - ./chip-tool generaldiagnostics read active-network-faults 1 0 - - On TH(all-clusters-app), Verify that ActiveNetworkFaults attribute value attribute response should be empty. But when a network fault occurs, the return attribute value must match the value listed in the NetworkFault ENUM table 11.11.6.3 - - Below is the example log which is observed in the RPI platform : - [1686308088.267488][57073:57073] CHIP:DMG: - [1686308088.267658][57073:57073] CHIP:DMG: ReportDataMessage = - [1686308088.267719][57073:57073] CHIP:DMG: { - [1686308088.267790][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686308088.267866][57073:57073] CHIP:DMG: [ - [1686308088.267923][57073:57073] CHIP:DMG: AttributeReportIB = - [1686308088.268026][57073:57073] CHIP:DMG: { - [1686308088.268088][57073:57073] CHIP:DMG: AttributeDataIB = - [1686308088.268179][57073:57073] CHIP:DMG: { - [1686308088.268254][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686308088.268345][57073:57073] CHIP:DMG: AttributePathIB = - [1686308088.268421][57073:57073] CHIP:DMG: { - [1686308088.268519][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686308088.268602][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686308088.268703][57073:57073] CHIP:DMG: Attribute = 0x0000_0007, - [1686308088.268781][57073:57073] CHIP:DMG: } - [1686308088.268881][57073:57073] CHIP:DMG: - [1686308088.268958][57073:57073] CHIP:DMG: Data = [ - [1686308088.269053][57073:57073] CHIP:DMG: - [1686308088.269136][57073:57073] CHIP:DMG: ], - [1686308088.269227][57073:57073] CHIP:DMG: }, - [1686308088.269307][57073:57073] CHIP:DMG: - [1686308088.269370][57073:57073] CHIP:DMG: }, - [1686308088.269464][57073:57073] CHIP:DMG: - [1686308088.269520][57073:57073] CHIP:DMG: ], - [1686308088.269618][57073:57073] CHIP:DMG: - [1686308088.269677][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686308088.269803][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686308088.269860][57073:57073] CHIP:DMG: } - [1686308088.269910][57073:57073] CHIP:DMG: - [1686308088.270319][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686308088.270385][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 1, RE has no more messages - [1686308088.270436][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - - - - Please perform subscription in Interactive mode - Here the command to enter interactive mode:-- ./chip-tool interactive start - - generaldiagnostics subscribe active-network-faults 100 1000 1 0 - - On TH(all-clusters-app), Verify that ActiveNetworkFaults attribute value attribute response should be empty. But when a network fault occurs, the return attribute value must match the value listed in the NetworkFault ENUM table 11.11.6.3. This value may be subscribed. - Below is the example log which is observed in the RPI platform : - - [1686307960.687673][57073:57073] CHIP:EM: Rxd Ack; Removing MessageCounter:30942835 from Retrans Table on exchange 24039r - [1686307960.687802][57073:57073] CHIP:DMG: StatusResponseMessage = - [1686307960.687864][57073:57073] CHIP:DMG: { - [1686307960.687942][57073:57073] CHIP:DMG: Status = 0x00 (SUCCESS), - [1686307960.688003][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307960.688057][57073:57073] CHIP:DMG: } - [1686307960.688136][57073:57073] CHIP:IM: Received status response, status is 0x00 (SUCCESS) - [1686307960.688230][57073:57073] CHIP:DMG: Refresh Subscribe Sync Timer with min 100 seconds and max 1000 seconds - [1686307960.688774][57073:57073] CHIP:EM: <<< [E:24039r S:63323 M:30942836 (Ack:186563629)] (S) Msg TX to 1:000000000001B669 [A822] --- Type 0001:04 (IM:SubscribeResponse) - [1686307960.688863][57073:57073] CHIP:IN: (S) Sending msg 30942836 on secure session with LSID: 63323 - [1686307960.689504][57073:57073] CHIP:DMG: >> to UDP:[fe80::e9f6:2c08:2794:357d%eth0]:59421 | 30942836 | [Interaction Model (1) / Subscribe Response (0x04) / Session = 6811 / Exchange = 24039] - [1686307960.689591][57073:57073] CHIP:DMG: Header Flags = - [1686307960.689643][57073:57073] CHIP:DMG: { - [1686307960.689755][57073:57073] CHIP:DMG: Exchange (0x06) = - [1686307960.689810][57073:57073] CHIP:DMG: { - [1686307960.689862][57073:57073] CHIP:DMG: AckMsg = 186563629 - [1686307960.689911][57073:57073] CHIP:DMG: NeedsAck = true - [1686307960.689958][57073:57073] CHIP:DMG: } - [1686307960.690048][57073:57073] CHIP:DMG: } - [1686307960.690100][57073:57073] CHIP:DMG: - [1686307960.690161][57073:57073] CHIP:DMG: Encrypted Payload (49 bytes) = - [1686307960.690232][57073:57073] CHIP:DMG: { - [1686307960.690283][57073:57073] CHIP:DMG: data = 009b1a007426d801508f052c4f353e1e4f7f65e371e88ed11df4630e03e488f1f4acbf93785d02417643644ac79541c2d0 - [1686307960.690333][57073:57073] CHIP:DMG: buffer_ptr = 187651312560480 - [1686307960.690379][57073:57073] CHIP:DMG: } - [1686307960.690446][57073:57073] CHIP:DMG: - [1686307960.690514][57073:57073] CHIP:DMG: Decrypted Payload (15 bytes) = - [1686307960.690565][57073:57073] CHIP:DMG: { - [1686307960.690640][57073:57073] CHIP:DMG: data = 152600031dfc822502e80324ff0118 - [1686307960.690688][57073:57073] CHIP:DMG: } - [1686307960.690733][57073:57073] CHIP:DMG: - [1686307960.690837][57073:57073] CHIP:DMG: SubscribeResponseMessage = - [1686307960.690897][57073:57073] CHIP:DMG: { - [1686307960.690950][57073:57073] CHIP:DMG: SubscriptionId = 0x82fc1d03, - [1686307960.691035][57073:57073] CHIP:DMG: MaxInterval = 0x3e8, - [1686307960.691094][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686307960.691168][57073:57073] CHIP:DMG: } - [1686307960.691221][57073:57073] CHIP:DMG: - [1686307960.691577][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686307960.691640][57073:57073] CHIP:DMG: IM RH moving to [GeneratingReports] - disabled: true - - - label: - "Step 10: TH reads TestEventTriggersEnabled attribute value. If this - value is set True, then a certain test mode will be performed (or - triggered) according to pre-provisioned client and server test mode." - PICS: DGGEN.C.A0008 - verification: | - ./chip-tool generaldiagnostics read test-event-triggers-enabled 1 0 - - On TH(all-clusters-app), Verify that TestEventTriggersEnabled attribute value should be data type bool - Below is the example log which is observed in the RPI platform : - - [1686308043.575660][57073:57073] CHIP:DMG: - [1686308043.575826][57073:57073] CHIP:DMG: ReportDataMessage = - [1686308043.575887][57073:57073] CHIP:DMG: { - [1686308043.575958][57073:57073] CHIP:DMG: AttributeReportIBs = - [1686308043.576032][57073:57073] CHIP:DMG: [ - [1686308043.576116][57073:57073] CHIP:DMG: AttributeReportIB = - [1686308043.576192][57073:57073] CHIP:DMG: { - [1686308043.576253][57073:57073] CHIP:DMG: AttributeDataIB = - [1686308043.576345][57073:57073] CHIP:DMG: { - [1686308043.576416][57073:57073] CHIP:DMG: DataVersion = 0xb1a9fc1e, - [1686308043.576501][57073:57073] CHIP:DMG: AttributePathIB = - [1686308043.576576][57073:57073] CHIP:DMG: { - [1686308043.576652][57073:57073] CHIP:DMG: Endpoint = 0x0, - [1686308043.576755][57073:57073] CHIP:DMG: Cluster = 0x33, - [1686308043.576837][57073:57073] CHIP:DMG: Attribute = 0x0000_0008, - [1686308043.576934][57073:57073] CHIP:DMG: } - [1686308043.577014][57073:57073] CHIP:DMG: - [1686308043.577114][57073:57073] CHIP:DMG: Data = false, - [1686308043.577188][57073:57073] CHIP:DMG: }, - [1686308043.577286][57073:57073] CHIP:DMG: - [1686308043.577348][57073:57073] CHIP:DMG: }, - [1686308043.577419][57073:57073] CHIP:DMG: - [1686308043.577495][57073:57073] CHIP:DMG: ], - [1686308043.577566][57073:57073] CHIP:DMG: - [1686308043.577645][57073:57073] CHIP:DMG: SuppressResponse = true, - [1686308043.577759][57073:57073] CHIP:DMG: InteractionModelRevision = 1 - [1686308043.577817][57073:57073] CHIP:DMG: } - [1686308043.577891][57073:57073] CHIP:DMG: - [1686308043.578276][57073:57073] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686308043.578344][57073:57073] CHIP:DMG: ReportsInFlight = 0 with readHandler 1, RE has no more messages - [1686308043.578395][57073:57073] CHIP:DMG: IM RH moving to [AwaitingDestruction] - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DGSW_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGSW_3_1_Simulated.yaml deleted file mode 100644 index e315cd95958a6f..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGSW_3_1_Simulated.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 44.3.1. [TC-DGSW-3.1] Attributes [DUT as Client] - -PICS: - - DGSW.C - -config: - nodeId: 0x12344321 - cluster: "Software Diagnostics" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: ThreadMetrics" - PICS: DGSW.C.A0000 - wait: "readAttribute" - attribute: "ThreadMetrics" - - - label: "Read attribute: CurrentHeapFree" - PICS: DGSW.C.A0001 - wait: "readAttribute" - attribute: "CurrentHeapFree" - - - label: "Read attribute: CurrentHeapUsed" - PICS: DGSW.C.A0002 - wait: "readAttribute" - attribute: "CurrentHeapUsed" - - - label: "Read attribute: CurrentHeapHighWatermark" - PICS: DGSW.C.A0003 - wait: "readAttribute" - attribute: "CurrentHeapHighWatermark" diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml deleted file mode 100644 index d2d4358b92fda1..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1_Simulated.yaml +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 50.3.1. [TC-DGTHREAD-3.1] Attributes [DUT- Client] - -PICS: - - DGTHREAD.C - -config: - nodeId: 0x12344321 - cluster: "Thread Network Diagnostics" - endpoint: 0 - -tests: - - label: "Wait for the device to be commissioned" - cluster: "DelayCommands" - command: "WaitForCommissioning" - - - label: "DUT reads Channel attribute value from TH" - wait: "readAttribute" - attribute: "Channel" - PICS: DGTHREAD.C.A0000 - - - label: "DUT reads RoutingRole attribute value from TH" - wait: "readAttribute" - attribute: "RoutingRole" - PICS: DGTHREAD.C.A0001 - - - label: "DUT reads NetworkName attribute value from TH" - wait: "readAttribute" - attribute: "NetworkName" - PICS: DGTHREAD.C.A0002 - - - label: "DUT reads PanId attribute value from TH" - wait: "readAttribute" - attribute: "PanId" - PICS: DGTHREAD.C.A0003 - - - label: "DUT reads ExtendedPanId attribute value from TH" - wait: "readAttribute" - attribute: "ExtendedPanId" - PICS: DGTHREAD.C.A0004 - - - label: "DUT reads MeshLocalPrefix attribute value from TH" - wait: "readAttribute" - attribute: "MeshLocalPrefix" - PICS: DGTHREAD.C.A0005 - - - label: "DUT reads OverrunCount attribute value from TH" - wait: "readAttribute" - attribute: "OverrunCount" - PICS: DGTHREAD.C.A0006 - - - label: "DUT reads NeighborTable attribute value from TH" - wait: "readAttribute" - attribute: "NeighborTable" - PICS: DGTHREAD.C.A0007 - - - label: "DUT reads RouteTable attribute value from TH" - wait: "readAttribute" - attribute: "RouteTable" - PICS: DGTHREAD.C.A0008 - - - label: "DUT reads PartitionId attribute value from TH" - wait: "readAttribute" - attribute: "PartitionId" - PICS: DGTHREAD.C.A0009 - - - label: "DUT reads Weighting attribute value from TH" - wait: "readAttribute" - attribute: "Weighting" - PICS: DGTHREAD.C.A000a - - - label: "DUT reads DataVersion attribute value from TH" - wait: "readAttribute" - attribute: "DataVersion" - PICS: DGTHREAD.C.A000b - - - label: "DUT reads StableDataVersion attribute value from TH" - wait: "readAttribute" - attribute: "StableDataVersion" - PICS: DGTHREAD.C.A000c - - - label: "DUT reads LeaderRouterId attribute value from TH" - wait: "readAttribute" - attribute: "LeaderRouterId" - PICS: DGTHREAD.C.A000d - - - label: "DUT reads DetachedRoleCount attribute value from TH" - wait: "readAttribute" - attribute: "DetachedRoleCount" - PICS: DGTHREAD.C.A000e - - - label: "DUT reads ChildRoleCount attribute value from TH" - wait: "readAttribute" - attribute: "ChildRoleCount" - PICS: DGTHREAD.C.A000f - - - label: "DUT reads RouterRoleCount attribute value from TH" - wait: "readAttribute" - attribute: "RouterRoleCount" - PICS: DGTHREAD.C.A0010 - - - label: "DUT reads LeaderRoleCount attribute value from TH" - wait: "readAttribute" - attribute: "LeaderRoleCount" - PICS: DGTHREAD.C.A0011 - - - label: "DUT reads AttachAttemptCount attribute value from TH" - wait: "readAttribute" - attribute: "AttachAttemptCount" - PICS: DGTHREAD.C.A0012 - - - label: "DUT reads PartitionIdChangeCount attribute value from TH" - wait: "readAttribute" - attribute: "PartitionIdChangeCount" - PICS: DGTHREAD.C.A0013 - - - label: - "DUT reads BetterPartitionAttachAttemptCount attribute value from TH" - wait: "readAttribute" - attribute: "BetterPartitionAttachAttemptCount" - PICS: DGTHREAD.C.A0014 - - - label: "DUT reads ParentChangeCount attribute value from TH" - wait: "readAttribute" - attribute: "ParentChangeCount" - PICS: DGTHREAD.C.A0015 - - - label: "DUT reads ActiveTimestamp attribute value from TH" - wait: "readAttribute" - attribute: "ActiveTimestamp" - PICS: DGTHREAD.C.A0038 - - - label: "DUT reads PendingTimestamp attribute value from TH" - wait: "readAttribute" - attribute: "PendingTimestamp" - PICS: DGTHREAD.C.A0039 - - - label: "DUT reads Delay attribute value from TH" - wait: "readAttribute" - attribute: "Delay" - PICS: DGTHREAD.C.A003a - - - label: "DUT reads SecurityPolicy attribute value from TH" - wait: "readAttribute" - attribute: "SecurityPolicy" - PICS: DGTHREAD.C.A003b - - - label: "DUT reads ChannelPage0Mask attribute value from TH" - wait: "readAttribute" - attribute: "ChannelPage0Mask" - PICS: DGTHREAD.C.A003c - - - label: "DUT reads OperationalDatasetComponents attribute value from TH" - wait: "readAttribute" - attribute: "OperationalDatasetComponents" - PICS: DGTHREAD.C.A003d - - - label: "DUT reads ActiveNetworkFaults attribute value from TH" - wait: "readAttribute" - attribute: "ActiveNetworkFaultsList" - PICS: DGTHREAD.C.A003e diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml deleted file mode 100644 index 992eaa3da0bd23..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2_Simulated.yaml +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 3.3.2. [TC-DGTHREAD-3.2] Command Generated {DUT_Client}] - -PICS: - - DGTHREAD.C - -config: - nodeId: 0x12344321 - cluster: "Thread Network Diagnostics" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads TxTotalCount attribute value from TH" - wait: "readAttribute" - attribute: "TxTotalCount" - PICS: DGTHREAD.C.A0016 - - - label: "DUT reads TxUnicastCount attribute value from TH" - wait: "readAttribute" - attribute: "TxUnicastCount" - PICS: DGTHREAD.C.A0017 - - - label: "DUT reads TxBroadcastCount attribute value from TH" - wait: "readAttribute" - attribute: "TxBroadcastCount" - PICS: DGTHREAD.C.A0018 - - - label: "DUT reads TxAckRequestedCount attribute value from TH" - wait: "readAttribute" - attribute: "TxAckRequestedCount" - PICS: DGTHREAD.C.A0019 - - - label: "DUT reads TxAckedCount attribute value from TH" - wait: "readAttribute" - attribute: "TxAckedCount" - PICS: DGTHREAD.C.A001a - - - label: "DUT reads TxNoAckRequestedCount attribute value from TH" - wait: "readAttribute" - attribute: "TxNoAckRequestedCount" - PICS: DGTHREAD.C.A001b - - - label: "DUT reads TxDataCount attribute value from TH" - wait: "readAttribute" - attribute: "TxDataCount" - PICS: DGTHREAD.C.A001c - - - label: "DUT reads TxDataPollCount attribute value from TH" - wait: "readAttribute" - attribute: "TxDataPollCount" - PICS: DGTHREAD.C.A001d - - - label: "DUT reads TxBeaconCount attribute value from TH" - wait: "readAttribute" - attribute: "TxBeaconCount" - PICS: DGTHREAD.C.A001e - - - label: "DUT reads TxBeaconRequestCount attribute value from TH" - wait: "readAttribute" - attribute: "TxBeaconRequestCount" - PICS: DGTHREAD.C.A001f - - - label: "DUT reads TxOtherCount attribute value from TH" - wait: "readAttribute" - attribute: "TxOtherCount" - PICS: DGTHREAD.C.A0020 - - - label: "DUT reads TxRetryCount attribute value from TH" - wait: "readAttribute" - attribute: "TxRetryCount" - PICS: DGTHREAD.C.A0021 - - - label: "DUT reads TxDirectMaxRetryExpiryCount attribute value from TH" - wait: "readAttribute" - attribute: "TxDirectMaxRetryExpiryCount" - PICS: DGTHREAD.C.A0022 - - - label: "DUT reads TxIndirectMaxRetryExpiryCount attribute value from TH" - wait: "readAttribute" - attribute: "TxIndirectMaxRetryExpiryCount" - PICS: DGTHREAD.C.A0023 - - - label: "DUT reads TxErrCcaCount attribute value from TH" - wait: "readAttribute" - attribute: "TxErrCcaCount" - PICS: DGTHREAD.C.A0024 - - - label: "DUT reads TxErrAbortCount attribute value from TH" - wait: "readAttribute" - attribute: "TxErrAbortCount" - PICS: DGTHREAD.C.A0025 - - - label: "DUT reads TxErrBusyChannelCount attribute value from TH" - wait: "readAttribute" - attribute: "TxErrBusyChannelCount" - PICS: DGTHREAD.C.A0026 diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3_Simulated.yaml deleted file mode 100644 index 8a343dce13b85b..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3_Simulated.yaml +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 3.3.2. [TC-DGTHREAD-3.3] Command Generated {DUT_Client}] - -PICS: - - DGTHREAD.C - -config: - nodeId: 0x12344321 - cluster: "Thread Network Diagnostics" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads RxTotalCount attribute value from TH" - wait: "readAttribute" - attribute: "RxTotalCount" - PICS: DGTHREAD.C.A0027 - - - label: "DUT reads RxUnicastCount attribute value from TH" - wait: "readAttribute" - attribute: "RxUnicastCount" - PICS: DGTHREAD.C.A0028 - - - label: "DUT reads RxBroadcastCount attribute value from TH" - wait: "readAttribute" - attribute: "RxBroadcastCount" - PICS: DGTHREAD.C.A0029 - - - label: "DUT reads RxDataCount attribute value from TH" - wait: "readAttribute" - attribute: "RxDataCount" - PICS: DGTHREAD.C.A002a - - - label: "DUT reads RxDataPollCount attribute value from TH" - wait: "readAttribute" - attribute: "RxDataPollCount" - PICS: DGTHREAD.C.A002b - - - label: "DUT reads RxBeaconCount attribute value from TH" - wait: "readAttribute" - attribute: "RxBeaconCount" - PICS: DGTHREAD.C.A002c - - - label: "DUT reads RxBeaconRequestCount attribute value from TH" - wait: "readAttribute" - attribute: "RxBeaconRequestCount" - PICS: DGTHREAD.C.A002d - - - label: "DUT reads RxOtherCount attribute value from TH" - wait: "readAttribute" - attribute: "RxOtherCount" - PICS: DGTHREAD.C.A002e - - - label: "DUT reads RxAddressFilteredCount attribute value from TH" - wait: "readAttribute" - attribute: "RxAddressFilteredCount" - PICS: DGTHREAD.C.A002f - - - label: "DUT reads RxDestAddrFilteredCount attribute value from TH" - wait: "readAttribute" - attribute: "RxDestAddrFilteredCount" - PICS: DGTHREAD.C.A0030 - - - label: "DUT reads RxDuplicatedCount attribute value from TH" - wait: "readAttribute" - attribute: "RxDuplicatedCount" - PICS: DGTHREAD.C.A0031 - - - label: "DUT reads RxErrNoFrameCount attribute value from TH" - wait: "readAttribute" - attribute: "RxErrNoFrameCount" - PICS: DGTHREAD.C.A0032 - - - label: "DUT reads RxErrUnknownNeighborCount attribute value from TH" - wait: "readAttribute" - attribute: "RxErrUnknownNeighborCount" - PICS: DGTHREAD.C.A0033 - - - label: "DUT reads RxErrInvalidSrcAddrCount attribute value from TH" - wait: "readAttribute" - attribute: "RxErrInvalidSrcAddrCount" - PICS: DGTHREAD.C.A0034 - - - label: "DUT reads RxErrSecCount attribute value from TH" - wait: "readAttribute" - attribute: "RxErrSecCount" - PICS: DGTHREAD.C.A0035 - - - label: "DUT reads RxErrFcsCount attribute value from TH" - wait: "readAttribute" - attribute: "RxErrFcsCount" - PICS: DGTHREAD.C.A0036 - - - label: "DUT reads RxErrOtherCount attribute value from TH" - wait: "readAttribute" - attribute: "RxErrOtherCount" - PICS: DGTHREAD.C.A0037 diff --git a/src/app/tests/suites/certification/Test_TC_DGWIFI_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DGWIFI_3_1_Simulated.yaml deleted file mode 100644 index 6205550ad8abbc..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DGWIFI_3_1_Simulated.yaml +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 53.3.1. [TC-DGWIFI-3.1] Attributes [DUT as Client] - -PICS: - - DGWIFI.C.A - - DGWIFI.C - -config: - nodeId: 0x12344321 - cluster: "WiFi Network Diagnostics" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: BSSID" - PICS: DGWIFI.C.A0000 - wait: "readAttribute" - attribute: "BSSID" - - - label: "Read attribute: SecurityType" - PICS: DGWIFI.C.A0001 - wait: "readAttribute" - attribute: "SecurityType" - - - label: "Read attribute: WiFiVersion" - PICS: DGWIFI.C.A0002 - wait: "readAttribute" - attribute: "WiFiVersion" - - - label: "Read attribute: ChannelNumber" - PICS: DGWIFI.C.A0003 - wait: "readAttribute" - attribute: "ChannelNumber" - - - label: "Read attribute: RSSI" - PICS: DGWIFI.C.A0004 - wait: "readAttribute" - attribute: "RSSI" - - - label: "Read attribute: BeaconLostCount" - PICS: DGWIFI.C.A0005 - wait: "readAttribute" - attribute: "BeaconLostCount" - - - label: "Read attribute: BeaconRxCount" - PICS: DGWIFI.C.A0006 - wait: "readAttribute" - attribute: "BeaconRxCount" - - - label: "Read attribute: PacketMulticastRxCount" - PICS: DGWIFI.C.A0007 - wait: "readAttribute" - attribute: "PacketMulticastRxCount" - - - label: "Read attribute: PacketMulticastTxCount" - PICS: DGWIFI.C.A0008 - wait: "readAttribute" - attribute: "PacketMulticastTxCount" - - - label: "Read attribute: PacketUnicastRxCount" - PICS: DGWIFI.C.A0009 - wait: "readAttribute" - attribute: "PacketUnicastRxCount" - - - label: "Read attribute: PacketUnicastTxCount" - PICS: DGWIFI.C.A000a - wait: "readAttribute" - attribute: "PacketUnicastTxCount" - - - label: "Read attribute: CurrentMaxRate" - PICS: DGWIFI.C.A000b - wait: "readAttribute" - attribute: "CurrentMaxRate" - - - label: "Read attribute: OverrunCount" - PICS: DGWIFI.C.A000c - wait: "readAttribute" - attribute: "OverrunCount" diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml index b79bbbd590df01..e27bf45da37446 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_1_1.yaml @@ -33,70 +33,75 @@ tests: - label: "Step 2: TH reads from the DUT the ClusterRevision attribute." verification: | - ./chip-tool dishwashermodeselect read cluster-revision 1 1 + ./chip-tool dishwashermode read cluster-revision 1 1 - Verify the "ClusterRevision" value is of unit16 and reflects the highest revision number 2 on the TH(chip-tool) and below is the sample log provided for the raspi platform: + Verify the "ClusterRevision" value is of unit16 and reflects the highest revision number 1 on the TH(Chip-tool) and below is the sample log provided for the raspi platform: - [1645775623.658997][3277:3282] CHIP:TOO: ClusterRevision: 1 + [1690365584.246794][27436:27438] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_FFFD DataVersion: 1130015440 + [1690365584.246860][27436:27438] CHIP:TOO: ClusterRevision: 1 disabled: true - label: "Step 3: TH reads from the DUT the FeatureMap attribute." verification: | - ./chip-tool dishwashermodeselect read feature-map 1 1 + ./chip-tool dishwashermode read feature-map 1 1 - On the TH(chip-tool) Log, Verify featureMap value is 1, This value changes depending on DUT implementing the features and below is the sample log provided for the raspi platform: + On the TH(Chip-tool) Log, Verify featureMap value is 1 If TCCM.S.F00(DEPONOFF) true, Otherwise 0, T and below is the sample log provided for the raspi platform: - [1649052001.646939][8355:8360] CHIP:TOO: FeatureMap: 1 + [1690365613.351850][27441:27443] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_FFFC DataVersion: 1130015440 + [1690365613.351911][27441:27443] CHIP:TOO: FeatureMap: 1 disabled: true - label: "Step 4: TH reads from the DUT the AttributeList attribute." verification: | - ./chip-tool dishwashermodeselect read attribute-list 1 1 - - Verify the "AttributeList " should include the mandatory attributes (values 0, 2, 3), - global attributes (value 65533, 65532, 65531, 65530, 65529 and 65528) and - list may include optional attribute(value 0x0004), if MOD.S.A0004(StartUpMode) supports, - list contains feature dependent attribute (values 0x0005), if MOD.S.F00(DEPONOFF) is true on the TH(chip-tool) Log and below is the sample log provided for the raspi platform: - - [1676288620.483812][4014:4016] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_FFFB DataVersion: 2649295313 - [1676288620.483850][4014:4016] CHIP:TOO: AttributeList: 13 entries - [1676288620.483861][4014:4016] CHIP:TOO: [1]: 0 - [1676288620.483870][4014:4016] CHIP:TOO: [2]: 1 - [1676288620.483878][4014:4016] CHIP:TOO: [3]: 65528 - [1676288620.483886][4014:4016] CHIP:TOO: [4]: 65529 - [1676288620.483892][4014:4016] CHIP:TOO: [5]: 65530 - [1676288620.483899][4014:4016] CHIP:TOO: [6]: 65531 - [1676288620.483906][4014:4016] CHIP:TOO: [7]: 4293984257 - [1676288620.483915][4014:4016] CHIP:TOO: [8]: 2 - [1676288620.483922][4014:4016] CHIP:TOO: [9]: 3 - [1676288620.483929][4014:4016] CHIP:TOO: [10]: 4 - [1676288620.483934][4014:4016] CHIP:TOO: [11]: 5 - [1676288620.483941][4014:4016] CHIP:TOO: [12]: 65532 - [1676288620.483947][4014:4016] CHIP:TOO: [13]: 65533 - [1676288620.484034][4014:4016] CHIP:EM: <<< [E:29816i M:167554497 (Ack:41020138)] (S) Msg TX to 1:000000000 - - - *NOTE* : This sample attribute list reflects the currently implemented attributes on the all-clusters-app. + ./chip-tool dishwashermode read attribute-list 1 1 + + Verify the "AttributeList " should include the mandatory attributes (values 0, 1), + - global attributes (value 65533, 65532, 65531, 65530, 65529 and 65528) and + - list may include optional attribute(value 0x0002), if MOD.S.A0004(StartUpMode) supports, + - list contains feature dependent attribute (values 0x0003), if MOD.S.F00(DEPONOFF) is true on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689930814.439457][300741:300743] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_FFFB DataVersion: 2031856391 + [1689930814.439500][300741:300743] CHIP:TOO: AttributeList: 10 entries + [1689930814.439520][300741:300743] CHIP:TOO: [1]: 0 + [1689930814.439538][300741:300743] CHIP:TOO: [2]: 1 + [1689930814.439565][300741:300743] CHIP:TOO: [3]: 2 + [1689930814.439584][300741:300743] CHIP:TOO: [4]: 3 + [1689930814.439599][300741:300743] CHIP:TOO: [5]: 65528 + [1689930814.439602][300741:300743] CHIP:TOO: [6]: 65529 + [1689930814.439604][300741:300743] CHIP:TOO: [7]: 65530 + [1689930814.439616][300741:300743] CHIP:TOO: [8]: 65531 + [1689930814.439619][300741:300743] CHIP:TOO: [9]: 65532 + [1689930814.439621][300741:300743] CHIP:TOO: [10]: 65533 disabled: true - - label: "Step 5: TH reads from the DUT the AcceptedCommandList attribute." + - label: "Step 5: TH reads from the DUT the EventList attribute." verification: | - ./chip-tool dishwashermodeselect read accepted-command-list 1 1 + ./chip-tool dishwashermode read event-list 1 1 - Verify the "AcceptedCommandList" contains feature dependent commands - if !MOD.S.F02(DEPCTM) feature supports list includes(value 0x0000) and - if MOD.S.F01(EXT) feature supports list includes(value 0x0001) on the TH (chip-tool) and below is the sample log provided for the raspi platform: + Verify "EventList" contains a list of supported events, for this cluster the list is emty(0 entries) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - [1650274602.826352][8965:8970] CHIP:TOO: AcceptedCommandList: 1 entries - [1650274602.826442][8965:8970] CHIP:TOO: [1]: 0 + [1689996691.141081][359868:359870] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_FFFA DataVersion: 1427220838 + [1689996691.141341][359868:359870] CHIP:TOO: EventList: 0 entries disabled: true - - label: "Step 6: TH reads from the DUT the GeneratedCommandList attribute." + - label: "Step 6: TH reads from the DUT the AcceptedCommandList attribute." verification: | - ./chip-tool dishwashermodeselect read generated-command-list 1 1 + ./chip-tool dishwashermode read accepted-command-list 1 1 - Verify "GeneratedCommandList" contains feature dependent commands - if MOD.S.F01(EXT) feature supports list includes(value 0x0002), otherwise value is 0 on the TH(chip-tool) Log and below is the sample log provided for the raspi platform: + Verify the "AcceptedCommandList" contains a list of mandatory commands (value 0) on the TH (Chip-tool) and below is the sample log provided for the raspi platform: - [1650274662.075309][8972:8977] CHIP:TOO: GeneratedCommandList: 0 entries + [1690365651.143190][27451:27453] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_FFF9 DataVersion: 1130015440 + [1690365651.143256][27451:27453] CHIP:TOO: AcceptedCommandList: 1 entries + [1690365651.143284][27451:27453] CHIP:TOO: [1]: 0 + disabled: true + + - label: "Step 7: TH reads from the DUT the GeneratedCommandList attribute." + verification: | + ./chip-tool dishwashermode read generated-command-list 1 1 + + Verify "GeneratedCommandList" contains a list of mandatory commands (value 1) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689997224.280302][360025:360027] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_FFF8 DataVersion: 1427220838 + [1689997224.280330][360025:360027] CHIP:TOO: GeneratedCommandList: 1 entries + [1689997224.280346][360025:360027] CHIP:TOO: [1]: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml index a4304e3d1d715c..34053c3f7f5ad2 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_1_2.yaml @@ -34,85 +34,82 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: DISHM.S.A0000 verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains atleast two ModeOptionsStruct entries with unique mode field value and label field value below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } + ./chip-tool dishwashermode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries. + - Verify that list should contain at least one entry + - Verify that each ModeOptionsStruct entry has a unique Mode field value and Label field value + - ModeOptionsStruct entry’s ModeTags field is not empty, then Verify the values of the Value fields that are not larger than 16 bits, for each Value field: Is the semantic tag value a defined common tag value (Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster alias tag value (RapidCool, RapidFreeze) or in the MfgTags (0x8000 to 0xBFFF) range + - If the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 + - Verify that at least one ModeOptionsStruct entry includes either the RapidCool semantic tag or the RapidFreeze semantic tag in the SemanticTags field + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1689997453.610123][360094:360096] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 1427220838 + [1689997453.610169][360094:360096] CHIP:TOO: SupportedModes: 3 entries + [1689997453.610483][360094:360096] CHIP:TOO: [1]: { + [1689997453.610503][360094:360096] CHIP:TOO: Label: Normal + [1689997453.610530][360094:360096] CHIP:TOO: Mode: 0 + [1689997453.610536][360094:360096] CHIP:TOO: ModeTags: 1 entries + [1689997453.610540][360094:360096] CHIP:TOO: [1]: { + [1689997453.610542][360094:360096] CHIP:TOO: Value: 16384 + [1689997453.610551][360094:360096] CHIP:TOO: } + [1689997453.610553][360094:360096] CHIP:TOO: } + [1689997453.610559][360094:360096] CHIP:TOO: [2]: { + [1689997453.610571][360094:360096] CHIP:TOO: Label: Heavy + [1689997453.610574][360094:360096] CHIP:TOO: Mode: 1 + [1689997453.610577][360094:360096] CHIP:TOO: ModeTags: 2 entries + [1689997453.610580][360094:360096] CHIP:TOO: [1]: { + [1689997453.610582][360094:360096] CHIP:TOO: Value: 7 + [1689997453.610583][360094:360096] CHIP:TOO: } + [1689997453.610585][360094:360096] CHIP:TOO: [2]: { + [1689997453.610587][360094:360096] CHIP:TOO: Value: 16385 + [1689997453.610588][360094:360096] CHIP:TOO: } + [1689997453.610590][360094:360096] CHIP:TOO: } + [1689997453.610594][360094:360096] CHIP:TOO: [3]: { + [1689997453.610595][360094:360096] CHIP:TOO: Label: Light + [1689997453.610597][360094:360096] CHIP:TOO: Mode: 2 + [1689997453.610600][360094:360096] CHIP:TOO: ModeTags: 3 entries + [1689997453.610602][360094:360096] CHIP:TOO: [1]: { + [1689997453.610604][360094:360096] CHIP:TOO: Value: 16386 + [1689997453.610605][360094:360096] CHIP:TOO: } + [1689997453.610607][360094:360096] CHIP:TOO: [2]: { + [1689997453.610609][360094:360096] CHIP:TOO: Value: 8 + [1689997453.610610][360094:360096] CHIP:TOO: } + [1689997453.610612][360094:360096] CHIP:TOO: [3]: { + [1689997453.610614][360094:360096] CHIP:TOO: Value: 2 + [1689997453.610615][360094:360096] CHIP:TOO: } + [1689997453.610617][360094:360096] CHIP:TOO: } disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1645776767.611140][4667:4672] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469718 - - [1645776767.611214][4667:4672] CHIP:TOO: CurrentMode: 0 + [1689997642.999367][360160:360162] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 1994417976 + [1689997642.999395][360160:360162] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the OnMode attribute." PICS: DISHM.S.A0003 verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 - - Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null) , below is the sample log provided for the raspi platform: - + ./chip-tool dishwashermode read on-mode 1 1 - [1649676072.465968][10754:10759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065072 + Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null) , below is the sample log provided for the raspi platform, Here OnMode attribute value is Null + [1649676072.465968][10754:10759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 4277065072 [1649676072.466094][10754:10759] CHIP:TOO: OnMode: null disabled: true - label: "Step 5: TH reads from the DUT the StartUpMode attribute." PICS: DISHM.S.A0002 verification: | - ./chip-tool dishwashermodeselect read start-up-mode 1 1 + ./chip-tool dishwashermode read start-up-mode 1 1 - Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer and value is from supported_modes_dut, below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer(As per spec default value is null) and value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is Null - [1649677014.496348][10778:10784] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 4277065072 - [1649677014.496469][10778:10784] CHIP:TOO: StartUpMode: 0 + [1689997956.636092][360258:360260] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 1994417976 + [1689997956.636125][360258:360260] CHIP:TOO: StartUpMode: null disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml index 57546907ea001a..767bf66498b0fe 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_2_1.yaml @@ -24,6 +24,28 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To execute this test case set onmode to any integer value because as default it value has null. + + ./chip-tool dishwashermode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + + [1690188722.057858][15975:15977] CHIP:DMG: StatusIB = + [1690188722.057862][15975:15977] CHIP:DMG: { + [1690188722.057865][15975:15977] CHIP:DMG: status = 0x00 (SUCCESS), + [1690188722.057867][15975:15977] CHIP:DMG: }, + disabled: true + + - label: "Precondition" + verification: | + 1 Dishwasher Mode and OnOff clusters are available on the same endpoint + + 2 The OnMode attribute is set to a non-NULL value from the mode values indicated by the SupportedModes attribute. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,152 +56,193 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: DISHM.S.A0000 verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains two or more ModeOptionsStruct entries and - Save the Mode field values as supported_modes_dut, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } - disabled: true - - - label: "Step 2: TH reads from the DUT the CurrentMode attribute." + ./chip-tool dishwashermode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1689998005.121163][360287:360289] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 1994417976 + [1689998005.121241][360287:360289] CHIP:TOO: SupportedModes: 3 entries + [1689998005.121250][360287:360289] CHIP:TOO: [1]: { + [1689998005.121256][360287:360289] CHIP:TOO: Label: Normal + [1689998005.121261][360287:360289] CHIP:TOO: Mode: 0 + [1689998005.121264][360287:360289] CHIP:TOO: ModeTags: 1 entries + [1689998005.121268][360287:360289] CHIP:TOO: [1]: { + [1689998005.121270][360287:360289] CHIP:TOO: Value: 16384 + [1689998005.121272][360287:360289] CHIP:TOO: } + [1689998005.121274][360287:360289] CHIP:TOO: } + [1689998005.121278][360287:360289] CHIP:TOO: [2]: { + [1689998005.121279][360287:360289] CHIP:TOO: Label: Heavy + [1689998005.121280][360287:360289] CHIP:TOO: Mode: 1 + [1689998005.121283][360287:360289] CHIP:TOO: ModeTags: 2 entries + [1689998005.121285][360287:360289] CHIP:TOO: [1]: { + [1689998005.121287][360287:360289] CHIP:TOO: Value: 7 + [1689998005.121288][360287:360289] CHIP:TOO: } + [1689998005.121291][360287:360289] CHIP:TOO: [2]: { + [1689998005.121292][360287:360289] CHIP:TOO: Value: 16385 + [1689998005.121293][360287:360289] CHIP:TOO: } + [1689998005.121295][360287:360289] CHIP:TOO: } + [1689998005.121299][360287:360289] CHIP:TOO: [3]: { + [1689998005.121300][360287:360289] CHIP:TOO: Label: Light + [1689998005.121302][360287:360289] CHIP:TOO: Mode: 2 + [1689998005.121305][360287:360289] CHIP:TOO: ModeTags: 3 entries + [1689998005.121307][360287:360289] CHIP:TOO: [1]: { + [1689998005.121309][360287:360289] CHIP:TOO: Value: 16386 + [1689998005.121310][360287:360289] CHIP:TOO: } + [1689998005.121312][360287:360289] CHIP:TOO: [2]: { + [1689998005.121314][360287:360289] CHIP:TOO: Value: 8 + [1689998005.121315][360287:360289] CHIP:TOO: } + [1689998005.121317][360287:360289] CHIP:TOO: [3]: { + [1689998005.121319][360287:360289] CHIP:TOO: Value: 2 + [1689998005.121320][360287:360289] CHIP:TOO: } + [1689998005.121321][360287:360289] CHIP:TOO: } + disabled: true + + - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, - Save the value as old_current_mode_dut - - Select a value from supported_modes_dut, different from old_current_mode_dut, and which corresponds to a mode the device can switch to, given its current state and save this value as new_mode_th - - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, - below is the sample log provided for the raspi platform: + - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 3: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 4: TH sends a ChangeToMode command to the DUT with NewMode set to old_current_mode_dut" PICS: DISHM.S.C00.Rsp verification: | - ChangeToModeWithStatus Command is not impleented. + ./chip-tool dishwashermode change-to-mode 0 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690185977.976163][15730:15732] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 + [1690185977.976178][15730:15732] CHIP:TOO: ChangeToModeResponse: { + [1690185977.976182][15730:15732] CHIP:TOO: status: 0 + [1690185977.976185][15730:15732] CHIP:TOO: } disabled: true - label: - "Step 4: Manually put the device in a state from which it will FAIL to + "Step 5: Manually put the device in a state from which it will FAIL to transition to PIXIT.DISHM.MODE_CHANGE_FAIL" + PICS: PIXIT.DISHM.CAN_TEST_MODE_FAILURE verification: | - ChangeToModeWithStatus Command is not implented. + Manual operation required disabled: true - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + - label: "Step 6: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and equal to the new_mode_th, below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 6: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.DISHM.MODE_CHANGE_FAIL" - PICS: DISHM.S.C00.Rsp + PICS: PIXIT.DISHM.CAN_TEST_MODE_FAILURE && DISHM.S.C00.Rsp verification: | - ChangeToModeWithStatus Command is not implented. + Note : Please skip this step as SDK is not enabled with this failure response + + ./chip-tool dishwashermode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a GenericFailure(0x02) status response and below is the sample log provided for the raspi platform: + + [1690264785.719168][29854:29856] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0059 Command=0x0000_0001 + [1690264785.719200][29854:29856] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 + [1690264785.719263][29854:29856] CHIP:TOO: ChangeToModeResponse: { + [1690264785.719283][29854:29856] CHIP:TOO: status: 0 + [1690264785.719297][29854:29856] CHIP:TOO: } disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | + ./chip-tool dishwashermode read current-mode 1 1 + + Verify on TH(chip-tool), CurrentMode attribute value is an integer value and equal to old_current_mode_dut below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + [1690186182.071331][15758:15760] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242726 + [1690186182.071346][15758:15760] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 8: Manually put the device in a state from which it will + "Step 9: Manually put the device in a state from which it will SUCCESSFULLY transition to PIXIT.DISHM.MODE_CHANGE_OK" verification: | - + Manual operation required disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | + ./chip-tool dishwashermode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + [1690186182.071331][15758:15760] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242726 + [1690186182.071346][15758:15760] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 10: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 11: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.DISHM.MODE_CHANGE_OK" PICS: DISHM.S.C00.Rsp verification: | + ./chip-tool dishwashermode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + [1690187929.904831][15897:15899] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 + [1690187929.904845][15897:15899] CHIP:TOO: ChangeToModeResponse: { + [1690187929.904852][15897:15899] CHIP:TOO: status: 0 + [1690187929.904855][15897:15899] CHIP:TOO: } disabled: true - - label: "Step 11: TH reads from the DUT the CurrentMode attribute." + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | + ./chip-tool dishwashermode read current-mode 1 1 + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 11, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 2 + + [1690187960.116433][15901:15903] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242727 + [1690187960.116478][15901:15903] CHIP:TOO: CurrentMode: 2 disabled: true - label: - "Step 12: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 13: TH sends a ChangeToMode command to the DUT with NewMode set to invalid_mode_th" PICS: DISHM.S.C00.Rsp verification: | + ./chip-tool dishwashermode change-to-mode 4 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a UnsupportedMode(0x01) status response and below is the sample log provided for the raspi platform: + [1690188004.105157][15906:15908] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 + [1690188004.105172][15906:15908] CHIP:TOO: ChangeToModeResponse: { + [1690188004.105178][15906:15908] CHIP:TOO: status: 1 + [1690188004.105181][15906:15908] CHIP:TOO: } disabled: true - - label: "Step 13: TH reads from the DUT the CurrentMode attribute." + - label: "Step 14: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | + ./chip-tool dishwashermode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 12, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 2 + [1690187960.116433][15901:15903] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242727 + [1690187960.116478][15901:15903] CHIP:TOO: CurrentMode: 2 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml index 8836ca0ba9595f..78974199d806b8 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_3_1.yaml @@ -24,6 +24,28 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To execute this test case set onmode to any integer value because as default it value has null. + + ./chip-tool dishwashermode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + + [1690188722.057858][15975:15977] CHIP:DMG: StatusIB = + [1690188722.057862][15975:15977] CHIP:DMG: { + [1690188722.057865][15975:15977] CHIP:DMG: status = 0x00 (SUCCESS), + [1690188722.057867][15975:15977] CHIP:DMG: }, + disabled: true + + - label: "Precondition" + verification: | + 1 Dishwasher Mode and OnOff clusters are available on the same endpoint + + 2 The OnMode attribute is set to a non-NULL value from the mode values indicated by the SupportedModes attribute. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,77 +56,75 @@ tests: - label: "Step 2: TH reads from the DUT the OnMode attribute." PICS: DISHM.S.A0003 && DISHM.S.F00 verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 + ./chip-tool dishwashermode read on-mode 1 1 - On TH(chip-tool), Verify OnMode attribute value is an integer. save the value as on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer or Null + Save the value as on_mode_dut and below is the sample log provided for the raspi platform, here OnMode value is 0 - [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073 - [1649678983.680002][10871:10876] CHIP:TOO: OnMode: 0 + [1690188734.934221][15978:15980] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 74242734 + [1690188734.934259][15978:15980] CHIP:TOO: OnMode: 0 disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 && DISHM.S.F00 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - On TH(chip-tool), Verify CurrentMode attribute is an integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute is an integer. + Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - [1649679034.895848][10879:10884] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679034.895972][10879:10884] CHIP:TOO: CurrentMode: 0 + [1690188747.957507][15982:15984] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242734 + [1690188747.957564][15982:15984] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the SupportedModes attribute." PICS: DISHM.S.A0000 && DISHM.S.F00 verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. - Save the Mode field values as supported_modes_dut. - Select a value from supported_modes_dut different from on_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } + ./chip-tool dishwashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690188771.532158][15986:15988] CHIP:DMG: } + [1690188771.532258][15986:15988] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 74242734 + [1690188771.532287][15986:15988] CHIP:TOO: SupportedModes: 3 entries + [1690188771.532305][15986:15988] CHIP:TOO: [1]: { + [1690188771.532309][15986:15988] CHIP:TOO: Label: Normal + [1690188771.532316][15986:15988] CHIP:TOO: Mode: 0 + [1690188771.532321][15986:15988] CHIP:TOO: ModeTags: 1 entries + [1690188771.532327][15986:15988] CHIP:TOO: [1]: { + [1690188771.532331][15986:15988] CHIP:TOO: Value: 16384 + [1690188771.532334][15986:15988] CHIP:TOO: } + [1690188771.532338][15986:15988] CHIP:TOO: } + [1690188771.532345][15986:15988] CHIP:TOO: [2]: { + [1690188771.532348][15986:15988] CHIP:TOO: Label: Heavy + [1690188771.532352][15986:15988] CHIP:TOO: Mode: 1 + [1690188771.532358][15986:15988] CHIP:TOO: ModeTags: 2 entries + [1690188771.532363][15986:15988] CHIP:TOO: [1]: { + [1690188771.532366][15986:15988] CHIP:TOO: Value: 7 + [1690188771.532368][15986:15988] CHIP:TOO: } + [1690188771.532372][15986:15988] CHIP:TOO: [2]: { + [1690188771.532374][15986:15988] CHIP:TOO: Value: 16385 + [1690188771.532376][15986:15988] CHIP:TOO: } + [1690188771.532379][15986:15988] CHIP:TOO: } + [1690188771.532386][15986:15988] CHIP:TOO: [3]: { + [1690188771.532388][15986:15988] CHIP:TOO: Label: Light + [1690188771.532390][15986:15988] CHIP:TOO: Mode: 2 + [1690188771.532395][15986:15988] CHIP:TOO: ModeTags: 3 entries + [1690188771.532398][15986:15988] CHIP:TOO: [1]: { + [1690188771.532401][15986:15988] CHIP:TOO: Value: 16386 + [1690188771.532403][15986:15988] CHIP:TOO: } + [1690188771.532406][15986:15988] CHIP:TOO: [2]: { + [1690188771.532409][15986:15988] CHIP:TOO: Value: 8 + [1690188771.532411][15986:15988] CHIP:TOO: } + [1690188771.532414][15986:15988] CHIP:TOO: [3]: { + [1690188771.532417][15986:15988] CHIP:TOO: Value: 2 + [1690188771.532419][15986:15988] CHIP:TOO: } + [1690188771.532421][15986:15988] CHIP:TOO: } disabled: true - label: @@ -112,16 +132,14 @@ tests: to new_mode_th" PICS: DISHM.S.C00.Rsp && DISHM.S.F00 verification: | - ./chip-tool dishwashermodeselect change-to-mode 2 1 1 + ./chip-tool dishwashermode change-to-mode 2 1 1 - On TH(chip-tool) log, verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931013.571019][20667:20669] CHIP:DMG: - [1684931013.571021][20667:20669] CHIP:DMG: StatusIB = - [1684931013.571024][20667:20669] CHIP:DMG: { - [1684931013.571027][20667:20669] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931013.571030][20667:20669] CHIP:DMG: }, - [1684931013.571034][20667:20669] CHIP:DMG: + [1690198333.074192][17405:17407] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 + [1690198333.074208][17405:17407] CHIP:TOO: ChangeToModeResponse: { + [1690198333.074213][17405:17407] CHIP:TOO: status: 0 + [1690198333.074216][17405:17407] CHIP:TOO: } disabled: true - label: "Step 6: TH sends a Off command to the DUT" @@ -131,7 +149,6 @@ tests: On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931101.118656][20709:20711] CHIP:DMG: StatusIB = [1684931101.118659][20709:20711] CHIP:DMG: { [1684931101.118663][20709:20711] CHIP:DMG: status = 0x00 (SUCCESS), [1684931101.118665][20709:20711] CHIP:DMG: }, @@ -144,7 +161,6 @@ tests: On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931217.055514][20729:20731] CHIP:DMG: StatusIB = [1684931217.055517][20729:20731] CHIP:DMG: { [1684931217.055520][20729:20731] CHIP:DMG: status = 0x00 (SUCCESS), [1684931217.055523][20729:20731] CHIP:DMG: }, @@ -153,10 +169,10 @@ tests: - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 && DISHM.S.F00 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - On TH(chip-tool), Verify that CurrentMode attribute value is an integer and value is equal to on_mode_dut. below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to on_mode_dut, below is the sample log provided for the raspi platform, here CurrentMode attribute value is 0 - [1649679202.069163][10899:10904] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679202.069278][10899:10904] CHIP:TOO: CurrentMode: 2 + [1690188859.713934][16004:16006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 74242736 + [1690188859.713980][16004:16006] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml index 960e14a4046d90..737dd31cc7c433 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_3_2.yaml @@ -24,6 +24,19 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To Execute the TC-DISHM-3.2 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,108 +47,179 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: DISHM.S.A0002 verification: | - ./chip-tool dishwashermodeselect read start-up-mode 1 1 + ./chip-tool dishwashermode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer or null + - Save the value as startup_mode_dut and below is the sample log provided for the raspi platform, Here StartUpMode value is null - On TH(chip-tool), Verify StartUpMode attribute value is an integer. save the value as startup_mode_dut and below is the sample log provided for the raspi platform: + NOTE: if startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. - [1645777708.406864][4841:4846] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469721 - [1645777708.406933][4841:4846] CHIP:TOO: StartUpMode: 0 + [1690188941.380388][16015:16017] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 74242738 + [1690188941.380430][16015:16017] CHIP:TOO: StartUpMode: null disabled: true - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: DISHM.S.A0000 + verification: | + ./chip-tool dishwashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690188996.754102][16022:16024] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 74242738 + [1690188996.754208][16022:16024] CHIP:TOO: SupportedModes: 3 entries + [1690188996.754248][16022:16024] CHIP:TOO: [1]: { + [1690188996.754258][16022:16024] CHIP:TOO: Label: Normal + [1690188996.754270][16022:16024] CHIP:TOO: Mode: 0 + [1690188996.754285][16022:16024] CHIP:TOO: ModeTags: 1 entries + [1690188996.754302][16022:16024] CHIP:TOO: [1]: { + [1690188996.754314][16022:16024] CHIP:TOO: Value: 16384 + [1690188996.754325][16022:16024] CHIP:TOO: } + [1690188996.754336][16022:16024] CHIP:TOO: } + [1690188996.754360][16022:16024] CHIP:TOO: [2]: { + [1690188996.754369][16022:16024] CHIP:TOO: Label: Heavy + [1690188996.754378][16022:16024] CHIP:TOO: Mode: 1 + [1690188996.754393][16022:16024] CHIP:TOO: ModeTags: 2 entries + [1690188996.754407][16022:16024] CHIP:TOO: [1]: { + [1690188996.754416][16022:16024] CHIP:TOO: Value: 7 + [1690188996.754425][16022:16024] CHIP:TOO: } + [1690188996.754439][16022:16024] CHIP:TOO: [2]: { + [1690188996.754450][16022:16024] CHIP:TOO: Value: 16385 + [1690188996.754459][16022:16024] CHIP:TOO: } + [1690188996.754469][16022:16024] CHIP:TOO: } + [1690188996.754493][16022:16024] CHIP:TOO: [3]: { + [1690188996.754501][16022:16024] CHIP:TOO: Label: Light + [1690188996.754511][16022:16024] CHIP:TOO: Mode: 2 + [1690188996.754548][16022:16024] CHIP:TOO: ModeTags: 3 entries + [1690188996.754564][16022:16024] CHIP:TOO: [1]: { + [1690188996.754574][16022:16024] CHIP:TOO: Value: 16386 + [1690188996.754583][16022:16024] CHIP:TOO: } + [1690188996.754597][16022:16024] CHIP:TOO: [2]: { + [1690188996.754606][16022:16024] CHIP:TOO: Value: 8 + [1690188996.754615][16022:16024] CHIP:TOO: } + [1690188996.754629][16022:16024] CHIP:TOO: [3]: { + [1690188996.754638][16022:16024] CHIP:TOO: Value: 2 + [1690188996.754646][16022:16024] CHIP:TOO: } + [1690188996.754654][16022:16024] CHIP:TOO: } + disabled: true + + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: DISHM.S.A0002 + verification: | + ./chip-tool dishwashermode write start-up-mode 0 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690188912.259778][16011:16013] CHIP:DMG: { + [1690188912.259790][16011:16013] CHIP:DMG: status = 0x00 (SUCCESS), + [1690188912.259800][16011:16013] CHIP:DMG: }, + [1690188912.259813][16011:16013] CHIP:DMG: + disabled: true + + - label: "Step 5: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - On TH(chip-tool), Verify CurrentMode attribute value is an integer, - save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 6. Else proceed to step 8. - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 + [1690189040.789208][16040:16042] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 1012425326 + [1690189040.789223][16040:16042] CHIP:TOO: CurrentMode: 0 disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." PICS: DISHM.S.A0000 verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. - Save the Mode field values as supported_modes_dut. - Select a value from supported_modes_dut different from on_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } + ./chip-tool dishwashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690188996.754102][16022:16024] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 74242738 + [1690188996.754208][16022:16024] CHIP:TOO: SupportedModes: 3 entries + [1690188996.754248][16022:16024] CHIP:TOO: [1]: { + [1690188996.754258][16022:16024] CHIP:TOO: Label: Normal + [1690188996.754270][16022:16024] CHIP:TOO: Mode: 0 + [1690188996.754285][16022:16024] CHIP:TOO: ModeTags: 1 entries + [1690188996.754302][16022:16024] CHIP:TOO: [1]: { + [1690188996.754314][16022:16024] CHIP:TOO: Value: 16384 + [1690188996.754325][16022:16024] CHIP:TOO: } + [1690188996.754336][16022:16024] CHIP:TOO: } + [1690188996.754360][16022:16024] CHIP:TOO: [2]: { + [1690188996.754369][16022:16024] CHIP:TOO: Label: Heavy + [1690188996.754378][16022:16024] CHIP:TOO: Mode: 1 + [1690188996.754393][16022:16024] CHIP:TOO: ModeTags: 2 entries + [1690188996.754407][16022:16024] CHIP:TOO: [1]: { + [1690188996.754416][16022:16024] CHIP:TOO: Value: 7 + [1690188996.754425][16022:16024] CHIP:TOO: } + [1690188996.754439][16022:16024] CHIP:TOO: [2]: { + [1690188996.754450][16022:16024] CHIP:TOO: Value: 16385 + [1690188996.754459][16022:16024] CHIP:TOO: } + [1690188996.754469][16022:16024] CHIP:TOO: } + [1690188996.754493][16022:16024] CHIP:TOO: [3]: { + [1690188996.754501][16022:16024] CHIP:TOO: Label: Light + [1690188996.754511][16022:16024] CHIP:TOO: Mode: 2 + [1690188996.754548][16022:16024] CHIP:TOO: ModeTags: 3 entries + [1690188996.754564][16022:16024] CHIP:TOO: [1]: { + [1690188996.754574][16022:16024] CHIP:TOO: Value: 16386 + [1690188996.754583][16022:16024] CHIP:TOO: } + [1690188996.754597][16022:16024] CHIP:TOO: [2]: { + [1690188996.754606][16022:16024] CHIP:TOO: Value: 8 + [1690188996.754615][16022:16024] CHIP:TOO: } + [1690188996.754629][16022:16024] CHIP:TOO: [3]: { + [1690188996.754638][16022:16024] CHIP:TOO: Value: 2 + [1690188996.754646][16022:16024] CHIP:TOO: } + [1690188996.754654][16022:16024] CHIP:TOO: } disabled: true - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to new_mode_th" PICS: DISHM.S.C00.Rsp verification: | - ./chip-tool dishwashermodeselect change-to-mode 2 1 1 - + ./chip-tool dishwashermode change-to-mode 2 1 1 - On TH(chip-tool) , Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931419.768138][20792:20794] CHIP:DMG: StatusIB = - [1684931419.768143][20792:20794] CHIP:DMG: { - [1684931419.768148][20792:20794] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931419.768152][20792:20794] CHIP:DMG: }, + [1690265961.529808][30174:30176] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Command 0x0000_0001 + [1690265961.529857][30174:30176] CHIP:TOO: ChangeToModeResponse: { + [1690265961.529880][30174:30176] CHIP:TOO: status: 0 + [1690265961.529891][30174:30176] CHIP:TOO: } disabled: true - - label: "Step 6: Physically power cycle the device" + - label: "Step 8: Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 9: TH reads from the DUT the StartUpMode attribute." + PICS: DISHM.S.A0002 + verification: | + ./chip-tool dishwashermode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer. + - Save the value as new_start_up_mode_dut and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode value is 0 + + [1690188941.380388][16015:16017] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 74242738 + [1690188941.380430][16015:16017] CHIP:TOO: StartUpMode: 0 + disabled: true + + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - on TH(chip-tool), Verify that CurrentMode attribute value is same as value recorded in step 1 and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_start_up_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 + [1690189040.789208][16040:16042] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 1012425326 + [1690189040.789223][16040:16042] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml index f2fec608881422..3efe1d547d7a2e 100644 --- a/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DISHM_3_3.yaml @@ -24,6 +24,19 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To Execute the TC-DISH-3.3 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,128 +47,181 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: DISHM.S.A0002 verification: | - ./chip-tool dishwashermodeselect read start-up-mode 1 1 + ./chip-tool dishwashermode read start-up-mode 1 1 - On TH(chip-tool) log, Verify StartUpMode attribute value is an integer. save this value as startup_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that StartUpMode attribute value is an integer or Null + - Save the value as startup_mode_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is null + NOTE: if startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 - [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: 0 + [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: null + disabled: true + + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: DISHM.S.A0000 + verification: | + ./chip-tool dishwashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690189296.612007][16077:16079] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 1012425327 + [1690189296.612104][16077:16079] CHIP:TOO: SupportedModes: 3 entries + [1690189296.612139][16077:16079] CHIP:TOO: [1]: { + [1690189296.612149][16077:16079] CHIP:TOO: Label: Normal + [1690189296.612168][16077:16079] CHIP:TOO: Mode: 0 + [1690189296.612189][16077:16079] CHIP:TOO: ModeTags: 1 entries + [1690189296.612214][16077:16079] CHIP:TOO: [1]: { + [1690189296.612224][16077:16079] CHIP:TOO: Value: 16384 + [1690189296.612234][16077:16079] CHIP:TOO: } + [1690189296.612243][16077:16079] CHIP:TOO: } + [1690189296.612264][16077:16079] CHIP:TOO: [2]: { + [1690189296.612273][16077:16079] CHIP:TOO: Label: Heavy + [1690189296.612282][16077:16079] CHIP:TOO: Mode: 1 + [1690189296.612296][16077:16079] CHIP:TOO: ModeTags: 2 entries + [1690189296.612309][16077:16079] CHIP:TOO: [1]: { + [1690189296.612318][16077:16079] CHIP:TOO: Value: 7 + [1690189296.612327][16077:16079] CHIP:TOO: } + [1690189296.612339][16077:16079] CHIP:TOO: [2]: { + [1690189296.612348][16077:16079] CHIP:TOO: Value: 16385 + [1690189296.612356][16077:16079] CHIP:TOO: } + [1690189296.612365][16077:16079] CHIP:TOO: } + [1690189296.612384][16077:16079] CHIP:TOO: [3]: { + [1690189296.612392][16077:16079] CHIP:TOO: Label: Light + [1690189296.612398][16077:16079] CHIP:TOO: Mode: 2 + [1690189296.612413][16077:16079] CHIP:TOO: ModeTags: 3 entries + [1690189296.612425][16077:16079] CHIP:TOO: [1]: { + [1690189296.612433][16077:16079] CHIP:TOO: Value: 16386 + [1690189296.612443][16077:16079] CHIP:TOO: } + [1690189296.612456][16077:16079] CHIP:TOO: [2]: { + [1690189296.612465][16077:16079] CHIP:TOO: Value: 8 + [1690189296.612473][16077:16079] CHIP:TOO: } + [1690189296.612485][16077:16079] CHIP:TOO: [3]: { + [1690189296.612494][16077:16079] CHIP:TOO: Value: 2 + [1690189296.612502][16077:16079] CHIP:TOO: } + [1690189296.612511][16077:16079] CHIP:TOO: } + disabled: true + + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: DISHM.S.A0002 + verification: | + ./chip-tool dishwashermode write start-up-mode 0 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690188912.259766][16011:16013] CHIP:DMG: StatusIB = + [1690188912.259778][16011:16013] CHIP:DMG: { + [1690188912.259790][16011:16013] CHIP:DMG: status = 0x00 (SUCCESS), + [1690188912.259800][16011:16013] CHIP:DMG: }, + [1690188912.259813][16011:16013] CHIP:DMG: disabled: true - - label: "Step 3: TH reads from the DUT the OnMode attribute." + - label: "Step 5: TH reads from the DUT the OnMode attribute." PICS: DISHM.S.A0003 && DISHM.S.A0002 verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 + Set onmode to any integer value because as default it value has null. + + ./chip-tool dishwashermode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690189187.414225][16062:16064] CHIP:DMG: StatusIB = + [1690189187.414237][16062:16064] CHIP:DMG: { + [1690189187.414249][16062:16064] CHIP:DMG: status = 0x00 (SUCCESS), + [1690189187.414260][16062:16064] CHIP:DMG: }, + - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as old_on_mode_dut and below is the sample log provided for the raspi platform: + ./chip-tool dishwashermode read on-mode 1 1 + On TH(chip-tool), Verify that OnMode attribute value is an integer value + - Save the value as old_on_mode_dut, below is the sample log provided for the raspi platform, here OnMode attribute value is 0 - [1654780979.979743][61542:61547] CHIP:DMG: } - [1654780979.980040][61542:61547] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 235764160 - [1654780979.980202][61542:61547] CHIP:TOO: OnMode: 4 + NOTE: If startup_mode_dut is equal to old_on_mode_dut proceed to step 6. Else proceed to step 8. + + [1690189501.554415][16104:16106] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 1012425329 + [1690189501.554429][16104:16106] CHIP:TOO: OnMode: 0 disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." PICS: DISHM.S.A0000 && DISHM.S.A0002 verification: | - ./chip-tool dishwashermodeselect read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. - Save the Mode field values as supported_modes_dut. - Select a value from supported_modes_dut different from on_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1687687925.438666][18054:18056] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0002 DataVersion: 4148960394 - [1687687925.438838][18054:18056] CHIP:TOO: SupportedModes: 3 entries - [1687687925.444452][18054:18056] CHIP:TOO: [1]: { - [1687687925.444485][18054:18056] CHIP:TOO: Label: Normal - [1687687925.444506][18054:18056] CHIP:TOO: Mode: 0 - [1687687925.444532][18054:18056] CHIP:TOO: SemanticTags: 1 entries - [1687687925.444575][18054:18056] CHIP:TOO: [1]: { - [1687687925.444598][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444632][18054:18056] CHIP:TOO: Value: 16384 - [1687687925.444654][18054:18056] CHIP:TOO: } - [1687687925.444674][18054:18056] CHIP:TOO: } - [1687687925.444702][18054:18056] CHIP:TOO: [2]: { - [1687687925.444723][18054:18056] CHIP:TOO: Label: Heavy - [1687687925.444742][18054:18056] CHIP:TOO: Mode: 1 - [1687687925.444764][18054:18056] CHIP:TOO: SemanticTags: 2 entries - [1687687925.444787][18054:18056] CHIP:TOO: [1]: { - [1687687925.444808][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444828][18054:18056] CHIP:TOO: Value: 7 - [1687687925.444847][18054:18056] CHIP:TOO: } - [1687687925.444869][18054:18056] CHIP:TOO: [2]: { - [1687687925.444928][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.444952][18054:18056] CHIP:TOO: Value: 16385 - [1687687925.444971][18054:18056] CHIP:TOO: } - [1687687925.444991][18054:18056] CHIP:TOO: } - [1687687925.445016][18054:18056] CHIP:TOO: [3]: { - [1687687925.445036][18054:18056] CHIP:TOO: Label: Light - [1687687925.445056][18054:18056] CHIP:TOO: Mode: 2 - [1687687925.445106][18054:18056] CHIP:TOO: SemanticTags: 3 entries - [1687687925.445133][18054:18056] CHIP:TOO: [1]: { - [1687687925.445154][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445174][18054:18056] CHIP:TOO: Value: 16386 - [1687687925.445194][18054:18056] CHIP:TOO: } - [1687687925.445216][18054:18056] CHIP:TOO: [2]: { - [1687687925.445236][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445256][18054:18056] CHIP:TOO: Value: 8 - [1687687925.445275][18054:18056] CHIP:TOO: } - [1687687925.445297][18054:18056] CHIP:TOO: [3]: { - [1687687925.445342][18054:18056] CHIP:TOO: MfgCode: 0 - [1687687925.445365][18054:18056] CHIP:TOO: Value: 2 - [1687687925.445385][18054:18056] CHIP:TOO: } - [1687687925.445405][18054:18056] CHIP:TOO: } + ./chip-tool dishwashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690189296.612007][16077:16079] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0000 DataVersion: 1012425327 + [1690189296.612104][16077:16079] CHIP:TOO: SupportedModes: 3 entries + [1690189296.612139][16077:16079] CHIP:TOO: [1]: { + [1690189296.612149][16077:16079] CHIP:TOO: Label: Normal + [1690189296.612168][16077:16079] CHIP:TOO: Mode: 0 + [1690189296.612189][16077:16079] CHIP:TOO: ModeTags: 1 entries + [1690189296.612214][16077:16079] CHIP:TOO: [1]: { + [1690189296.612224][16077:16079] CHIP:TOO: Value: 16384 + [1690189296.612234][16077:16079] CHIP:TOO: } + [1690189296.612243][16077:16079] CHIP:TOO: } + [1690189296.612264][16077:16079] CHIP:TOO: [2]: { + [1690189296.612273][16077:16079] CHIP:TOO: Label: Heavy + [1690189296.612282][16077:16079] CHIP:TOO: Mode: 1 + [1690189296.612296][16077:16079] CHIP:TOO: ModeTags: 2 entries + [1690189296.612309][16077:16079] CHIP:TOO: [1]: { + [1690189296.612318][16077:16079] CHIP:TOO: Value: 7 + [1690189296.612327][16077:16079] CHIP:TOO: } + [1690189296.612339][16077:16079] CHIP:TOO: [2]: { + [1690189296.612348][16077:16079] CHIP:TOO: Value: 16385 + [1690189296.612356][16077:16079] CHIP:TOO: } + [1690189296.612365][16077:16079] CHIP:TOO: } + [1690189296.612384][16077:16079] CHIP:TOO: [3]: { + [1690189296.612392][16077:16079] CHIP:TOO: Label: Light + [1690189296.612398][16077:16079] CHIP:TOO: Mode: 2 + [1690189296.612413][16077:16079] CHIP:TOO: ModeTags: 3 entries + [1690189296.612425][16077:16079] CHIP:TOO: [1]: { + [1690189296.612433][16077:16079] CHIP:TOO: Value: 16386 + [1690189296.612443][16077:16079] CHIP:TOO: } + [1690189296.612456][16077:16079] CHIP:TOO: [2]: { + [1690189296.612465][16077:16079] CHIP:TOO: Value: 8 + [1690189296.612473][16077:16079] CHIP:TOO: } + [1690189296.612485][16077:16079] CHIP:TOO: [3]: { + [1690189296.612494][16077:16079] CHIP:TOO: Value: 2 + [1690189296.612502][16077:16079] CHIP:TOO: } + [1690189296.612511][16077:16079] CHIP:TOO: } disabled: true - label: - "Step 5: TH writes to the DUT the OnMode attribute with the + "Step 7: TH writes to the DUT the OnMode attribute with the new_mode_th value" PICS: DISHM.S.A0003 verification: | - ./chip-tool dishwashermodeselect write on-mode 7 1 1 + ./chip-tool dishwashermode write on-mode 2 1 1 On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651099941884] [84269:7567211] CHIP: [DMG] WriteResponseMessage = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIBs = - [1651099941884] [84269:7567211] CHIP: [DMG] [ - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIB = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] AttributePathIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] Endpoint = 0x1, - [1651099941887] [84269:7567211] CHIP: [DMG] Cluster = 0x50, - [1651099941887] [84269:7567211] CHIP: [DMG] Attribute = 0x0000_0005, - [1651099941887] [84269:7567211] CHIP: [DMG] } - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] StatusIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] ], - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] InteractionModelRevision = 1 - [1651099941887] [84269:7567211] CHIP: [DMG] } + [1690189470.746137][16086:16088] CHIP:DMG: { + [1690189470.746140][16086:16088] CHIP:DMG: status = 0x00 (SUCCESS), + [1690189470.746142][16086:16088] CHIP:DMG: }, disabled: true - - label: "Step 6: TH reads from the DUT the OnMode attribute." + - label: "Step 8: TH reads from the DUT the OnMode attribute." PICS: DISHM.S.A0003 && DISHM.S.F00 verification: | - ./chip-tool dishwashermodeselect read on-mode 1 1 + ./chip-tool dishwashermode read on-mode 1 1 - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as new_on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer + - Save the value as new_on_mode_dut and is equal to new_mode_th and below is the sample log provided for the raspi platform, here OnMode attribute value is 2 - [1669190858.739158][4187:4189] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4107771634 - [1669190858.739222][4187:4189] CHIP:TOO: OnMode: 7 + [1690189501.554415][16104:16106] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0003 DataVersion: 1012425329 + [1690189501.554429][16104:16106] CHIP:TOO: OnMode: 2 disabled: true - label: - "Step 7: TH writes to the DUT the StartUpOnOff attribute with the + "Step 9: TH writes to the DUT the StartUpOnOff attribute with the value 1." PICS: OO.S.A4003 verification: | @@ -163,44 +229,34 @@ tests: On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651101661959] [90832:7598169] CHIP: [DMG] WriteResponseMessage = - [1651101661959] [90832:7598169] CHIP: [DMG] { - [1651101661959] [90832:7598169] CHIP: [DMG] AttributeStatusIBs = - [1651101661959] [90832:7598169] CHIP: [DMG] [ - [1651101661959] [90832:7598169] CHIP: [DMG] AttributeStatusIB = - [1651101661959] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] AttributePathIB = - [1651101661960] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] Endpoint = 0x1, - [1651101661960] [90832:7598169] CHIP: [DMG] Cluster = 0x6, - [1651101661960] [90832:7598169] CHIP: [DMG] Attribute = 0x0000_4003, - [1651101661960] [90832:7598169] CHIP: [DMG] } - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] StatusIB = [1651101661960] [90832:7598169] CHIP: [DMG] { [1651101661960] [90832:7598169] CHIP: [DMG] status = 0x00 (SUCCESS), [1651101661960] [90832:7598169] CHIP: [DMG] }, - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] }, - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] ], - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] InteractionModelRevision = 1 - [1651101661960] [90832:7598169] CHIP: [DMG] } disabled: true - - label: "Step 8: Physically power cycle the device" + - label: "Step 10: Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 11: TH reads from the DUT the StartUpMode attribute." + PICS: DISHM.S.A0002 + verification: | + ./chip-tool dishwashermode read start-up-mode 1 1 + + On TH(chip-tool), Verify that StartUpMode attribute value is an integer and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is 0 + + [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 + [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: 0 + disabled: true + + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: DISHM.S.A0001 verification: | - ./chip-tool dishwashermodeselect read current-mode 1 1 + ./chip-tool dishwashermode read current-mode 1 1 - On TH(chip-tool), Verify CurrentMode attribute value is same as the value recorded in step 3 and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_on_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 2 - [1669190936.869804][4194:4196] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3908583538 - [1669190936.869875][4194:4196] CHIP:TOO: CurrentMode: 7 + [1690189536.790233][16118:16120] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0059 Attribute 0x0000_0001 DataVersion: 4080703118 + [1690189536.790280][16118:16120] CHIP:TOO: CurrentMode: 2 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml index 2e9008d4eca7b4..686061edda9c34 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml @@ -583,7 +583,7 @@ tests: constraints: type: int16u minValue: 0 - maxValue: 65534 + maxValue: 255 - label: "Step 17b: TH writes MinRFIDCodeLength attribute as 17" PICS: DRLK.S.F01 && DRLK.S.A001a diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml index 38290883e3b699..4481532c0ca1af 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml @@ -227,7 +227,7 @@ tests: response: error: FAILURE - - label: "TStep 10a: H reads the WrongCodeEntryLimit attribute from the DUT" + - label: "Step 10a: H reads the WrongCodeEntryLimit attribute from the DUT" PICS: DRLK.S.A0030 command: "readAttribute" attribute: "WrongCodeEntryLimit" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml index 9b04eb751ec30d..e1169d4acd1aeb 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_9.yaml @@ -219,120 +219,60 @@ tests: - name: "Status" constraints: anyOf: [0x2, 0x3] - - name: "UserIndex" - value: null - label: "Step 6b: TH sends Set Credential Command to DUT and Verify that the - DUT sends Set Credential Response command with response as OCCUPIED if - the CredentialIndex is repeated" - verification: | - ./chip-tool doorlock set-credential 0 '{ "credentialType" : 1, "credentialIndex" : 1}' 123456 1 null null 1 1 --timedInteractionTimeoutMs 1000 - - Verify "DUT sends Set Credential Response command with response as DUPLICATE or OCCUPIED" on the TH(Chip-tool) Log: - - [1660216276.191641][71849:71854] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0023 - [1660216276.191673][71849:71854] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_0023 - [1660216276.191725][71849:71854] CHIP:TOO: SetCredentialResponse: { - [1660216276.191752][71849:71854] CHIP:TOO: status: 2 - [1660216276.191764][71849:71854] CHIP:TOO: userIndex: null - [1660216276.191776][71849:71854] CHIP:TOO: nextCredentialIndex: 2 - [1660216276.191798][71849:71854] CHIP:TOO: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + DUT sends Set Credential Response command with status as DUPLICATE or + OCCUPIED." + PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + command: "SetCredential" + timedInteractionTimeoutMs: 10000 arguments: values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - #- label: - # "Step 6b: TH sends Set Credential Command to DUT and Verify that the DUT sends - # Set Credential Response command with response as OCCUPIED if the - # CredentialIndex is repeated" - # PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx - # command: "SetCredential" - # timedInteractionTimeoutMs: 10000 - # arguments: - # values: - # - name: "OperationType" - # value: 0 - # - name: "Credential" - # value: { CredentialType: 1, CredentialIndex: 1 } - # - name: "CredentialData" - # value: "123456" - # - name: "UserIndex" - # value: 1 - # - name: "UserStatus" - # value: null - # - name: "UserType" - # value: null - # response: - # values: - # - name: "Status" - # constraints: - # anyOf: [0x2, 0x3] - # - name: "UserIndex" - # value: null + - name: "OperationType" + value: 0 + - name: "Credential" + value: { CredentialType: 1, CredentialIndex: 1 } + - name: "CredentialData" + value: "123457" + - name: "UserIndex" + value: 1 + - name: "UserStatus" + value: null + - name: "UserType" + value: null + response: + values: + - name: "Status" + constraints: + anyOf: [0x2, 0x3] - #Issue 19990 expected response OCCUPIED, but CHIP Tool Verification Steps shows status: 2 fix script once the issue is fixed. - label: "Step 7: TH sends Set Credential Command to DUT and Verify that the - DUT sends Set Credential Response command with response as OCCUPIED if - the CredentialIndex is repeated" - PICS: PICS_USER_PROMPT && DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx - verification: | - Mark as not applicable and proceed to next step - - ./chip-tool doorlock set-credential 2 '{ "credentialType" : 1, "credentialIndex" : 3 }' 1234567 1 null null 1 1 --timedInteractionTimeoutMs 1000 - Verify "DUT sends Set Credential Response command with response as OCCUPIED" on the TH(Chip-tool) Log: - - [1658473055.384297][2667:2672] CHIP:DMG: }, - [1658473055.384374][2667:2672] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0023 - [1658473055.384433][2667:2672] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Command 0x0000_0023 - [1658473055.384516][2667:2672] CHIP:TOO: SetCredentialResponse: { - [1658473055.384571][2667:2672] CHIP:TOO: status: 2 - [1658473055.384602][2667:2672] CHIP:TOO: userIndex: null - [1658473055.384632][2667:2672] CHIP:TOO: nextCredentialIndex: 4 - [1658473055.384660][2667:2672] CHIP:TOO: } - cluster: "LogCommands" - command: "UserPrompt" + DUT sends Set Credential Response command with status + INVALID_COMMAND(0x85) if the CredentialIndex is not associated with + the UserIndex." + PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx + command: "SetCredential" + timedInteractionTimeoutMs: 10000 arguments: values: - - name: "message" - value: "Please enter 'y' for success" - - name: "expectedValue" - value: "y" - - #- label: - # "Step 7: TH sends Set Credential Command to DUT and Verify that the DUT sends - # Set Credential Response command with response as OCCUPIED if the - # CredentialIndex is repeated" - # PICS: DRLK.S.F08 && DRLK.S.C22.Rsp && DRLK.S.C23.Tx - # command: "SetCredential" - # timedInteractionTimeoutMs: 10000 - # arguments: - # values: - # - name: "OperationType" - # value: 2 - # - name: "Credential" - # value: { CredentialType: 1, CredentialIndex: 3 } - # - name: "CredentialData" - # value: "123456" - # - name: "UserIndex" - # value: 1 - # - name: "UserStatus" - # value: null - # - name: "UserType" - # value: null - # response: - # values: - # - name: "Status" - # value: 0x3 - # - name: "UserIndex" - # value: null + - name: "OperationType" + value: 2 + - name: "Credential" + value: { CredentialType: 1, CredentialIndex: 3 } + - name: "CredentialData" + value: "1234567" + - name: "UserIndex" + value: 1 + - name: "UserStatus" + value: null + - name: "UserType" + value: null + response: + values: + - name: "Status" + value: 0x85 - label: "Step 8: TH sends Clear Credential Command to DUT" PICS: DRLK.S.F08 && DRLK.S.C26.Rsp diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml deleted file mode 100644 index 062b253bb8f103..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_1_Simulated.yaml +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 121.3.1. [TC-DRLK-3.1] Attributes check [DUT - Client] - -PICS: - - DRLK.C - -config: - nodeId: 0x12344321 - cluster: "Door Lock" - endpoint: 0 - -tests: - - label: "Wait for the device to be commissioned" - cluster: "DelayCommands" - command: "WaitForCommissioning" - - - label: "DUT reads LockState attribute value from TH" - wait: "readAttribute" - attribute: "LockState" - PICS: DRLK.C.A0000 - - - label: "DUT reads LockType attribute value from TH" - wait: "readAttribute" - attribute: "LockType" - PICS: DRLK.C.A0001 - - - label: "DUT reads ActuatorEnabled attribute value from TH" - wait: "readAttribute" - attribute: "ActuatorEnabled" - PICS: DRLK.C.A0002 - - - label: "DUT reads DoorState attribute value from TH" - wait: "readAttribute" - attribute: "DoorState" - PICS: DRLK.C.F05 && DRLK.C.A0003 - - - label: "DUT reads DoorOpenEvents attribute value from TH" - wait: "readAttribute" - attribute: "DoorOpenEvents" - PICS: DRLK.C.F05 && DRLK.C.A0004 - - - label: "DUT reads DoorClosedEvents attribute value from TH" - wait: "readAttribute" - attribute: "DoorClosedEvents" - PICS: DRLK.C.F05 && DRLK.C.A0005 - - - label: "DUT reads OpenPeriod attribute value from TH" - wait: "readAttribute" - attribute: "OpenPeriod" - PICS: DRLK.C.F05 && DRLK.C.A0006 - - - label: "DUT reads NumberOfTotalUsersSupported attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfTotalUsersSupported" - PICS: DRLK.C.F05 && DRLK.C.A0011 - - - label: "DUT reads NumberofPINUsersSupported attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfPINUsersSupported" - PICS: DRLK.C.F00 && DRLK.C.A0012 - - - label: "DUT reads NumberofRFIDUsersSupported attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfRFIDUsersSupported" - PICS: DRLK.C.F01 && DRLK.C.A0013 - - - label: - "DUT reads NumberofWeekDaysSchedulesSupported attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfWeekDaySchedulesSupportedPerUser" - PICS: DRLK.C.F04 && DRLK.C.A0014 - - - label: - "DUT reads NumberofYearDaysSchedulesSupported attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfYearDaySchedulesSupportedPerUser" - PICS: DRLK.C.F04 && DRLK.C.A0015 - - - label: - "DUT reads NumberofHolidaySchedulesSupported attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfHolidaySchedulesSupported" - PICS: DRLK.C.F04 && DRLK.C.A0016 - - - label: "DUT reads MaxPINCodeLength attribute value from TH" - wait: "readAttribute" - attribute: "MaxPINCodeLength" - PICS: DRLK.C.F00 && DRLK.C.A0017 - - - label: "DUT reads MinPINCodeLength attribute value from TH" - wait: "readAttribute" - attribute: "MinPINCodeLength" - PICS: DRLK.C.F00 && DRLK.C.A0018 - - - label: "DUT reads MaxRFIDCodeLength attribute value from TH" - wait: "readAttribute" - attribute: "MaxRFIDCodeLength" - PICS: DRLK.C.F01 && DRLK.C.A0019 - - - label: "DUT reads MinRFIDCodeLength attribute value from TH" - wait: "readAttribute" - attribute: "MinRFIDCodeLength" - PICS: DRLK.C.F01 && DRLK.C.A001a - - - label: "DUT reads CredentialRulesSupport attribute value from TH" - wait: "readAttribute" - attribute: "CredentialRulesSupport" - PICS: DRLK.C.F08 && DRLK.C.A001b - - - label: "DUT reads Language attribute value from TH" - wait: "readAttribute" - attribute: "Language" - PICS: DRLK.C.A0021 - - - label: "DUT reads LEDSettings attribute value from TH" - wait: "readAttribute" - attribute: "LEDSettings" - PICS: DRLK.C.A0022 - - - label: "DUT reads AutoRelockTime attribute value from TH" - wait: "readAttribute" - attribute: "AutoRelockTime" - PICS: DRLK.C.A0023 - - - label: "DUT reads SoundVolume attribute value from TH" - wait: "readAttribute" - attribute: "SoundVolume" - PICS: DRLK.C.A0024 - - - label: "DUT reads OperatingMode attribute value from TH" - wait: "readAttribute" - attribute: "OperatingMode" - PICS: DRLK.C.A0025 - - - label: "DUT reads SupportedOperatingModes attribute value from TH" - wait: "readAttribute" - attribute: "SupportedOperatingModes" - PICS: DRLK.C.A0026 - - - label: "DUT reads DefaultConfigurationRegister attribute value from TH" - wait: "readAttribute" - attribute: "DefaultConfigurationRegister" - PICS: DRLK.C.A0027 - - - label: "DUT reads EnableLocalProgramming attribute value from TH" - wait: "readAttribute" - attribute: "EnableLocalProgramming" - PICS: DRLK.C.A0028 - - - label: "DUT reads EnableOneTouchLocking attribute value from TH" - wait: "readAttribute" - attribute: "EnableOneTouchLocking" - PICS: DRLK.C.A0029 - - - label: "DUT reads EnableInsideStatusLED attribute value from TH" - wait: "readAttribute" - attribute: "EnableInsideStatusLED" - PICS: DRLK.C.A002a - - - label: "DUT reads EnablePrivacyModeButton attribute value from TH" - wait: "readAttribute" - attribute: "EnablePrivacyModeButton" - PICS: DRLK.C.A002b - - - label: "DUT reads LocalProgrammingFeatures attribute value from TH" - wait: "readAttribute" - attribute: "LocalProgrammingFeatures" - PICS: DRLK.C.A002c - - - label: "DUT reads WrongCodeEntryLimit attribute value from TH" - wait: "readAttribute" - attribute: "WrongCodeEntryLimit" - PICS: DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0030 - - - label: "DUT reads UserCodeTemporaryDisableTime attribute value from TH" - wait: "readAttribute" - attribute: "UserCodeTemporaryDisableTime" - PICS: DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0031 - - - label: "DUT reads SendPINOverTheAir attribute value from TH" - wait: "readAttribute" - attribute: "SendPINOverTheAir" - PICS: DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0032 - - - label: "DUT reads RequirePINForRemoteOperation attribute value from TH" - wait: "readAttribute" - attribute: "RequirePINforRemoteOperation" - PICS: DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033 - - - label: "DUT reads ExpiringUserTimeOut attribute value from TH" - wait: "readAttribute" - attribute: "ExpiringUserTimeout" - PICS: DRLK.C.F08 && DRLK.C.A0035 - - - label: - "DUT reads NumberOfCredentialsSupportedPerUser attribute value from TH" - wait: "readAttribute" - attribute: "NumberOfCredentialsSupportedPerUser" - PICS: DRLK.C.F08 && DRLK.C.A001c diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml deleted file mode 100644 index 561ed8fa37149f..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml +++ /dev/null @@ -1,995 +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: - 116.3.3. [TC-DRLK-3.3] Verification for the Door Lock Events [DUT - Client] - -PICS: - - DRLK.C - -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: "Note" - verification: | - "NOTE: https://github.com/project-chip/connectedhomeip/tree/master/examples/lock-app/linux#readme - Events to be executed as following - 1. Compile app using below command in connectedhomeip folder - a. ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build" - 2. Build respective app (lock-app) - 3. Commission DUT to TH - 4. Open 2nd terminal of DUT and provide the below command to obtain PID of DUT - ps -aef|grep lock-app - 5. Follow the Verification step below to generate the event in 2nd terminal of DUT " - - - "Pre-Conditions - - Before sending the Events proceed following step: - - 1. Send Set User Command and Get User for setting User. - - 2. Send Set Credential Command and Get Credential Status for setting PIN code. - - After sending Events with all condition proceed following step - - 1. Send Clear Credential and Clear User Command. - - " - disabled: true - - - label: - "Step 1: TH will initiate DoorLockAlarm Event (LockJammed scenario)" - PICS: DRLK.C.E00 - verification: | - To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in lock-app to generate the event, Vendor Dut should have capability to generate this event) - - - Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) and TH as lock-app. - - To generate the event give below command - echo '{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }' > /tmp/chip_lock_app_fifo- (PID of lock app) - - ./chip-tool doorlock read-event door-lock-alarm 1 1 --trace_decode 1 - - Verify DoorLockAlarm event response on TH(Lock-app) log: - - [1685673738.170024][2702:2704] CHIP:DMG: ReportDataMessage = - [1685673738.170087][2702:2704] CHIP:DMG: { - [1685673738.170137][2702:2704] CHIP:DMG: EventReportIBs = - [1685673738.170234][2702:2704] CHIP:DMG: [ - [1685673738.170292][2702:2704] CHIP:DMG: EventReportIB = - [1685673738.170404][2702:2704] CHIP:DMG: { - [1685673738.170467][2702:2704] CHIP:DMG: EventDataIB = - [1685673738.170538][2702:2704] CHIP:DMG: { - [1685673738.170627][2702:2704] CHIP:DMG: EventPath = - [1685673738.170701][2702:2704] CHIP:DMG: { - [1685673738.170799][2702:2704] CHIP:DMG: Endpoint = 0x1, - [1685673738.170878][2702:2704] CHIP:DMG: Cluster = 0x101, - [1685673738.170978][2702:2704] CHIP:DMG: Event = 0x0, - [1685673738.171054][2702:2704] CHIP:DMG: }, - [1685673738.171152][2702:2704] CHIP:DMG: - [1685673738.171225][2702:2704] CHIP:DMG: EventNumber = 0x10, - [1685673738.171332][2702:2704] CHIP:DMG: PriorityLevel = 0x2, - [1685673738.171407][2702:2704] CHIP:DMG: EpochTimestamp = 0x18879fbdff3, - [1685673738.171505][2702:2704] CHIP:DMG: EventData = - [1685673738.171581][2702:2704] CHIP:DMG: { - [1685673738.171681][2702:2704] CHIP:DMG: 0x0 = 0, - [1685673738.171762][2702:2704] CHIP:DMG: }, - [1685673738.171853][2702:2704] CHIP:DMG: }, - [1685673738.171934][2702:2704] CHIP:DMG: - [1685673738.172017][2702:2704] CHIP:DMG: }, - [1685673738.172095][2702:2704] CHIP:DMG: - [1685673738.172170][2702:2704] CHIP:DMG: ], - [1685673738.172246][2702:2704] CHIP:DMG: - [1685673738.172303][2702:2704] CHIP:DMG: SuppressResponse = true, - [1685673738.172382][2702:2704] CHIP:DMG: InteractionModelRevision = 1 - [1685673738.172437][2702:2704] CHIP:DMG: } - disabled: true - - - label: - "Step 2: DUT sends the Unlock Door command to the TH with valid - PINCode" - PICS: DRLK.C.C01.Tx - verification: | - ./chip-tool doorlock set-user 0 1 xxx 6452 1 0 0 1 1 --timedInteractionTimeoutMs 1000 --trace_decode 1 - - Verify TH receives Set user command with SUCCESS response on TH(lock-app) log: - - [1685673762.886102][2706:2708] CHIP:DMG: InvokeResponseMessage = - [1685673762.886157][2706:2708] CHIP:DMG: { - [1685673762.886210][2706:2708] CHIP:DMG: suppressResponse = false, - [1685673762.886267][2706:2708] CHIP:DMG: InvokeResponseIBs = - [1685673762.886340][2706:2708] CHIP:DMG: [ - [1685673762.886397][2706:2708] CHIP:DMG: InvokeResponseIB = - [1685673762.886473][2706:2708] CHIP:DMG: { - [1685673762.886533][2706:2708] CHIP:DMG: CommandStatusIB = - [1685673762.886613][2706:2708] CHIP:DMG: { - [1685673762.886680][2706:2708] CHIP:DMG: CommandPathIB = - [1685673762.886755][2706:2708] CHIP:DMG: { - [1685673762.886830][2706:2708] CHIP:DMG: EndpointId = 0x1, - [1685673762.886911][2706:2708] CHIP:DMG: ClusterId = 0x101, - [1685673762.886985][2706:2708] CHIP:DMG: CommandId = 0x1a, - [1685673762.887060][2706:2708] CHIP:DMG: }, - [1685673762.887144][2706:2708] CHIP:DMG: - [1685673762.887212][2706:2708] CHIP:DMG: StatusIB = - [1685673762.887291][2706:2708] CHIP:DMG: { - [1685673762.887367][2706:2708] CHIP:DMG: status = 0x00 (SUCCESS), - [1685673762.887444][2706:2708] CHIP:DMG: }, - [1685673762.887516][2706:2708] CHIP:DMG: - [1685673762.887582][2706:2708] CHIP:DMG: }, - [1685673762.887659][2706:2708] CHIP:DMG: - [1685673762.887719][2706:2708] CHIP:DMG: }, - [1685673762.887790][2706:2708] CHIP:DMG: - [1685673762.887845][2706:2708] CHIP:DMG: ], - [1685673762.887915][2706:2708] CHIP:DMG: - [1685673762.887971][2706:2708] CHIP:DMG: InteractionModelRevision = 1 - [1685673762.888027][2706:2708] CHIP:DMG: }, - - - - ./chip-tool doorlock set-credential 0 '{ "credentialType" : 1 , "credentialIndex" : 1 }' 123456 1 null null 1 1 --timedInteractionTimeoutMs 1000 --trace_decode 1 - - Verify TH receives Set credential command response on TH(lock-app) log: - - [1685673784.984804][2711:2713] CHIP:DMG: InvokeResponseMessage = - [1685673784.984861][2711:2713] CHIP:DMG: { - [1685673784.984941][2711:2713] CHIP:DMG: suppressResponse = false, - [1685673784.984998][2711:2713] CHIP:DMG: InvokeResponseIBs = - [1685673784.985092][2711:2713] CHIP:DMG: [ - [1685673784.985151][2711:2713] CHIP:DMG: InvokeResponseIB = - [1685673784.985249][2711:2713] CHIP:DMG: { - [1685673784.985311][2711:2713] CHIP:DMG: CommandDataIB = - [1685673784.985384][2711:2713] CHIP:DMG: { - [1685673784.985472][2711:2713] CHIP:DMG: CommandPathIB = - [1685673784.985548][2711:2713] CHIP:DMG: { - [1685673784.985647][2711:2713] CHIP:DMG: EndpointId = 0x1, - [1685673784.985728][2711:2713] CHIP:DMG: ClusterId = 0x101, - [1685673784.985852][2711:2713] CHIP:DMG: CommandId = 0x23, - [1685673784.985953][2711:2713] CHIP:DMG: }, - [1685673784.986034][2711:2713] CHIP:DMG: - [1685673784.986123][2711:2713] CHIP:DMG: CommandFields = - [1685673784.986198][2711:2713] CHIP:DMG: { - [1685673784.986295][2711:2713] CHIP:DMG: 0x0 = 0, - [1685673784.986375][2711:2713] CHIP:DMG: 0x1 = NULL - [1685673784.986478][2711:2713] CHIP:DMG: 0x2 = 2, - [1685673784.986558][2711:2713] CHIP:DMG: }, - [1685673784.986649][2711:2713] CHIP:DMG: }, - [1685673784.986728][2711:2713] CHIP:DMG: - [1685673784.986788][2711:2713] CHIP:DMG: }, - [1685673784.986892][2711:2713] CHIP:DMG: - [1685673784.986948][2711:2713] CHIP:DMG: ], - [1685673784.987044][2711:2713] CHIP:DMG: - [1685673784.987102][2711:2713] CHIP:DMG: InteractionModelRevision = 1 - [1685673784.987157][2711:2713] CHIP:DMG: }, - - - - - - ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 --PINCode 123456 --trace_decode 1 - - Verify TH receives Unlock Door command with SUCCESS response on TH(lock-app) log: - - [1685673812.339507][2715:2717] CHIP:DMG: InvokeResponseMessage = - [1685673812.339564][2715:2717] CHIP:DMG: { - [1685673812.339617][2715:2717] CHIP:DMG: suppressResponse = false, - [1685673812.339674][2715:2717] CHIP:DMG: InvokeResponseIBs = - [1685673812.339745][2715:2717] CHIP:DMG: [ - [1685673812.339801][2715:2717] CHIP:DMG: InvokeResponseIB = - [1685673812.339893][2715:2717] CHIP:DMG: { - [1685673812.339964][2715:2717] CHIP:DMG: CommandStatusIB = - [1685673812.340053][2715:2717] CHIP:DMG: { - [1685673812.340135][2715:2717] CHIP:DMG: CommandPathIB = - [1685673812.340226][2715:2717] CHIP:DMG: { - [1685673812.340320][2715:2717] CHIP:DMG: EndpointId = 0x1, - [1685673812.340415][2715:2717] CHIP:DMG: ClusterId = 0x101, - [1685673812.340510][2715:2717] CHIP:DMG: CommandId = 0x1, - [1685673812.340600][2715:2717] CHIP:DMG: }, - [1685673812.340699][2715:2717] CHIP:DMG: - [1685673812.340782][2715:2717] CHIP:DMG: StatusIB = - [1685673812.340864][2715:2717] CHIP:DMG: { - [1685673812.340947][2715:2717] CHIP:DMG: status = 0x00 (SUCCESS), - [1685673812.341028][2715:2717] CHIP:DMG: }, - [1685673812.341111][2715:2717] CHIP:DMG: - [1685673812.341185][2715:2717] CHIP:DMG: }, - [1685673812.341270][2715:2717] CHIP:DMG: - [1685673812.341341][2715:2717] CHIP:DMG: }, - [1685673812.341422][2715:2717] CHIP:DMG: - [1685673812.341479][2715:2717] CHIP:DMG: ], - [1685673812.341551][2715:2717] CHIP:DMG: - [1685673812.341606][2715:2717] CHIP:DMG: InteractionModelRevision = 1 - [1685673812.341661][2715:2717] CHIP:DMG: }, - disabled: true - - - label: - "Step 3: TH initiates DoorStateChange event with DoorState set to - DoorOpen" - PICS: DRLK.C.F05 && DRLK.C.E01 - verification: | - To trigger the event give below command in another terminal of DUT - echo '{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }' > /tmp/chip_lock_app_fifo- (PID of lock-app) - - ./chip-tool doorlock read-event door-state-change 1 1 --trace_decode 1 - - Verify DoorStateChange event response on TH(Lock-app) log: - - [1685673847.500892][2722:2724] CHIP:DMG: ReportDataMessage = - [1685673847.500955][2722:2724] CHIP:DMG: { - [1685673847.501030][2722:2724] CHIP:DMG: EventReportIBs = - [1685673847.501110][2722:2724] CHIP:DMG: [ - [1685673847.501166][2722:2724] CHIP:DMG: EventReportIB = - [1685673847.501272][2722:2724] CHIP:DMG: { - [1685673847.501334][2722:2724] CHIP:DMG: EventDataIB = - [1685673847.501428][2722:2724] CHIP:DMG: { - [1685673847.501497][2722:2724] CHIP:DMG: EventPath = - [1685673847.501592][2722:2724] CHIP:DMG: { - [1685673847.501672][2722:2724] CHIP:DMG: Endpoint = 0x1, - [1685673847.501823][2722:2724] CHIP:DMG: Cluster = 0x101, - [1685673847.501905][2722:2724] CHIP:DMG: Event = 0x1, - [1685673847.501999][2722:2724] CHIP:DMG: }, - [1685673847.502081][2722:2724] CHIP:DMG: - [1685673847.502175][2722:2724] CHIP:DMG: EventNumber = 0x1, - [1685673847.502250][2722:2724] CHIP:DMG: PriorityLevel = 0x2, - [1685673847.502345][2722:2724] CHIP:DMG: EpochTimestamp = 0x18879f130f2, - [1685673847.502419][2722:2724] CHIP:DMG: EventData = - [1685673847.502514][2722:2724] CHIP:DMG: { - [1685673847.502594][2722:2724] CHIP:DMG: 0x0 = 1, - [1685673847.502695][2722:2724] CHIP:DMG: }, - [1685673847.502767][2722:2724] CHIP:DMG: }, - [1685673847.502867][2722:2724] CHIP:DMG: - [1685673847.502930][2722:2724] CHIP:DMG: }, - [1685673847.503007][2722:2724] CHIP:DMG: - [1685673847.503085][2722:2724] CHIP:DMG: ], - [1685673847.503160][2722:2724] CHIP:DMG: - [1685673847.503249][2722:2724] CHIP:DMG: SuppressResponse = true, - [1685673847.503313][2722:2724] CHIP:DMG: InteractionModelRevision = 1 - [1685673847.503368][2722:2724] CHIP:DMG: } - disabled: true - - - label: - "Step 4: DUT sends the Lock Door command to the TH with valid PINCode" - PICS: DRLK.C.C00.Tx - verification: | - ./chip-tool doorlock lock-door 1 1 --timedInteractionTimeoutMs 1000 --PINCode 123456 --trace_decode 1 - - Verify TH receives Lock Door command with SUCCESS response on TH(lock-app) log: - - [1685673873.420811][2727:2729] CHIP:DMG: InvokeResponseMessage = - [1685673873.420869][2727:2729] CHIP:DMG: { - [1685673873.420923][2727:2729] CHIP:DMG: suppressResponse = false, - [1685673873.420980][2727:2729] CHIP:DMG: InvokeResponseIBs = - [1685673873.421052][2727:2729] CHIP:DMG: [ - [1685673873.421110][2727:2729] CHIP:DMG: InvokeResponseIB = - [1685673873.421192][2727:2729] CHIP:DMG: { - [1685673873.421255][2727:2729] CHIP:DMG: CommandStatusIB = - [1685673873.421325][2727:2729] CHIP:DMG: { - [1685673873.421392][2727:2729] CHIP:DMG: CommandPathIB = - [1685673873.421468][2727:2729] CHIP:DMG: { - [1685673873.421545][2727:2729] CHIP:DMG: EndpointId = 0x1, - [1685673873.421623][2727:2729] CHIP:DMG: ClusterId = 0x101, - [1685673873.421697][2727:2729] CHIP:DMG: CommandId = 0x0, - [1685673873.421805][2727:2729] CHIP:DMG: }, - [1685673873.421896][2727:2729] CHIP:DMG: - [1685673873.421963][2727:2729] CHIP:DMG: StatusIB = - [1685673873.422039][2727:2729] CHIP:DMG: { - [1685673873.422116][2727:2729] CHIP:DMG: status = 0x00 (SUCCESS), - [1685673873.422194][2727:2729] CHIP:DMG: }, - [1685673873.422271][2727:2729] CHIP:DMG: - [1685673873.422339][2727:2729] CHIP:DMG: }, - [1685673873.422416][2727:2729] CHIP:DMG: - [1685673873.422475][2727:2729] CHIP:DMG: }, - [1685673873.422546][2727:2729] CHIP:DMG: - [1685673873.422601][2727:2729] CHIP:DMG: ], - [1685673873.422671][2727:2729] CHIP:DMG: - [1685673873.422726][2727:2729] CHIP:DMG: InteractionModelRevision = 1 - [1685673873.422780][2727:2729] CHIP:DMG: }, - disabled: true - - - label: - "Step 5: TH will initiate LockOperation event with LockOperationType - to Lock" - PICS: DRLK.C.E02 - verification: | - ./chip-tool doorlock read-event lock-operation 1 1 --trace_decode 1 - - Verify LockOperation event response on TH(Lock-app) log: - - [1685673894.510509][2730:2732] CHIP:DMG: ReportDataMessage = - [1685673894.510571][2730:2732] CHIP:DMG: { - [1685673894.510620][2730:2732] CHIP:DMG: EventReportIBs = - [1685673894.510700][2730:2732] CHIP:DMG: [ - [1685673894.510756][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.510839][2730:2732] CHIP:DMG: { - [1685673894.510899][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.510974][2730:2732] CHIP:DMG: { - [1685673894.511041][2730:2732] CHIP:DMG: EventPath = - [1685673894.511119][2730:2732] CHIP:DMG: { - [1685673894.511194][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.511274][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.511352][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.511428][2730:2732] CHIP:DMG: }, - [1685673894.511507][2730:2732] CHIP:DMG: - [1685673894.511578][2730:2732] CHIP:DMG: EventNumber = 0x4, - [1685673894.511654][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.511728][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879f18196, - [1685673894.511802][2730:2732] CHIP:DMG: EventData = - [1685673894.511875][2730:2732] CHIP:DMG: { - [1685673894.511959][2730:2732] CHIP:DMG: 0x0 = 0, - [1685673894.512040][2730:2732] CHIP:DMG: 0x1 = 7, - [1685673894.512120][2730:2732] CHIP:DMG: 0x2 = NULL - [1685673894.512199][2730:2732] CHIP:DMG: 0x3 = 1, - [1685673894.512281][2730:2732] CHIP:DMG: 0x4 = 112233, - [1685673894.512360][2730:2732] CHIP:DMG: 0x5 = NULL - [1685673894.512439][2730:2732] CHIP:DMG: }, - [1685673894.512509][2730:2732] CHIP:DMG: }, - [1685673894.512594][2730:2732] CHIP:DMG: - [1685673894.512653][2730:2732] CHIP:DMG: }, - [1685673894.512754][2730:2732] CHIP:DMG: - [1685673894.512810][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.512894][2730:2732] CHIP:DMG: { - [1685673894.512955][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.513022][2730:2732] CHIP:DMG: { - [1685673894.513089][2730:2732] CHIP:DMG: EventPath = - [1685673894.513161][2730:2732] CHIP:DMG: { - [1685673894.513236][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.513315][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.513393][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.513467][2730:2732] CHIP:DMG: }, - [1685673894.513545][2730:2732] CHIP:DMG: - [1685673894.513615][2730:2732] CHIP:DMG: EventNumber = 0x5, - [1685673894.513689][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.513804][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879f20277, - [1685673894.513884][2730:2732] CHIP:DMG: EventData = - [1685673894.513969][2730:2732] CHIP:DMG: { - [1685673894.514047][2730:2732] CHIP:DMG: 0x0 = 1, - [1685673894.514127][2730:2732] CHIP:DMG: 0x1 = 7, - [1685673894.514206][2730:2732] CHIP:DMG: 0x2 = NULL - [1685673894.514287][2730:2732] CHIP:DMG: 0x3 = 1, - [1685673894.514368][2730:2732] CHIP:DMG: 0x4 = 112233, - [1685673894.514447][2730:2732] CHIP:DMG: 0x5 = NULL - [1685673894.514525][2730:2732] CHIP:DMG: }, - [1685673894.514594][2730:2732] CHIP:DMG: }, - [1685673894.514676][2730:2732] CHIP:DMG: - [1685673894.514736][2730:2732] CHIP:DMG: }, - [1685673894.514837][2730:2732] CHIP:DMG: - [1685673894.514894][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.514978][2730:2732] CHIP:DMG: { - [1685673894.515038][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.515106][2730:2732] CHIP:DMG: { - [1685673894.515171][2730:2732] CHIP:DMG: EventPath = - [1685673894.515243][2730:2732] CHIP:DMG: { - [1685673894.515317][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.515395][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.515468][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.515534][2730:2732] CHIP:DMG: }, - [1685673894.515609][2730:2732] CHIP:DMG: - [1685673894.515680][2730:2732] CHIP:DMG: EventNumber = 0x6, - [1685673894.515754][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.515827][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879f24737, - [1685673894.515898][2730:2732] CHIP:DMG: EventData = - [1685673894.515970][2730:2732] CHIP:DMG: { - [1685673894.516046][2730:2732] CHIP:DMG: 0x0 = 1, - [1685673894.516124][2730:2732] CHIP:DMG: 0x1 = 7, - [1685673894.516202][2730:2732] CHIP:DMG: 0x2 = NULL - [1685673894.516282][2730:2732] CHIP:DMG: 0x3 = 1, - [1685673894.516362][2730:2732] CHIP:DMG: 0x4 = 112233, - [1685673894.516441][2730:2732] CHIP:DMG: 0x5 = NULL - [1685673894.516519][2730:2732] CHIP:DMG: }, - [1685673894.516589][2730:2732] CHIP:DMG: }, - [1685673894.516672][2730:2732] CHIP:DMG: - [1685673894.516731][2730:2732] CHIP:DMG: }, - [1685673894.516830][2730:2732] CHIP:DMG: - [1685673894.516886][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.516970][2730:2732] CHIP:DMG: { - [1685673894.517030][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.517097][2730:2732] CHIP:DMG: { - [1685673894.517162][2730:2732] CHIP:DMG: EventPath = - [1685673894.517234][2730:2732] CHIP:DMG: { - [1685673894.517308][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.517386][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.517456][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.517528][2730:2732] CHIP:DMG: }, - [1685673894.517604][2730:2732] CHIP:DMG: - [1685673894.517674][2730:2732] CHIP:DMG: EventNumber = 0x9, - [1685673894.517747][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.517981][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879f331a0, - [1685673894.518056][2730:2732] CHIP:DMG: EventData = - [1685673894.518127][2730:2732] CHIP:DMG: { - [1685673894.518204][2730:2732] CHIP:DMG: 0x0 = 0, - [1685673894.518284][2730:2732] CHIP:DMG: 0x1 = 4, - [1685673894.518363][2730:2732] CHIP:DMG: 0x2 = NULL - [1685673894.518443][2730:2732] CHIP:DMG: 0x3 = NULL - [1685673894.518535][2730:2732] CHIP:DMG: 0x4 = NULL - [1685673894.518625][2730:2732] CHIP:DMG: 0x5 = NULL - [1685673894.518704][2730:2732] CHIP:DMG: }, - [1685673894.518774][2730:2732] CHIP:DMG: }, - [1685673894.518859][2730:2732] CHIP:DMG: - [1685673894.518918][2730:2732] CHIP:DMG: }, - [1685673894.519023][2730:2732] CHIP:DMG: - [1685673894.519080][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.519167][2730:2732] CHIP:DMG: { - [1685673894.519228][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.519295][2730:2732] CHIP:DMG: { - [1685673894.519361][2730:2732] CHIP:DMG: EventPath = - [1685673894.519434][2730:2732] CHIP:DMG: { - [1685673894.519509][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.519588][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.519666][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.519740][2730:2732] CHIP:DMG: }, - [1685673894.519816][2730:2732] CHIP:DMG: - [1685673894.519888][2730:2732] CHIP:DMG: EventNumber = 0x13, - [1685673894.519962][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.520036][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879fd2160, - [1685673894.520108][2730:2732] CHIP:DMG: EventData = - [1685673894.520181][2730:2732] CHIP:DMG: { - [1685673894.520256][2730:2732] CHIP:DMG: 0x0 = 1, - [1685673894.520338][2730:2732] CHIP:DMG: 0x1 = 7, - [1685673894.520420][2730:2732] CHIP:DMG: 0x2 = 1, - [1685673894.520503][2730:2732] CHIP:DMG: 0x3 = 1, - [1685673894.520584][2730:2732] CHIP:DMG: 0x4 = 112233, - [1685673894.520661][2730:2732] CHIP:DMG: 0x5 = [ - [1685673894.520740][2730:2732] CHIP:DMG: - [1685673894.520827][2730:2732] CHIP:DMG: { - [1685673894.520916][2730:2732] CHIP:DMG: 0x0 = 1, - [1685673894.521014][2730:2732] CHIP:DMG: 0x1 = 1, - [1685673894.521114][2730:2732] CHIP:DMG: }, - [1685673894.521199][2730:2732] CHIP:DMG: ], - [1685673894.521280][2730:2732] CHIP:DMG: }, - [1685673894.521350][2730:2732] CHIP:DMG: }, - [1685673894.521437][2730:2732] CHIP:DMG: - [1685673894.521498][2730:2732] CHIP:DMG: }, - [1685673894.521600][2730:2732] CHIP:DMG: - [1685673894.521656][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.521740][2730:2732] CHIP:DMG: { - [1685673894.521832][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.521904][2730:2732] CHIP:DMG: { - [1685673894.521971][2730:2732] CHIP:DMG: EventPath = - [1685673894.522044][2730:2732] CHIP:DMG: { - [1685673894.522119][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.522198][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.522275][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.522350][2730:2732] CHIP:DMG: }, - [1685673894.522426][2730:2732] CHIP:DMG: - [1685673894.522496][2730:2732] CHIP:DMG: EventNumber = 0x14, - [1685673894.522570][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.522646][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879fe0bcf, - [1685673894.522718][2730:2732] CHIP:DMG: EventData = - [1685673894.522790][2730:2732] CHIP:DMG: { - [1685673894.522868][2730:2732] CHIP:DMG: 0x0 = 0, - [1685673894.522948][2730:2732] CHIP:DMG: 0x1 = 4, - [1685673894.523026][2730:2732] CHIP:DMG: 0x2 = NULL - [1685673894.523105][2730:2732] CHIP:DMG: 0x3 = NULL - [1685673894.523184][2730:2732] CHIP:DMG: 0x4 = NULL - [1685673894.523262][2730:2732] CHIP:DMG: 0x5 = NULL - [1685673894.523341][2730:2732] CHIP:DMG: }, - [1685673894.523409][2730:2732] CHIP:DMG: }, - [1685673894.523491][2730:2732] CHIP:DMG: - [1685673894.523551][2730:2732] CHIP:DMG: }, - [1685673894.523654][2730:2732] CHIP:DMG: - [1685673894.523710][2730:2732] CHIP:DMG: EventReportIB = - [1685673894.523798][2730:2732] CHIP:DMG: { - [1685673894.523858][2730:2732] CHIP:DMG: EventDataIB = - [1685673894.523925][2730:2732] CHIP:DMG: { - [1685673894.523995][2730:2732] CHIP:DMG: EventPath = - [1685673894.524067][2730:2732] CHIP:DMG: { - [1685673894.524142][2730:2732] CHIP:DMG: Endpoint = 0x1, - [1685673894.524221][2730:2732] CHIP:DMG: Cluster = 0x101, - [1685673894.524298][2730:2732] CHIP:DMG: Event = 0x2, - [1685673894.524372][2730:2732] CHIP:DMG: }, - [1685673894.524449][2730:2732] CHIP:DMG: - [1685673894.524518][2730:2732] CHIP:DMG: EventNumber = 0x15, - [1685673894.524593][2730:2732] CHIP:DMG: PriorityLevel = 0x2, - [1685673894.524666][2730:2732] CHIP:DMG: EpochTimestamp = 0x18879fe0fff, - [1685673894.524739][2730:2732] CHIP:DMG: EventData = - [1685673894.524810][2730:2732] CHIP:DMG: { - [1685673894.524887][2730:2732] CHIP:DMG: 0x0 = 0, - [1685673894.524966][2730:2732] CHIP:DMG: 0x1 = 7, - [1685673894.525048][2730:2732] CHIP:DMG: 0x2 = 1, - [1685673894.525128][2730:2732] CHIP:DMG: 0x3 = 1, - [1685673894.525210][2730:2732] CHIP:DMG: 0x4 = 112233, - [1685673894.525287][2730:2732] CHIP:DMG: 0x5 = [ - [1685673894.525360][2730:2732] CHIP:DMG: - [1685673894.525446][2730:2732] CHIP:DMG: { - [1685673894.525534][2730:2732] CHIP:DMG: 0x0 = 1, - [1685673894.525618][2730:2732] CHIP:DMG: 0x1 = 1, - [1685673894.525707][2730:2732] CHIP:DMG: }, - [1685673894.525808][2730:2732] CHIP:DMG: ], - [1685673894.525888][2730:2732] CHIP:DMG: }, - [1685673894.525958][2730:2732] CHIP:DMG: }, - [1685673894.526045][2730:2732] CHIP:DMG: - [1685673894.526106][2730:2732] CHIP:DMG: }, - [1685673894.526187][2730:2732] CHIP:DMG: - [1685673894.526243][2730:2732] CHIP:DMG: ], - [1685673894.526435][2730:2732] CHIP:DMG: - [1685673894.526494][2730:2732] CHIP:DMG: SuppressResponse = true, - [1685673894.526552][2730:2732] CHIP:DMG: InteractionModelRevision = 1 - [1685673894.526606][2730:2732] CHIP:DMG: } - disabled: true - - - label: - "Step 6: DUT sends the Unlock Door command to the TH with Invalid - PINCode" - PICS: DRLK.C.C01.Tx - verification: | - ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 --PINCode 12345678 --trace_decode 1 - - Verify TH receives Unlock Door command with FAILURE response on TH(lock-app) log: - - [1685673944.179783][2739:2741] CHIP:DMG: InvokeResponseMessage = - [1685673944.179842][2739:2741] CHIP:DMG: { - [1685673944.179896][2739:2741] CHIP:DMG: suppressResponse = false, - [1685673944.179954][2739:2741] CHIP:DMG: InvokeResponseIBs = - [1685673944.180049][2739:2741] CHIP:DMG: [ - [1685673944.180108][2739:2741] CHIP:DMG: InvokeResponseIB = - [1685673944.180185][2739:2741] CHIP:DMG: { - [1685673944.180267][2739:2741] CHIP:DMG: CommandStatusIB = - [1685673944.180332][2739:2741] CHIP:DMG: { - [1685673944.180420][2739:2741] CHIP:DMG: CommandPathIB = - [1685673944.180497][2739:2741] CHIP:DMG: { - [1685673944.180594][2739:2741] CHIP:DMG: EndpointId = 0x1, - [1685673944.180676][2739:2741] CHIP:DMG: ClusterId = 0x101, - [1685673944.180776][2739:2741] CHIP:DMG: CommandId = 0x1, - [1685673944.180853][2739:2741] CHIP:DMG: }, - [1685673944.180960][2739:2741] CHIP:DMG: - [1685673944.181030][2739:2741] CHIP:DMG: StatusIB = - [1685673944.181105][2739:2741] CHIP:DMG: { - [1685673944.181180][2739:2741] CHIP:DMG: status = 0x01 (FAILURE), - [1685673944.181280][2739:2741] CHIP:DMG: }, - [1685673944.181355][2739:2741] CHIP:DMG: - [1685673944.181446][2739:2741] CHIP:DMG: }, - [1685673944.181524][2739:2741] CHIP:DMG: - [1685673944.181584][2739:2741] CHIP:DMG: }, - [1685673944.181686][2739:2741] CHIP:DMG: - [1685673944.181743][2739:2741] CHIP:DMG: ], - [1685673944.181884][2739:2741] CHIP:DMG: - [1685673944.181943][2739:2741] CHIP:DMG: InteractionModelRevision = 1 - [1685673944.181998][2739:2741] CHIP:DMG: }, - disabled: true - - - label: - "Step 7: TH will initiate LockOperationError event by causing Lock - error using invalid PIN" - PICS: DRLK.C.E03 - verification: | - ./chip-tool doorlock read-event lock-operation-error 1 1 --trace_decode 1 - - Verify LockOperationError event response on TH(Lock-app) log: - - [1685673961.918640][2743:2745] CHIP:DMG: ReportDataMessage = - [1685673961.918701][2743:2745] CHIP:DMG: { - [1685673961.918750][2743:2745] CHIP:DMG: EventReportIBs = - [1685673961.918831][2743:2745] CHIP:DMG: [ - [1685673961.918888][2743:2745] CHIP:DMG: EventReportIB = - [1685673961.918974][2743:2745] CHIP:DMG: { - [1685673961.919034][2743:2745] CHIP:DMG: EventDataIB = - [1685673961.919105][2743:2745] CHIP:DMG: { - [1685673961.919172][2743:2745] CHIP:DMG: EventPath = - [1685673961.919246][2743:2745] CHIP:DMG: { - [1685673961.919321][2743:2745] CHIP:DMG: Endpoint = 0x1, - [1685673961.919401][2743:2745] CHIP:DMG: Cluster = 0x101, - [1685673961.919479][2743:2745] CHIP:DMG: Event = 0x3, - [1685673961.919555][2743:2745] CHIP:DMG: }, - [1685673961.919634][2743:2745] CHIP:DMG: - [1685673961.919705][2743:2745] CHIP:DMG: EventNumber = 0x16, - [1685673961.919780][2743:2745] CHIP:DMG: PriorityLevel = 0x2, - [1685673961.919856][2743:2745] CHIP:DMG: EpochTimestamp = 0x18879ff2466, - [1685673961.919931][2743:2745] CHIP:DMG: EventData = - [1685673961.920006][2743:2745] CHIP:DMG: { - [1685673961.920084][2743:2745] CHIP:DMG: 0x0 = 1, - [1685673961.920166][2743:2745] CHIP:DMG: 0x1 = 7, - [1685673961.920241][2743:2745] CHIP:DMG: 0x2 = 1, - [1685673961.920335][2743:2745] CHIP:DMG: 0x3 = NULL - [1685673961.920416][2743:2745] CHIP:DMG: 0x4 = 1, - [1685673961.920499][2743:2745] CHIP:DMG: 0x5 = 112233, - [1685673961.920580][2743:2745] CHIP:DMG: 0x6 = NULL - [1685673961.920659][2743:2745] CHIP:DMG: }, - [1685673961.920730][2743:2745] CHIP:DMG: }, - [1685673961.920815][2743:2745] CHIP:DMG: - [1685673961.920878][2743:2745] CHIP:DMG: }, - [1685673961.920958][2743:2745] CHIP:DMG: - [1685673961.921013][2743:2745] CHIP:DMG: ], - [1685673961.921092][2743:2745] CHIP:DMG: - [1685673961.921150][2743:2745] CHIP:DMG: SuppressResponse = true, - [1685673961.921209][2743:2745] CHIP:DMG: InteractionModelRevision = 1 - [1685673961.921263][2743:2745] CHIP:DMG: } - disabled: true - - - label: "Step 8: DUT sends Set User command to TH" - PICS: DRLK.C.F08 && DRLK.C.C1a.Tx - verification: | - ./chip-tool doorlock set-user 0 3 xxx 6452 1 0 0 1 1 --timedInteractionTimeoutMs 1000 --trace_decode 1 - - Verify TH receives Set User command with SUCCESS response on TH(lock-app) log: - - [1685673982.319643][2748:2750] CHIP:DMG: InvokeResponseMessage = - [1685673982.319698][2748:2750] CHIP:DMG: { - [1685673982.319752][2748:2750] CHIP:DMG: suppressResponse = false, - [1685673982.319808][2748:2750] CHIP:DMG: InvokeResponseIBs = - [1685673982.319881][2748:2750] CHIP:DMG: [ - [1685673982.319938][2748:2750] CHIP:DMG: InvokeResponseIB = - [1685673982.320016][2748:2750] CHIP:DMG: { - [1685673982.320072][2748:2750] CHIP:DMG: CommandStatusIB = - [1685673982.320148][2748:2750] CHIP:DMG: { - [1685673982.320211][2748:2750] CHIP:DMG: CommandPathIB = - [1685673982.320285][2748:2750] CHIP:DMG: { - [1685673982.320361][2748:2750] CHIP:DMG: EndpointId = 0x1, - [1685673982.320441][2748:2750] CHIP:DMG: ClusterId = 0x101, - [1685673982.320519][2748:2750] CHIP:DMG: CommandId = 0x1a, - [1685673982.320613][2748:2750] CHIP:DMG: }, - [1685673982.320719][2748:2750] CHIP:DMG: - [1685673982.320789][2748:2750] CHIP:DMG: StatusIB = - [1685673982.320863][2748:2750] CHIP:DMG: { - [1685673982.320937][2748:2750] CHIP:DMG: status = 0x00 (SUCCESS), - [1685673982.321009][2748:2750] CHIP:DMG: }, - [1685673982.321084][2748:2750] CHIP:DMG: - [1685673982.321153][2748:2750] CHIP:DMG: }, - [1685673982.321228][2748:2750] CHIP:DMG: - [1685673982.321291][2748:2750] CHIP:DMG: }, - [1685673982.321361][2748:2750] CHIP:DMG: - [1685673982.321417][2748:2750] CHIP:DMG: ], - [1685673982.321486][2748:2750] CHIP:DMG: - [1685673982.321542][2748:2750] CHIP:DMG: InteractionModelRevision = 1 - [1685673982.321598][2748:2750] CHIP:DMG: }, - disabled: true - - - label: - "Step 9: TH initiates LockUserChange event by adding the UserIndex - using Set User command" - PICS: DRLK.C.E04 - verification: | - ./chip-tool doorlock read-event lock-user-change 1 1 --trace_decode 1 - - Verify LockUserChange event response on TH(Lock-app) log: - - [1685674004.671171][2752:2754] CHIP:DMG: ReportDataMessage = - [1685674004.671235][2752:2754] CHIP:DMG: { - [1685674004.671283][2752:2754] CHIP:DMG: EventReportIBs = - [1685674004.671364][2752:2754] CHIP:DMG: [ - [1685674004.671421][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.671517][2752:2754] CHIP:DMG: { - [1685674004.671578][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.671654][2752:2754] CHIP:DMG: { - [1685674004.671722][2752:2754] CHIP:DMG: EventPath = - [1685674004.671799][2752:2754] CHIP:DMG: { - [1685674004.671876][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.671956][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.672035][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.672111][2752:2754] CHIP:DMG: }, - [1685674004.672191][2752:2754] CHIP:DMG: - [1685674004.672262][2752:2754] CHIP:DMG: EventNumber = 0x8, - [1685674004.672336][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.672412][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f2ec55, - [1685674004.672486][2752:2754] CHIP:DMG: EventData = - [1685674004.672559][2752:2754] CHIP:DMG: { - [1685674004.672637][2752:2754] CHIP:DMG: 0x0 = 3, - [1685674004.672718][2752:2754] CHIP:DMG: 0x1 = 0, - [1685674004.672800][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.672880][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.672961][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.673043][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.673125][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.673204][2752:2754] CHIP:DMG: }, - [1685674004.673274][2752:2754] CHIP:DMG: }, - [1685674004.673361][2752:2754] CHIP:DMG: - [1685674004.673420][2752:2754] CHIP:DMG: }, - [1685674004.673523][2752:2754] CHIP:DMG: - [1685674004.673580][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.673667][2752:2754] CHIP:DMG: { - [1685674004.673729][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.673851][2752:2754] CHIP:DMG: { - [1685674004.673925][2752:2754] CHIP:DMG: EventPath = - [1685674004.673995][2752:2754] CHIP:DMG: { - [1685674004.674069][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.674149][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.674229][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.674304][2752:2754] CHIP:DMG: }, - [1685674004.674377][2752:2754] CHIP:DMG: - [1685674004.674448][2752:2754] CHIP:DMG: EventNumber = 0xa, - [1685674004.674523][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.674593][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f3ba0b, - [1685674004.674665][2752:2754] CHIP:DMG: EventData = - [1685674004.674738][2752:2754] CHIP:DMG: { - [1685674004.674813][2752:2754] CHIP:DMG: 0x0 = 3, - [1685674004.674894][2752:2754] CHIP:DMG: 0x1 = 1, - [1685674004.674974][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.675054][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.675134][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.675215][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.675293][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.675371][2752:2754] CHIP:DMG: }, - [1685674004.675439][2752:2754] CHIP:DMG: }, - [1685674004.675521][2752:2754] CHIP:DMG: - [1685674004.675580][2752:2754] CHIP:DMG: }, - [1685674004.675683][2752:2754] CHIP:DMG: - [1685674004.675739][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.675826][2752:2754] CHIP:DMG: { - [1685674004.675887][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.675955][2752:2754] CHIP:DMG: { - [1685674004.676021][2752:2754] CHIP:DMG: EventPath = - [1685674004.676094][2752:2754] CHIP:DMG: { - [1685674004.676168][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.676247][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.676324][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.676398][2752:2754] CHIP:DMG: }, - [1685674004.676474][2752:2754] CHIP:DMG: - [1685674004.676545][2752:2754] CHIP:DMG: EventNumber = 0xb, - [1685674004.676620][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.676686][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f3faa3, - [1685674004.676750][2752:2754] CHIP:DMG: EventData = - [1685674004.676824][2752:2754] CHIP:DMG: { - [1685674004.676898][2752:2754] CHIP:DMG: 0x0 = 4, - [1685674004.676979][2752:2754] CHIP:DMG: 0x1 = 0, - [1685674004.677059][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.677140][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.677220][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.677299][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.677379][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.677457][2752:2754] CHIP:DMG: }, - [1685674004.677526][2752:2754] CHIP:DMG: }, - [1685674004.677611][2752:2754] CHIP:DMG: - [1685674004.677671][2752:2754] CHIP:DMG: }, - [1685674004.677808][2752:2754] CHIP:DMG: - [1685674004.677872][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.677957][2752:2754] CHIP:DMG: { - [1685674004.678017][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.678085][2752:2754] CHIP:DMG: { - [1685674004.678151][2752:2754] CHIP:DMG: EventPath = - [1685674004.678225][2752:2754] CHIP:DMG: { - [1685674004.678299][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.678379][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.678458][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.678532][2752:2754] CHIP:DMG: }, - [1685674004.678610][2752:2754] CHIP:DMG: - [1685674004.678681][2752:2754] CHIP:DMG: EventNumber = 0xc, - [1685674004.678755][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.678829][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f48d3b, - [1685674004.678900][2752:2754] CHIP:DMG: EventData = - [1685674004.678972][2752:2754] CHIP:DMG: { - [1685674004.679047][2752:2754] CHIP:DMG: 0x0 = 4, - [1685674004.679129][2752:2754] CHIP:DMG: 0x1 = 1, - [1685674004.679210][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.679290][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.679371][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.679452][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.679532][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.679610][2752:2754] CHIP:DMG: }, - [1685674004.679681][2752:2754] CHIP:DMG: }, - [1685674004.679763][2752:2754] CHIP:DMG: - [1685674004.679823][2752:2754] CHIP:DMG: }, - [1685674004.679926][2752:2754] CHIP:DMG: - [1685674004.679982][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.680067][2752:2754] CHIP:DMG: { - [1685674004.680127][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.680197][2752:2754] CHIP:DMG: { - [1685674004.680264][2752:2754] CHIP:DMG: EventPath = - [1685674004.680336][2752:2754] CHIP:DMG: { - [1685674004.680411][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.680489][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.680568][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.680642][2752:2754] CHIP:DMG: }, - [1685674004.680720][2752:2754] CHIP:DMG: - [1685674004.680788][2752:2754] CHIP:DMG: EventNumber = 0xd, - [1685674004.680862][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.680936][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f5cf3e, - [1685674004.681008][2752:2754] CHIP:DMG: EventData = - [1685674004.681081][2752:2754] CHIP:DMG: { - [1685674004.681158][2752:2754] CHIP:DMG: 0x0 = 2, - [1685674004.681257][2752:2754] CHIP:DMG: 0x1 = 0, - [1685674004.681344][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.681424][2752:2754] CHIP:DMG: 0x3 = 2, - [1685674004.681505][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.681585][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.681664][2752:2754] CHIP:DMG: 0x6 = 2, - [1685674004.681742][2752:2754] CHIP:DMG: }, - [1685674004.681887][2752:2754] CHIP:DMG: }, - [1685674004.681980][2752:2754] CHIP:DMG: - [1685674004.682039][2752:2754] CHIP:DMG: }, - [1685674004.682140][2752:2754] CHIP:DMG: - [1685674004.682196][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.682281][2752:2754] CHIP:DMG: { - [1685674004.682341][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.682407][2752:2754] CHIP:DMG: { - [1685674004.682470][2752:2754] CHIP:DMG: EventPath = - [1685674004.682543][2752:2754] CHIP:DMG: { - [1685674004.682617][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.682697][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.682773][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.682847][2752:2754] CHIP:DMG: }, - [1685674004.682923][2752:2754] CHIP:DMG: - [1685674004.682994][2752:2754] CHIP:DMG: EventNumber = 0xe, - [1685674004.683068][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.683142][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f67e3f, - [1685674004.683213][2752:2754] CHIP:DMG: EventData = - [1685674004.683287][2752:2754] CHIP:DMG: { - [1685674004.683359][2752:2754] CHIP:DMG: 0x0 = 2, - [1685674004.683438][2752:2754] CHIP:DMG: 0x1 = 1, - [1685674004.683518][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.683599][2752:2754] CHIP:DMG: 0x3 = 2, - [1685674004.683680][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.683761][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.683842][2752:2754] CHIP:DMG: 0x6 = 2, - [1685674004.683920][2752:2754] CHIP:DMG: }, - [1685674004.683990][2752:2754] CHIP:DMG: }, - [1685674004.684075][2752:2754] CHIP:DMG: - [1685674004.684134][2752:2754] CHIP:DMG: }, - [1685674004.684235][2752:2754] CHIP:DMG: - [1685674004.684291][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.684376][2752:2754] CHIP:DMG: { - [1685674004.684436][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.684504][2752:2754] CHIP:DMG: { - [1685674004.684570][2752:2754] CHIP:DMG: EventPath = - [1685674004.684641][2752:2754] CHIP:DMG: { - [1685674004.684716][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.684791][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.684868][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.684942][2752:2754] CHIP:DMG: }, - [1685674004.685026][2752:2754] CHIP:DMG: - [1685674004.685096][2752:2754] CHIP:DMG: EventNumber = 0xf, - [1685674004.685171][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.685246][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879f7dd82, - [1685674004.685317][2752:2754] CHIP:DMG: EventData = - [1685674004.685391][2752:2754] CHIP:DMG: { - [1685674004.685467][2752:2754] CHIP:DMG: 0x0 = 2, - [1685674004.685548][2752:2754] CHIP:DMG: 0x1 = 1, - [1685674004.685630][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.685710][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.685831][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.685913][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.685991][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.686069][2752:2754] CHIP:DMG: }, - [1685674004.686140][2752:2754] CHIP:DMG: }, - [1685674004.686222][2752:2754] CHIP:DMG: - [1685674004.686281][2752:2754] CHIP:DMG: }, - [1685674004.686383][2752:2754] CHIP:DMG: - [1685674004.686439][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.686524][2752:2754] CHIP:DMG: { - [1685674004.686585][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.686652][2752:2754] CHIP:DMG: { - [1685674004.686718][2752:2754] CHIP:DMG: EventPath = - [1685674004.686791][2752:2754] CHIP:DMG: { - [1685674004.686865][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.686945][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.687023][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.687097][2752:2754] CHIP:DMG: }, - [1685674004.687174][2752:2754] CHIP:DMG: - [1685674004.687241][2752:2754] CHIP:DMG: EventNumber = 0x11, - [1685674004.687315][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.687388][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879fc602b, - [1685674004.687459][2752:2754] CHIP:DMG: EventData = - [1685674004.687531][2752:2754] CHIP:DMG: { - [1685674004.687607][2752:2754] CHIP:DMG: 0x0 = 2, - [1685674004.687687][2752:2754] CHIP:DMG: 0x1 = 0, - [1685674004.687767][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.687848][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.687928][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.688008][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.688089][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.688162][2752:2754] CHIP:DMG: }, - [1685674004.688232][2752:2754] CHIP:DMG: }, - [1685674004.688316][2752:2754] CHIP:DMG: - [1685674004.688375][2752:2754] CHIP:DMG: }, - [1685674004.688477][2752:2754] CHIP:DMG: - [1685674004.688533][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.688617][2752:2754] CHIP:DMG: { - [1685674004.688677][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.688745][2752:2754] CHIP:DMG: { - [1685674004.688811][2752:2754] CHIP:DMG: EventPath = - [1685674004.688880][2752:2754] CHIP:DMG: { - [1685674004.688954][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.689033][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.689111][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.689185][2752:2754] CHIP:DMG: }, - [1685674004.689262][2752:2754] CHIP:DMG: - [1685674004.689332][2752:2754] CHIP:DMG: EventNumber = 0x12, - [1685674004.689403][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.689473][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879fcb681, - [1685674004.689545][2752:2754] CHIP:DMG: EventData = - [1685674004.689617][2752:2754] CHIP:DMG: { - [1685674004.689693][2752:2754] CHIP:DMG: 0x0 = 6, - [1685674004.689882][2752:2754] CHIP:DMG: 0x1 = 0, - [1685674004.689965][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.690046][2752:2754] CHIP:DMG: 0x3 = 1, - [1685674004.690126][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.690205][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.690285][2752:2754] CHIP:DMG: 0x6 = 1, - [1685674004.690362][2752:2754] CHIP:DMG: }, - [1685674004.690433][2752:2754] CHIP:DMG: }, - [1685674004.690515][2752:2754] CHIP:DMG: - [1685674004.690574][2752:2754] CHIP:DMG: }, - [1685674004.690677][2752:2754] CHIP:DMG: - [1685674004.690733][2752:2754] CHIP:DMG: EventReportIB = - [1685674004.690819][2752:2754] CHIP:DMG: { - [1685674004.690879][2752:2754] CHIP:DMG: EventDataIB = - [1685674004.690948][2752:2754] CHIP:DMG: { - [1685674004.691015][2752:2754] CHIP:DMG: EventPath = - [1685674004.691095][2752:2754] CHIP:DMG: { - [1685674004.691171][2752:2754] CHIP:DMG: Endpoint = 0x1, - [1685674004.691249][2752:2754] CHIP:DMG: Cluster = 0x101, - [1685674004.691328][2752:2754] CHIP:DMG: Event = 0x4, - [1685674004.691403][2752:2754] CHIP:DMG: }, - [1685674004.691481][2752:2754] CHIP:DMG: - [1685674004.691551][2752:2754] CHIP:DMG: EventNumber = 0x17, - [1685674004.691626][2752:2754] CHIP:DMG: PriorityLevel = 0x1, - [1685674004.691701][2752:2754] CHIP:DMG: EpochTimestamp = 0x18879ffb961, - [1685674004.691772][2752:2754] CHIP:DMG: EventData = - [1685674004.691845][2752:2754] CHIP:DMG: { - [1685674004.691921][2752:2754] CHIP:DMG: 0x0 = 2, - [1685674004.692002][2752:2754] CHIP:DMG: 0x1 = 0, - [1685674004.692082][2752:2754] CHIP:DMG: 0x2 = 7, - [1685674004.692163][2752:2754] CHIP:DMG: 0x3 = 3, - [1685674004.692245][2752:2754] CHIP:DMG: 0x4 = 1, - [1685674004.692326][2752:2754] CHIP:DMG: 0x5 = 112233, - [1685674004.692407][2752:2754] CHIP:DMG: 0x6 = 3, - [1685674004.692486][2752:2754] CHIP:DMG: }, - [1685674004.692555][2752:2754] CHIP:DMG: }, - [1685674004.692641][2752:2754] CHIP:DMG: - [1685674004.692700][2752:2754] CHIP:DMG: }, - [1685674004.692779][2752:2754] CHIP:DMG: - [1685674004.692835][2752:2754] CHIP:DMG: ], - [1685674004.693080][2752:2754] CHIP:DMG: - [1685674004.693138][2752:2754] CHIP:DMG: SuppressResponse = true, - [1685674004.693195][2752:2754] CHIP:DMG: InteractionModelRevision = 1 - [1685674004.693249][2752:2754] CHIP:DMG: } - disabled: true - - - label: - "Step 10: DUT sends the Unbolt Door command to the TH with valid - PINCode" - PICS: DRLK.C.C27.Tx - verification: | - ./chip-tool doorlock unbolt-door 1 1 --timedInteractionTimeoutMs 1000 --PINCode 123456 --trace_decode 1 - - Verify TH receives Unbolt Door command with SUCCESS response on TH(lock-app) log: - - [1689767521.623730][2330:2332] CHIP:DMG: ICR moving to [ResponseRe] - [1689767521.623822][2330:2332] CHIP:DMG: InvokeResponseMessage = - [1689767521.623877][2330:2332] CHIP:DMG: { - [1689767521.623929][2330:2332] CHIP:DMG: suppressResponse = false, - [1689767521.623983][2330:2332] CHIP:DMG: InvokeResponseIBs = - [1689767521.624054][2330:2332] CHIP:DMG: [ - [1689767521.624109][2330:2332] CHIP:DMG: InvokeResponseIB = - [1689767521.624184][2330:2332] CHIP:DMG: { - [1689767521.624243][2330:2332] CHIP:DMG: CommandStatusIB = - [1689767521.624312][2330:2332] CHIP:DMG: { - [1689767521.624375][2330:2332] CHIP:DMG: CommandPathIB = - [1689767521.624459][2330:2332] CHIP:DMG: { - [1689767521.624537][2330:2332] CHIP:DMG: EndpointId = 0x1, - [1689767521.624616][2330:2332] CHIP:DMG: ClusterId = 0x101, - [1689767521.624761][2330:2332] CHIP:DMG: CommandId = 0x27, - [1689767521.624838][2330:2332] CHIP:DMG: }, - [1689767521.624921][2330:2332] CHIP:DMG: - [1689767521.624986][2330:2332] CHIP:DMG: StatusIB = - [1689767521.625059][2330:2332] CHIP:DMG: { - [1689767521.625135][2330:2332] CHIP:DMG: status = 0x00 (SUCCESS), - [1689767521.625209][2330:2332] CHIP:DMG: }, - [1689767521.625283][2330:2332] CHIP:DMG: - [1689767521.625346][2330:2332] CHIP:DMG: }, - [1689767521.625418][2330:2332] CHIP:DMG: - [1689767521.625476][2330:2332] CHIP:DMG: }, - [1689767521.625547][2330:2332] CHIP:DMG: - [1689767521.625601][2330:2332] CHIP:DMG: ], - [1689767521.625671][2330:2332] CHIP:DMG: - [1689767521.625725][2330:2332] CHIP:DMG: InteractionModelRevision = 1 - [1689767521.625779][2330:2332] CHIP:DMG: }, - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_FAN_3_2.yaml b/src/app/tests/suites/certification/Test_TC_FAN_3_2.yaml index 00c34297c69e15..4375b03cec064b 100644 --- a/src/app/tests/suites/certification/Test_TC_FAN_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_FAN_3_2.yaml @@ -40,8 +40,8 @@ tests: saveAs: rSpeedMax - label: - "Step 3: TH writes TH writes to the DUT the a value less than or equal - to the value read in step 2" + "Step 3: TH writes to the DUT the a value less than or equal to the + value read in step 2" PICS: FAN.S.A0005 command: "writeAttribute" attribute: "SpeedSetting" @@ -57,14 +57,14 @@ tests: - name: "ms" value: 1000 - - label: "Step 4: TH reads from the DUT the the SpeedSetting attribute" + - label: "Step 4: TH reads from the DUT the SpeedSetting attribute" PICS: FAN.S.A0005 command: "readAttribute" attribute: "SpeedSetting" response: value: rSpeedMax - - label: "Step 5: TH reads from the DUT the the SpeedCurrent attribute" + - label: "Step 5: TH reads from the DUT the SpeedCurrent attribute" PICS: FAN.S.A0006 command: "readAttribute" attribute: "SpeedCurrent" diff --git a/src/app/tests/suites/certification/Test_TC_FAN_3_3.yaml b/src/app/tests/suites/certification/Test_TC_FAN_3_3.yaml deleted file mode 100644 index 091d097bfa0c7f..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_FAN_3_3.yaml +++ /dev/null @@ -1,175 +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: 263.2.8. [TC-FAN-3.3] Optional rock functionality with DUT as Server - -PICS: - - FAN.S - - FAN.S.F03 - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Step 1: Commission DUT to TH" - verification: | - - disabled: true - - - label: "Step 2: TH reads from the DUT the RockSupport attribute and store" - PICS: FAN.S.A0007 - verification: | - ./chip-tool fancontrol read rock-support 1 1 - - On TH(chip-tool), Verify the RockSupport attribute value is in the range of 1 to 7. - - [1689757789.384816][23225:23227] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0007 DataVersion: 1958137194 - [1689757789.384890][23225:23227] CHIP:TOO: RockSupport: 3 - disabled: true - - - label: - "Step 3: If the RockSupport attribute read above has bit 0 set, then - TH writes to the DUT the RockSetting attribute with 0x01" - PICS: FAN.S.A0008( - verification: | - ./chip-tool fancontrol write rock-setting 1 1 1 - - On TH(chip-tool), Verify the SUCCESS response for RockSetting attribute write function - - [1685104690.737557][30753:30755] CHIP:DMG: Endpoint = 0x1, - [1685104690.737632][30753:30755] CHIP:DMG: Cluster = 0x202, - [1685104690.737707][30753:30755] CHIP:DMG: Attribute = 0x0000_0008, - [1685104690.737825][30753:30755] CHIP:DMG: } - [1685104690.737911][30753:30755] CHIP:DMG: - [1685104690.737980][30753:30755] CHIP:DMG: StatusIB = - [1685104690.738051][30753:30755] CHIP:DMG: { - [1685104690.738122][30753:30755] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104690.738199][30753:30755] CHIP:DMG: }, - [1685104690.738270][30753:30755] CHIP:DMG: - [1685104690.738330][30753:30755] CHIP:DMG: }, - [1685104690.738400][30753:30755] CHIP:DMG: - [1685104690.738455][30753:30755] CHIP:DMG: ], - [1685104690.738524][30753:30755] CHIP:DMG: - [1685104690.738579][30753:30755] CHIP:DMG: InteractionModelRevision = 1 - [1685104690.738632][30753:30755] CHIP:DMG: } - [1685104690.738790][30753:30755] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 4: If the previous step is written, after a few seconds, TH - reads from the DUT the RockSetting attribute" - PICS: FAN.S.A0008 - verification: | - ./chip-tool fancontrol read rock-setting 1 1 - - On TH(chip-tool), Verify the RockSetting attribute value as 1. - - [1689757942.179085][23325:23327] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0008 DataVersion: 1958137195 - [1689757942.179162][23325:23327] CHIP:TOO: RockSetting: 1 - disabled: true - - - label: - "Step 5: If the RockSupport attribute read above has bit 1 set, then - TH writes to the DUT the RockSetting attribute with 0x02" - PICS: FAN.S.A0008 - verification: | - ./chip-tool fancontrol write rock-setting 2 1 1 - - On TH(chip-tool), Verify the SUCCESS response for RockSetting attribute write function - - [1685104690.737408][30753:30755] CHIP:DMG: AttributePathIB = - [1685104690.737488][30753:30755] CHIP:DMG: { - [1685104690.737557][30753:30755] CHIP:DMG: Endpoint = 0x1, - [1685104690.737632][30753:30755] CHIP:DMG: Cluster = 0x202, - [1685104690.737707][30753:30755] CHIP:DMG: Attribute = 0x0000_0008, - [1685104690.737825][30753:30755] CHIP:DMG: } - [1685104690.737911][30753:30755] CHIP:DMG: - [1685104690.737980][30753:30755] CHIP:DMG: StatusIB = - [1685104690.738051][30753:30755] CHIP:DMG: { - [1685104690.738122][30753:30755] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104690.738199][30753:30755] CHIP:DMG: }, - [1685104690.738270][30753:30755] CHIP:DMG: - [1685104690.738330][30753:30755] CHIP:DMG: }, - [1685104690.738400][30753:30755] CHIP:DMG: - [1685104690.738455][30753:30755] CHIP:DMG: ], - [1685104690.738524][30753:30755] CHIP:DMG: - [1685104690.738579][30753:30755] CHIP:DMG: InteractionModelRevision = 1 - [1685104690.738632][30753:30755] CHIP:DMG: } - [1685104690.738790][30753:30755] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 6: If the previous step is written, after a few seconds, TH - reads from the DUT the RockSetting attribute" - PICS: FAN.S.A0008 - verification: | - ./chip-tool fancontrol read rock-setting 1 1 - - On TH(chip-tool), Verify the RockSetting attribute value as 2. - - [1689757942.179085][23325:23327] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0008 DataVersion: 1958137195 - [1689757942.179162][23325:23327] CHIP:TOO: RockSetting: 2 - disabled: true - - - label: - "Step 7: If the RockSupport attribute read above has bit 2 set, then - TH writes to the DUT the RockSetting attribute with 0x04" - PICS: FAN.S.A0008 - verification: | - ./chip-tool fancontrol write rock-setting 4 1 1 - - On TH(chip-tool), Verify the SUCCESS response for RockSetting attribute write function - - Current sample apps do not have RockSupport attribute bit 2 . However, if the vendor has implemented it, the below response will be displayed. - - [1685104690.737408][30753:30755] CHIP:DMG: AttributePathIB = - [1685104690.737488][30753:30755] CHIP:DMG: { - [1685104690.737557][30753:30755] CHIP:DMG: Endpoint = 0x1, - [1685104690.737632][30753:30755] CHIP:DMG: Cluster = 0x202, - [1685104690.737707][30753:30755] CHIP:DMG: Attribute = 0x0000_0008, - [1685104690.737825][30753:30755] CHIP:DMG: } - [1685104690.737911][30753:30755] CHIP:DMG: - [1685104690.737980][30753:30755] CHIP:DMG: StatusIB = - [1685104690.738051][30753:30755] CHIP:DMG: { - [1685104690.738122][30753:30755] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104690.738199][30753:30755] CHIP:DMG: }, - [1685104690.738270][30753:30755] CHIP:DMG: - [1685104690.738330][30753:30755] CHIP:DMG: }, - [1685104690.738400][30753:30755] CHIP:DMG: - [1685104690.738455][30753:30755] CHIP:DMG: ], - [1685104690.738524][30753:30755] CHIP:DMG: - [1685104690.738579][30753:30755] CHIP:DMG: InteractionModelRevision = 1 - [1685104690.738632][30753:30755] CHIP:DMG: } - [1685104690.738790][30753:30755] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 8: If the previous step is written, after a few seconds, TH - reads from the DUT the RockSetting attribute" - PICS: FAN.S.A0008 - verification: | - Note : Execute only if STEP 7 resulted with SUCCESS - - ./chip-tool fancontrol read rock-setting 1 1 - - On TH(chip-tool), Verify the RockSetting attribute value as 4. - - Current sample apps do not have RockSupport attribute bit 2 . However, if the vendor has implemented it, the below response will be displayed. - - [1689757942.179085][23325:23327] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0008 DataVersion: 1958137195 - [1689757942.179162][23325:23327] CHIP:TOO: RockSetting: 4 - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_FAN_3_5.yaml b/src/app/tests/suites/certification/Test_TC_FAN_3_5.yaml deleted file mode 100644 index ec221dec3c2fd3..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_FAN_3_5.yaml +++ /dev/null @@ -1,592 +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: 263.2.10. [TC-FAN-3.5] Optional step functionality with DUT as Server - -PICS: - - FAN.S - - FAN.S.F04 - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Step 1: Commission DUT to TH" - verification: | - - disabled: true - - - label: - "Step 2a: TH writes to the DUT the PercentSetting attribute with 50" - PICS: FAN.S.A0002 - verification: | - ./chip-tool fancontrol write percent-setting 50 1 1 - - On TH(chip-tool), Verify the SUCCESS response for FanMode attribute successful write. - - [1689758735.697705][23402:23404] CHIP:DMG: AttributePathIB = - [1689758735.697729][23402:23404] CHIP:DMG: { - [1689758735.697755][23402:23404] CHIP:DMG: Endpoint = 0x1, - [1689758735.697780][23402:23404] CHIP:DMG: Cluster = 0x202, - [1689758735.697805][23402:23404] CHIP:DMG: Attribute = 0x0000_0002, - [1689758735.697829][23402:23404] CHIP:DMG: } - [1689758735.697856][23402:23404] CHIP:DMG: - [1689758735.697879][23402:23404] CHIP:DMG: StatusIB = - [1689758735.697903][23402:23404] CHIP:DMG: { - [1689758735.697928][23402:23404] CHIP:DMG: status = 0x00 (SUCCESS), - [1689758735.697953][23402:23404] CHIP:DMG: }, - [1689758735.697976][23402:23404] CHIP:DMG: - [1689758735.697997][23402:23404] CHIP:DMG: }, - disabled: true - - - label: - "Step 2b: after a few seconds, TH reads from the DUT the - PercentCurrent attribute" - PICS: FAN.S.A0003 - verification: | - ./chip-tool fancontrol read percent-current 1 1 - - On TH(chip-tool), Verify the PercentCurrent attribute value is in the range of 0 to 100. - - [1685105264.946295][30821:30823] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0003 DataVersion: 3398333304 - [1685105264.946447][30821:30823] CHIP:TOO: PercentCurrent: 50 - disabled: true - - - label: - "Step 2c: TH sends Step command to DUT with Direction set to Increase" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 0 1 1 - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 2d: after a few seconds, TH reads from the DUT the - PercentCurrent attribute" - PICS: FAN.S.A0003 - verification: | - ./chip-tool fancontrol read percent-current 1 1 - - On TH(chip-tool), Verify the PercentCurrent attribute value is higher than step 2b. - - [1685105264.946295][30821:30823] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0003 DataVersion: 3398333304 - [1685105264.946447][30821:30823] CHIP:TOO: PercentCurrent: 50 - disabled: true - - - label: - "Step 3a: TH writes to the DUT the PercentSetting attribute with 50" - PICS: FAN.S.A0002 - verification: | - ./chip-tool fancontrol write percent-setting 50 1 1 - - On TH(chip-tool), Verify the SUCCESS response for FanMode attribute successful write. - - [1689758735.697705][23402:23404] CHIP:DMG: AttributePathIB = - [1689758735.697729][23402:23404] CHIP:DMG: { - [1689758735.697755][23402:23404] CHIP:DMG: Endpoint = 0x1, - [1689758735.697780][23402:23404] CHIP:DMG: Cluster = 0x202, - [1689758735.697805][23402:23404] CHIP:DMG: Attribute = 0x0000_0002, - [1689758735.697829][23402:23404] CHIP:DMG: } - [1689758735.697856][23402:23404] CHIP:DMG: - [1689758735.697879][23402:23404] CHIP:DMG: StatusIB = - [1689758735.697903][23402:23404] CHIP:DMG: { - [1689758735.697928][23402:23404] CHIP:DMG: status = 0x00 (SUCCESS), - [1689758735.697953][23402:23404] CHIP:DMG: }, - [1689758735.697976][23402:23404] CHIP:DMG: - [1689758735.697997][23402:23404] CHIP:DMG: }, - disabled: true - - - label: - "Step 3b: after a few seconds, TH reads from the DUT the - PercentCurrent attribute" - PICS: FAN.S.A0003 - verification: | - ./chip-tool fancontrol read percent-current 1 1 - - On TH(chip-tool), Verify the PercentCurrent attribute value is in the range of 0 to 100. - - [1685105264.946295][30821:30823] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0003 DataVersion: 3398333304 - [1685105264.946447][30821:30823] CHIP:TOO: PercentCurrent: 50 - disabled: true - - - label: - "Step 3c: TH sends Step command to DUT with Direction set to Decrease" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 1 1 1 - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 3d: after a few seconds, TH reads from the DUT the - PercentCurrent attribute" - PICS: FAN.S.A0003 - verification: | - ./chip-tool fancontrol read percent-current 1 1 - - On TH(chip-tool), Verify the PercentCurrent attribute value is lower than step 3b. - - [1685105264.946295][30821:30823] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0003 DataVersion: 3398333304 - [1685105264.946447][30821:30823] CHIP:TOO: PercentCurrent: 50 - disabled: true - - - label: "Step 4a: TH reads from the DUT the SpeedMax attribute" - PICS: FAN.S.A0004 - verification: | - ./chip-tool fancontrol read speed-max 1 1 - - On TH(chip-tool), Verify the SpeedMax attribute value is in the range of 1 to 100. - - [1688647242.182652][7491:7493] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0004 DataVersion: 2333446701 - [1688647242.182906][7491:7493] CHIP:TOO: SpeedMax: 100 - [1688647242.183197][7491:7493] CHIP:EM: <<< [E:6958i S:20670 M:246576408 (Ack:49619178)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: - "Step 4b: TH writes to the DUT the SpeedSetting attribute with value - read from step 4a" - PICS: FAN.S.A0005 - verification: | - ./chip-tool fancontrol write speed-setting 100 1 1 - - On TH(chip-tool), Verify the SUCCESS response for SpeedSetting attribute successful write. - - [1685104349.577491][30723:30725] CHIP:DMG: WriteClient moving to [ResponseRe] - [1685104349.577594][30723:30725] CHIP:DMG: WriteResponseMessage = - [1685104349.577653][30723:30725] CHIP:DMG: { - [1685104349.577728][30723:30725] CHIP:DMG: AttributeStatusIBs = - [1685104349.577838][30723:30725] CHIP:DMG: [ - [1685104349.577897][30723:30725] CHIP:DMG: AttributeStatusIB = - [1685104349.577988][30723:30725] CHIP:DMG: { - [1685104349.578122][30723:30725] CHIP:DMG: AttributePathIB = - [1685104349.578201][30723:30725] CHIP:DMG: { - [1685104349.578276][30723:30725] CHIP:DMG: Endpoint = 0x1, - [1685104349.578371][30723:30725] CHIP:DMG: Cluster = 0x202, - [1685104349.578448][30723:30725] CHIP:DMG: Attribute = 0x0000_0005, - [1685104349.578544][30723:30725] CHIP:DMG: } - [1685104349.578625][30723:30725] CHIP:DMG: - [1685104349.578720][30723:30725] CHIP:DMG: StatusIB = - [1685104349.578793][30723:30725] CHIP:DMG: { - [1685104349.578893][30723:30725] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104349.578967][30723:30725] CHIP:DMG: }, - [1685104349.579062][30723:30725] CHIP:DMG: - [1685104349.579125][30723:30725] CHIP:DMG: }, - [1685104349.579214][30723:30725] CHIP:DMG: - [1685104349.579270][30723:30725] CHIP:DMG: ], - [1685104349.579340][30723:30725] CHIP:DMG: - [1685104349.579420][30723:30725] CHIP:DMG: InteractionModelRevision = 1 - [1685104349.579474][30723:30725] CHIP:DMG: } - [1685104349.579657][30723:30725] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 4c: after a few seconds, TH sends Step command to DUT with - Direction set to Increase and Wrap set to false" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 0 1 1 --Wrap false - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 4d: after a few seconds, TH reads from the DUT the SpeedCurrent - attribute" - PICS: FAN.S.A0006 - verification: | - ./chip-tool fancontrol read speed-current 1 1 - - On TH(chip-tool), Verify the SpeedCurrent attribute value is lower than step 4a. - - [1688649821.674949][7869:7871] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0006 DataVersion: 2333446701 - [1688649821.675124][7869:7871] CHIP:TOO: SpeedCurrent: 100 - [1688649821.675408][7869:7871] CHIP:EM: <<< [E:46324i S:9042 M:257483571 (Ack:231043875)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: - "Step 5a: TH writes to the DUT the SpeedSetting attribute with value - read from step 4a" - PICS: FAN.S.A0005 - verification: | - ./chip-tool fancontrol write speed-setting 100 1 1 - - On TH(chip-tool), Verify the SUCCESS response for SpeedSetting attribute successful write. - - [1685104349.577491][30723:30725] CHIP:DMG: WriteClient moving to [ResponseRe] - [1685104349.577594][30723:30725] CHIP:DMG: WriteResponseMessage = - [1685104349.577653][30723:30725] CHIP:DMG: { - [1685104349.577728][30723:30725] CHIP:DMG: AttributeStatusIBs = - [1685104349.577838][30723:30725] CHIP:DMG: [ - [1685104349.577897][30723:30725] CHIP:DMG: AttributeStatusIB = - [1685104349.577988][30723:30725] CHIP:DMG: { - [1685104349.578122][30723:30725] CHIP:DMG: AttributePathIB = - [1685104349.578201][30723:30725] CHIP:DMG: { - [1685104349.578276][30723:30725] CHIP:DMG: Endpoint = 0x1, - [1685104349.578371][30723:30725] CHIP:DMG: Cluster = 0x202, - [1685104349.578448][30723:30725] CHIP:DMG: Attribute = 0x0000_0005, - [1685104349.578544][30723:30725] CHIP:DMG: } - [1685104349.578625][30723:30725] CHIP:DMG: - [1685104349.578720][30723:30725] CHIP:DMG: StatusIB = - [1685104349.578793][30723:30725] CHIP:DMG: { - [1685104349.578893][30723:30725] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104349.578967][30723:30725] CHIP:DMG: }, - [1685104349.579062][30723:30725] CHIP:DMG: - [1685104349.579125][30723:30725] CHIP:DMG: }, - [1685104349.579214][30723:30725] CHIP:DMG: - [1685104349.579270][30723:30725] CHIP:DMG: ], - [1685104349.579340][30723:30725] CHIP:DMG: - [1685104349.579420][30723:30725] CHIP:DMG: InteractionModelRevision = 1 - [1685104349.579474][30723:30725] CHIP:DMG: } - [1685104349.579657][30723:30725] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 5b: after a few seconds, TH sends Step command to DUT with - Direction set to Increase, Wrap set to true, and LowestOff set to - false" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 0 1 1 --Wrap true --LowestOff false - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 5c: after a few seconds, TH reads from the DUT the SpeedCurrent - attribute" - PICS: FAN.S.A0006 - verification: | - ./chip-tool fancontrol read speed-current 1 1 - - On TH(chip-tool), Verify the SpeedCurrent attribute value is 1. - - [1688649821.674949][7869:7871] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0006 DataVersion: 2333446701 - [1688649821.675124][7869:7871] CHIP:TOO: SpeedCurrent: 100 - [1688649821.675408][7869:7871] CHIP:EM: <<< [E:46324i S:9042 M:257483571 (Ack:231043875)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: - "Step 6a: TH writes to the DUT the SpeedSetting attribute with value - read from step 4a" - PICS: FAN.S.A0005 - verification: | - ./chip-tool fancontrol write speed-setting 100 1 1 - - On TH(chip-tool), Verify the SUCCESS response for SpeedSetting attribute successful write. - - [1685104349.577491][30723:30725] CHIP:DMG: WriteClient moving to [ResponseRe] - [1685104349.577594][30723:30725] CHIP:DMG: WriteResponseMessage = - [1685104349.577653][30723:30725] CHIP:DMG: { - [1685104349.577728][30723:30725] CHIP:DMG: AttributeStatusIBs = - [1685104349.577838][30723:30725] CHIP:DMG: [ - [1685104349.577897][30723:30725] CHIP:DMG: AttributeStatusIB = - [1685104349.577988][30723:30725] CHIP:DMG: { - [1685104349.578122][30723:30725] CHIP:DMG: AttributePathIB = - [1685104349.578201][30723:30725] CHIP:DMG: { - [1685104349.578276][30723:30725] CHIP:DMG: Endpoint = 0x1, - [1685104349.578371][30723:30725] CHIP:DMG: Cluster = 0x202, - [1685104349.578448][30723:30725] CHIP:DMG: Attribute = 0x0000_0005, - [1685104349.578544][30723:30725] CHIP:DMG: } - [1685104349.578625][30723:30725] CHIP:DMG: - [1685104349.578720][30723:30725] CHIP:DMG: StatusIB = - [1685104349.578793][30723:30725] CHIP:DMG: { - [1685104349.578893][30723:30725] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104349.578967][30723:30725] CHIP:DMG: }, - [1685104349.579062][30723:30725] CHIP:DMG: - [1685104349.579125][30723:30725] CHIP:DMG: }, - [1685104349.579214][30723:30725] CHIP:DMG: - [1685104349.579270][30723:30725] CHIP:DMG: ], - [1685104349.579340][30723:30725] CHIP:DMG: - [1685104349.579420][30723:30725] CHIP:DMG: InteractionModelRevision = 1 - [1685104349.579474][30723:30725] CHIP:DMG: } - [1685104349.579657][30723:30725] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 6b: after a few seconds, TH sends Step command to DUT with - Direction set to Increase, Wrap set to true, and LowestOff set to true" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 0 1 1 --Wrap true --LowestOff true - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 6c: after a few seconds, TH reads from the DUT the SpeedCurrent - attribute" - PICS: FAN.S.A0006 - verification: | - ./chip-tool fancontrol read speed-current 1 1 - - On TH(chip-tool), Verify the SpeedCurrent attribute value is 0. - - [1688649821.674949][7869:7871] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0006 DataVersion: 2333446701 - [1688649821.675124][7869:7871] CHIP:TOO: SpeedCurrent: 100 - [1688649821.675408][7869:7871] CHIP:EM: <<< [E:46324i S:9042 M:257483571 (Ack:231043875)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: - "Step 7a: TH writes to the DUT the SpeedSetting attribute with a value - of 1" - PICS: FAN.S.A0005 - verification: | - ./chip-tool fancontrol write speed-setting 1 1 1 - - On TH(chip-tool), Verify the SUCCESS response for SpeedSetting attribute successful write. - - [1685104349.577491][30723:30725] CHIP:DMG: WriteClient moving to [ResponseRe] - [1685104349.577594][30723:30725] CHIP:DMG: WriteResponseMessage = - [1685104349.577653][30723:30725] CHIP:DMG: { - [1685104349.577728][30723:30725] CHIP:DMG: AttributeStatusIBs = - [1685104349.577838][30723:30725] CHIP:DMG: [ - [1685104349.577897][30723:30725] CHIP:DMG: AttributeStatusIB = - [1685104349.577988][30723:30725] CHIP:DMG: { - [1685104349.578122][30723:30725] CHIP:DMG: AttributePathIB = - [1685104349.578201][30723:30725] CHIP:DMG: { - [1685104349.578276][30723:30725] CHIP:DMG: Endpoint = 0x1, - [1685104349.578371][30723:30725] CHIP:DMG: Cluster = 0x202, - [1685104349.578448][30723:30725] CHIP:DMG: Attribute = 0x0000_0005, - [1685104349.578544][30723:30725] CHIP:DMG: } - [1685104349.578625][30723:30725] CHIP:DMG: - [1685104349.578720][30723:30725] CHIP:DMG: StatusIB = - [1685104349.578793][30723:30725] CHIP:DMG: { - [1685104349.578893][30723:30725] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104349.578967][30723:30725] CHIP:DMG: }, - [1685104349.579062][30723:30725] CHIP:DMG: - [1685104349.579125][30723:30725] CHIP:DMG: }, - [1685104349.579214][30723:30725] CHIP:DMG: - [1685104349.579270][30723:30725] CHIP:DMG: ], - [1685104349.579340][30723:30725] CHIP:DMG: - [1685104349.579420][30723:30725] CHIP:DMG: InteractionModelRevision = 1 - [1685104349.579474][30723:30725] CHIP:DMG: } - [1685104349.579657][30723:30725] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 7b: after a few seconds, TH sends Step command to DUT with - Direction set to Decrease and Wrap set to false and LowestOff set to - false" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 1 1 1 --Wrap false --LowestOff false - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 7c: after a few seconds, TH reads from the DUT the SpeedCurrent - attribute" - PICS: FAN.S.A0006 - verification: | - ./chip-tool fancontrol read speed-current 1 1 - - On TH(chip-tool), Verify the SpeedCurrent attribute value is 1. - - [1688649821.674949][7869:7871] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0006 DataVersion: 2333446701 - [1688649821.675124][7869:7871] CHIP:TOO: SpeedCurrent: 1 - [1688649821.675408][7869:7871] CHIP:EM: <<< [E:46324i S:9042 M:257483571 (Ack:231043875)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: "Step 8a: TH reads from the DUT the SpeedMax attribute" - PICS: FAN.S.A0004 - verification: | - ./chip-tool fancontrol read speed-max 1 1 - - On TH(chip-tool), Verify the SpeedMax attribute value is in the range of 1 to 100. - - [1688647242.182652][7491:7493] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0004 DataVersion: 2333446701 - [1688647242.182906][7491:7493] CHIP:TOO: SpeedMax: 100 - [1688647242.183197][7491:7493] CHIP:EM: <<< [E:6958i S:20670 M:246576408 (Ack:49619178)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: - "Step 8b: TH writes to the DUT the SpeedSetting attribute with a value - of 1" - PICS: FAN.S.A0005 - verification: | - ./chip-tool fancontrol write speed-setting 1 1 1 - - On TH(chip-tool), Verify the SUCCESS response for SpeedSetting attribute successful write. - - [1685104349.577491][30723:30725] CHIP:DMG: WriteClient moving to [ResponseRe] - [1685104349.577594][30723:30725] CHIP:DMG: WriteResponseMessage = - [1685104349.577653][30723:30725] CHIP:DMG: { - [1685104349.577728][30723:30725] CHIP:DMG: AttributeStatusIBs = - [1685104349.577838][30723:30725] CHIP:DMG: [ - [1685104349.577897][30723:30725] CHIP:DMG: AttributeStatusIB = - [1685104349.577988][30723:30725] CHIP:DMG: { - [1685104349.578122][30723:30725] CHIP:DMG: AttributePathIB = - [1685104349.578201][30723:30725] CHIP:DMG: { - [1685104349.578276][30723:30725] CHIP:DMG: Endpoint = 0x1, - [1685104349.578371][30723:30725] CHIP:DMG: Cluster = 0x202, - [1685104349.578448][30723:30725] CHIP:DMG: Attribute = 0x0000_0005, - [1685104349.578544][30723:30725] CHIP:DMG: } - [1685104349.578625][30723:30725] CHIP:DMG: - [1685104349.578720][30723:30725] CHIP:DMG: StatusIB = - [1685104349.578793][30723:30725] CHIP:DMG: { - [1685104349.578893][30723:30725] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104349.578967][30723:30725] CHIP:DMG: }, - [1685104349.579062][30723:30725] CHIP:DMG: - [1685104349.579125][30723:30725] CHIP:DMG: }, - [1685104349.579214][30723:30725] CHIP:DMG: - [1685104349.579270][30723:30725] CHIP:DMG: ], - [1685104349.579340][30723:30725] CHIP:DMG: - [1685104349.579420][30723:30725] CHIP:DMG: InteractionModelRevision = 1 - [1685104349.579474][30723:30725] CHIP:DMG: } - [1685104349.579657][30723:30725] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 8c: after a few seconds, TH sends Step command to DUT with - Direction set to Decrease, Wrap set to true, and LowestOff set to - false" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 1 1 1 --Wrap true --LowestOff false - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 8d: after a few seconds, TH reads from the DUT the SpeedCurrent - attribute" - PICS: FAN.S.A0006 - verification: | - ./chip-tool fancontrol read speed-current 1 1 - - On TH(chip-tool), Verify the SpeedCurrent attribute value is same as step 8a. - - [1688649821.674949][7869:7871] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0006 DataVersion: 2333446701 - [1688649821.675124][7869:7871] CHIP:TOO: SpeedCurrent: 1 - [1688649821.675408][7869:7871] CHIP:EM: <<< [E:46324i S:9042 M:257483571 (Ack:231043875)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: "Step 9a: TH reads from the DUT the SpeedMax attribute" - PICS: FAN.S.A0004 - verification: | - ./chip-tool fancontrol read speed-max 1 1 - - On TH(chip-tool), Verify the SpeedMax attribute value is in the range of 1 to 100. - - [1688647242.182652][7491:7493] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0004 DataVersion: 2333446701 - [1688647242.182906][7491:7493] CHIP:TOO: SpeedMax: 100 - [1688647242.183197][7491:7493] CHIP:EM: <<< [E:6958i S:20670 M:246576408 (Ack:49619178)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true - - - label: - "Step 9b: TH writes to the DUT the SpeedSetting attribute with value - of zero" - PICS: FAN.S.A0005 - verification: | - ./chip-tool fancontrol write speed-setting 0 1 1 - - On TH(chip-tool), Verify the SUCCESS response for SpeedSetting attribute successful write. - - [1685104349.577491][30723:30725] CHIP:DMG: WriteClient moving to [ResponseRe] - [1685104349.577594][30723:30725] CHIP:DMG: WriteResponseMessage = - [1685104349.577653][30723:30725] CHIP:DMG: { - [1685104349.577728][30723:30725] CHIP:DMG: AttributeStatusIBs = - [1685104349.577838][30723:30725] CHIP:DMG: [ - [1685104349.577897][30723:30725] CHIP:DMG: AttributeStatusIB = - [1685104349.577988][30723:30725] CHIP:DMG: { - [1685104349.578122][30723:30725] CHIP:DMG: AttributePathIB = - [1685104349.578201][30723:30725] CHIP:DMG: { - [1685104349.578276][30723:30725] CHIP:DMG: Endpoint = 0x1, - [1685104349.578371][30723:30725] CHIP:DMG: Cluster = 0x202, - [1685104349.578448][30723:30725] CHIP:DMG: Attribute = 0x0000_0005, - [1685104349.578544][30723:30725] CHIP:DMG: } - [1685104349.578625][30723:30725] CHIP:DMG: - [1685104349.578720][30723:30725] CHIP:DMG: StatusIB = - [1685104349.578793][30723:30725] CHIP:DMG: { - [1685104349.578893][30723:30725] CHIP:DMG: status = 0x00 (SUCCESS), - [1685104349.578967][30723:30725] CHIP:DMG: }, - [1685104349.579062][30723:30725] CHIP:DMG: - [1685104349.579125][30723:30725] CHIP:DMG: }, - [1685104349.579214][30723:30725] CHIP:DMG: - [1685104349.579270][30723:30725] CHIP:DMG: ], - [1685104349.579340][30723:30725] CHIP:DMG: - [1685104349.579420][30723:30725] CHIP:DMG: InteractionModelRevision = 1 - [1685104349.579474][30723:30725] CHIP:DMG: } - [1685104349.579657][30723:30725] CHIP:DMG: WriteClient moving to [AwaitingDe] - disabled: true - - - label: - "Step 9c: after a few seconds, TH sends Step command to DUT with - Direction set to Decrease, Wrap set to true, and LowestOff set to true" - PICS: FAN.S.C00.Rsp - verification: | - ./chip-tool fancontrol step 1 1 1 --Wrap true --LowestOff true - - On TH(chip-tool), Verify the SUCCESS response for sending Step command. - - [1688369238.200998][44233:44235] CHIP:DMG: StatusIB = - [1688369238.201073][44233:44235] CHIP:DMG: { - [1688369238.201149][44233:44235] CHIP:DMG: status = 0x00 (SUCCESS), - [1688369238.201226][44233:44235] CHIP:DMG: }, - disabled: true - - - label: - "Step 9d: after a few seconds, TH reads from the DUT the SpeedCurrent - attribute" - PICS: FAN.S.A0006 - verification: | - ./chip-tool fancontrol read speed-current 1 1 - - On TH(chip-tool), Verify the SpeedCurrent attribute value is same as step 9a. - - [1688649821.674949][7869:7871] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0202 Attribute 0x0000_0006 DataVersion: 2333446701 - [1688649821.675124][7869:7871] CHIP:TOO: SpeedCurrent: 0 - [1688649821.675408][7869:7871] CHIP:EM: <<< [E:46324i S:9042 M:257483571 (Ack:231043875)] (S) Msg TX to 1:0000000000000001 [08DD] --- Type 0000:10 (SecureChannel:StandaloneAck) - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_FLABEL_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_FLABEL_3_1_Simulated.yaml deleted file mode 100644 index e109c22a0669cd..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_FLABEL_3_1_Simulated.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 98.3.1. [TC-FLABEL-1.1] Global Attributes with DUT as Server - -PICS: - - FLABEL.C - -config: - nodeId: 0x12344321 - cluster: "Fixed Label" - endpoint: 1 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads LabelList from the TH" - PICS: FLABEL.C.A0000 - wait: "readAttribute" - attribute: "LabelList" diff --git a/src/app/tests/suites/certification/Test_TC_FLDCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_FLDCONC_1_1.yaml index f1e8e72ae0ada9..c55f58614d0f2a 100644 --- a/src/app/tests/suites/certification/Test_TC_FLDCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_FLDCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: FLDCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !FLDCONC.S.F00 && !FLDCONC.S.F01 && !FLDCONC.S.F02 && !FLDCONC.S.F03 + && !FLDCONC.S.F04 && !FLDCONC.S.F05" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given FLDCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && FLDCONC.S.F00 + PICS: FLDCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && !FLDCONC.S.F00 + PICS: " !FLDCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && FLDCONC.S.F01 + PICS: FLDCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && !FLDCONC.S.F01 + PICS: " !FLDCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && FLDCONC.S.F02 + PICS: FLDCONC.S.F02 && FLDCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && !FLDCONC.S.F02 + PICS: " !FLDCONC.S.F02 && !FLDCONC.S.F01" response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && FLDCONC.S.F03 + PICS: FLDCONC.S.F03 && FLDCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && !FLDCONC.S.F03 + PICS: " !FLDCONC.S.F03 && !FLDCONC.S.F01 " response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && FLDCONC.S.F04 + PICS: FLDCONC.S.F04 && FLDCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && !FLDCONC.S.F04 + PICS: " !FLDCONC.S.F04 && !FLDCONC.S.F00 " response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && FLDCONC.S.F05 + PICS: FLDCONC.S.F05 && FLDCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: FLDCONC.S.Afffc && !FLDCONC.S.F05 + PICS: " !FLDCONC.S.F05 && !FLDCONC.S.F00" response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && FLDCONC.S.A0007 && FLDCONC.S.F00 + PICS: FLDCONC.S.A0007 && FLDCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when FLDCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && !FLDCONC.S.A0007 + PICS: " !FLDCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && FLDCONC.S.F00 + PICS: FLDCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when FLDCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && !FLDCONC.S.F00 + PICS: " !FLDCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && FLDCONC.S.F04 + PICS: FLDCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when FLDCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && !FLDCONC.S.F04 + PICS: " !FLDCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && FLDCONC.S.F05 + PICS: FLDCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: FLDCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && !FLDCONC.S.F05 + PICS: " !FLDCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && FLDCONC.S.F01 + PICS: FLDCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: FLDCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: FLDCONC.S.Afffb && !FLDCONC.S.F01 + PICS: " !FLDCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: FLDCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: FLDCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml deleted file mode 100644 index 24db2438da578c..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml +++ /dev/null @@ -1,415 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 31.3.1. [TC-FLW-3.1] Attributes with Client as DUT - -PICS: - - FLW.C - - FLW.C.AM-READ - - FLW.C.AO-READ - - FLW.C.AM-WRITE - - FLW.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Flow Measurement" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: MeasuredValue" - PICS: FLW.C.AM-READ - wait: "readAttribute" - attribute: "MeasuredValue" - - - label: "Read attribute: MinMeasuredValue" - PICS: FLW.C.AM-READ - wait: "readAttribute" - attribute: "MinMeasuredValue" - - - label: "Read attribute: MaxMeasuredValue" - PICS: FLW.C.AM-READ - wait: "readAttribute" - attribute: "MaxMeasuredValue" - - - label: "Read attribute: Tolerance" - PICS: FLW.C.AO-READ - wait: "readAttribute" - attribute: "Tolerance" - - - 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: | - Verify TH(all-clusters-minimal-app) 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. - - ./chip-tool flowmeasurement read attribute-list 1 1 - - Verify AttributeList response on the TH(all-clusters-minimal-app) Log: - - ReportDataMessage = - [1666851487.507946][18927:18927] CHIP:DMG: { - [1666851487.507950][18927:18927] CHIP:DMG: AttributeReportIBs = - [1666851487.507957][18927:18927] CHIP:DMG: [ - [1666851487.507961][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.507969][18927:18927] CHIP:DMG: { - [1666851487.507974][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.507979][18927:18927] CHIP:DMG: { - [1666851487.507984][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.507990][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.507995][18927:18927] CHIP:DMG: { - [1666851487.508001][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508007][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508012][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508018][18927:18927] CHIP:DMG: } - [1666851487.508024][18927:18927] CHIP:DMG: - [1666851487.508030][18927:18927] CHIP:DMG: Data = [ - [1666851487.508035][18927:18927] CHIP:DMG: - [1666851487.508041][18927:18927] CHIP:DMG: ], - [1666851487.508045][18927:18927] CHIP:DMG: }, - [1666851487.508053][18927:18927] CHIP:DMG: - [1666851487.508057][18927:18927] CHIP:DMG: }, - [1666851487.508068][18927:18927] CHIP:DMG: - [1666851487.508072][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508080][18927:18927] CHIP:DMG: { - [1666851487.508085][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508089][18927:18927] CHIP:DMG: { - [1666851487.508094][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508098][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508104][18927:18927] CHIP:DMG: { - [1666851487.508108][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508113][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508119][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508124][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508128][18927:18927] CHIP:DMG: } - [1666851487.508134][18927:18927] CHIP:DMG: - [1666851487.508139][18927:18927] CHIP:DMG: Data = 0, - [1666851487.508143][18927:18927] CHIP:DMG: }, - [1666851487.508149][18927:18927] CHIP:DMG: - [1666851487.508152][18927:18927] CHIP:DMG: }, - [1666851487.508161][18927:18927] CHIP:DMG: - [1666851487.508165][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508173][18927:18927] CHIP:DMG: { - [1666851487.508178][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508183][18927:18927] CHIP:DMG: { - [1666851487.508189][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508194][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508199][18927:18927] CHIP:DMG: { - [1666851487.508204][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508210][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508216][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508221][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508225][18927:18927] CHIP:DMG: } - [1666851487.508232][18927:18927] CHIP:DMG: - [1666851487.508237][18927:18927] CHIP:DMG: Data = 1, - [1666851487.508242][18927:18927] CHIP:DMG: }, - [1666851487.508249][18927:18927] CHIP:DMG: - [1666851487.508254][18927:18927] CHIP:DMG: }, - [1666851487.508264][18927:18927] CHIP:DMG: - [1666851487.508268][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508275][18927:18927] CHIP:DMG: { - [1666851487.508280][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508285][18927:18927] CHIP:DMG: { - [1666851487.508289][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508293][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508298][18927:18927] CHIP:DMG: { - [1666851487.508303][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508307][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508314][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508318][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508324][18927:18927] CHIP:DMG: } - [1666851487.508331][18927:18927] CHIP:DMG: - [1666851487.508337][18927:18927] CHIP:DMG: Data = 2, - [1666851487.508341][18927:18927] CHIP:DMG: }, - [1666851487.508348][18927:18927] CHIP:DMG: - [1666851487.508353][18927:18927] CHIP:DMG: }, - [1666851487.508363][18927:18927] CHIP:DMG: - [1666851487.508367][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508374][18927:18927] CHIP:DMG: { - [1666851487.508377][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508382][18927:18927] CHIP:DMG: { - [1666851487.508386][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508390][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508395][18927:18927] CHIP:DMG: { - [1666851487.508399][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508406][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508411][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508416][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508420][18927:18927] CHIP:DMG: } - [1666851487.508426][18927:18927] CHIP:DMG: - [1666851487.508431][18927:18927] CHIP:DMG: Data = 65528, - [1666851487.508436][18927:18927] CHIP:DMG: }, - [1666851487.508443][18927:18927] CHIP:DMG: - [1666851487.508447][18927:18927] CHIP:DMG: }, - [1666851487.508456][18927:18927] CHIP:DMG: - [1666851487.508461][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508468][18927:18927] CHIP:DMG: { - [1666851487.508471][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508475][18927:18927] CHIP:DMG: { - [1666851487.508480][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508486][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508491][18927:18927] CHIP:DMG: { - [1666851487.508495][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508500][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508506][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508511][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508515][18927:18927] CHIP:DMG: } - [1666851487.508521][18927:18927] CHIP:DMG: - [1666851487.508526][18927:18927] CHIP:DMG: Data = 65529, - [1666851487.508531][18927:18927] CHIP:DMG: }, - [1666851487.508538][18927:18927] CHIP:DMG: - [1666851487.508543][18927:18927] CHIP:DMG: }, - [1666851487.508554][18927:18927] CHIP:DMG: - [1666851487.508557][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508564][18927:18927] CHIP:DMG: { - [1666851487.508569][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508574][18927:18927] CHIP:DMG: { - [1666851487.508579][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508584][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508590][18927:18927] CHIP:DMG: { - [1666851487.508595][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508601][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508607][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508611][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508616][18927:18927] CHIP:DMG: } - [1666851487.508622][18927:18927] CHIP:DMG: - [1666851487.508627][18927:18927] CHIP:DMG: Data = 65531, - [1666851487.508632][18927:18927] CHIP:DMG: }, - [1666851487.508638][18927:18927] CHIP:DMG: - [1666851487.508642][18927:18927] CHIP:DMG: }, - [1666851487.508652][18927:18927] CHIP:DMG: - [1666851487.508656][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508663][18927:18927] CHIP:DMG: { - [1666851487.508668][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508673][18927:18927] CHIP:DMG: { - [1666851487.508678][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508683][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508688][18927:18927] CHIP:DMG: { - [1666851487.508692][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508699][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508705][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508710][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508714][18927:18927] CHIP:DMG: } - [1666851487.508721][18927:18927] CHIP:DMG: - [1666851487.508726][18927:18927] CHIP:DMG: Data = 65532, - [1666851487.508730][18927:18927] CHIP:DMG: }, - [1666851487.508737][18927:18927] CHIP:DMG: - [1666851487.508741][18927:18927] CHIP:DMG: }, - [1666851487.508750][18927:18927] CHIP:DMG: - [1666851487.508754][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851487.508761][18927:18927] CHIP:DMG: { - [1666851487.508766][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851487.508771][18927:18927] CHIP:DMG: { - [1666851487.508775][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851487.508780][18927:18927] CHIP:DMG: AttributePathIB = - [1666851487.508785][18927:18927] CHIP:DMG: { - [1666851487.508790][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851487.508796][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851487.508803][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666851487.508808][18927:18927] CHIP:DMG: ListIndex = Null, - [1666851487.508814][18927:18927] CHIP:DMG: } - [1666851487.508820][18927:18927] CHIP:DMG: - [1666851487.508825][18927:18927] CHIP:DMG: Data = 65533, - [1666851487.508829][18927:18927] CHIP:DMG: }, - [1666851487.508836][18927:18927] CHIP:DMG: - [1666851487.508840][18927:18927] CHIP:DMG: }, - [1666851487.508847][18927:18927] CHIP:DMG: - [1666851487.508851][18927:18927] CHIP:DMG: ], - [1666851487.508879][18927:18927] CHIP:DMG: - [1666851487.508884][18927:18927] CHIP:DMG: SuppressResponse = true, - [1666851487.508888][18927:18927] CHIP:DMG: InteractionModelRevision = 1 - [1666851487.508892][18927:18927] CHIP:DMG: } - [1666851487.508896][18927:18927] CHIP:DMG: - - - - ./chip-tool flowmeasurement read feature-map 1 1 - - Verify FeatureMap attribute response on the TH(all-clusters-minimal-app) Log: - - ReportDataMessage = - [1666851643.847203][18927:18927] CHIP:DMG: { - [1666851643.847206][18927:18927] CHIP:DMG: AttributeReportIBs = - [1666851643.847211][18927:18927] CHIP:DMG: [ - [1666851643.847214][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851643.847219][18927:18927] CHIP:DMG: { - [1666851643.847222][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851643.847226][18927:18927] CHIP:DMG: { - [1666851643.847229][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851643.847232][18927:18927] CHIP:DMG: AttributePathIB = - [1666851643.847236][18927:18927] CHIP:DMG: { - [1666851643.847240][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851643.847244][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851643.847249][18927:18927] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666851643.847252][18927:18927] CHIP:DMG: } - [1666851643.847256][18927:18927] CHIP:DMG: - [1666851643.847261][18927:18927] CHIP:DMG: Data = 0, - [1666851643.847264][18927:18927] CHIP:DMG: }, - [1666851643.847269][18927:18927] CHIP:DMG: - [1666851643.847272][18927:18927] CHIP:DMG: }, - [1666851643.847276][18927:18927] CHIP:DMG: - [1666851643.847279][18927:18927] CHIP:DMG: ], - [1666851643.847285][18927:18927] CHIP:DMG: - [1666851643.847288][18927:18927] CHIP:DMG: SuppressResponse = true, - [1666851643.847291][18927:18927] CHIP:DMG: InteractionModelRevision = 1 - [1666851643.847294][18927:18927] CHIP:DMG: } - - - ./chip-tool flowmeasurement read measured-value 1 1 - - Verify MeasuredValue response on the TH(all-clusters-minimal-app) Log: - - ReportDataMessage = - [1666851671.893452][18927:18927] CHIP:DMG: { - [1666851671.893455][18927:18927] CHIP:DMG: AttributeReportIBs = - [1666851671.893460][18927:18927] CHIP:DMG: [ - [1666851671.893462][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851671.893467][18927:18927] CHIP:DMG: { - [1666851671.893471][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851671.893476][18927:18927] CHIP:DMG: { - [1666851671.893479][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851671.893484][18927:18927] CHIP:DMG: AttributePathIB = - [1666851671.893487][18927:18927] CHIP:DMG: { - [1666851671.893493][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851671.893496][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851671.893501][18927:18927] CHIP:DMG: Attribute = 0x0000_0000, - [1666851671.893506][18927:18927] CHIP:DMG: } - [1666851671.893511][18927:18927] CHIP:DMG: - [1666851671.893517][18927:18927] CHIP:DMG: Data = 0, - [1666851671.893520][18927:18927] CHIP:DMG: }, - [1666851671.893526][18927:18927] CHIP:DMG: - [1666851671.893529][18927:18927] CHIP:DMG: }, - [1666851671.893534][18927:18927] CHIP:DMG: - [1666851671.893538][18927:18927] CHIP:DMG: ], - [1666851671.893545][18927:18927] CHIP:DMG: - [1666851671.893549][18927:18927] CHIP:DMG: SuppressResponse = true, - [1666851671.893552][18927:18927] CHIP:DMG: InteractionModelRevision = 1 - [1666851671.893555][18927:18927] CHIP:DMG: } - - - - ./chip-tool flowmeasurement read min-measured-value 1 1 - - Verify MinMeasuredValue response on the TH(all-clusters-minimal-app) Log: - - ReportDataMessage = - [1666851700.451575][18927:18927] CHIP:DMG: { - [1666851700.451579][18927:18927] CHIP:DMG: AttributeReportIBs = - [1666851700.451585][18927:18927] CHIP:DMG: [ - [1666851700.451589][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851700.451596][18927:18927] CHIP:DMG: { - [1666851700.451599][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851700.451603][18927:18927] CHIP:DMG: { - [1666851700.451606][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851700.451611][18927:18927] CHIP:DMG: AttributePathIB = - [1666851700.451615][18927:18927] CHIP:DMG: { - [1666851700.451620][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851700.451625][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851700.451630][18927:18927] CHIP:DMG: Attribute = 0x0000_0001, - [1666851700.451633][18927:18927] CHIP:DMG: } - [1666851700.451638][18927:18927] CHIP:DMG: - [1666851700.451644][18927:18927] CHIP:DMG: Data = 0, - [1666851700.451647][18927:18927] CHIP:DMG: }, - [1666851700.451652][18927:18927] CHIP:DMG: - [1666851700.451655][18927:18927] CHIP:DMG: }, - [1666851700.451661][18927:18927] CHIP:DMG: - [1666851700.451665][18927:18927] CHIP:DMG: ], - [1666851700.451671][18927:18927] CHIP:DMG: - [1666851700.451674][18927:18927] CHIP:DMG: SuppressResponse = true, - [1666851700.451677][18927:18927] CHIP:DMG: InteractionModelRevision = 1 - [1666851700.451681][18927:18927] CHIP:DMG: } - - - ./chip-tool flowmeasurement read max-measured-value 1 1 - - Verify MaxMeasured Value response on the TH(all-clusters-minimal-app) Log: - - ReportDataMessage = - [1666851727.140175][18927:18927] CHIP:DMG: { - [1666851727.140178][18927:18927] CHIP:DMG: AttributeReportIBs = - [1666851727.140185][18927:18927] CHIP:DMG: [ - [1666851727.140190][18927:18927] CHIP:DMG: AttributeReportIB = - [1666851727.140197][18927:18927] CHIP:DMG: { - [1666851727.140201][18927:18927] CHIP:DMG: AttributeDataIB = - [1666851727.140206][18927:18927] CHIP:DMG: { - [1666851727.140210][18927:18927] CHIP:DMG: DataVersion = 0xca67ce55, - [1666851727.140214][18927:18927] CHIP:DMG: AttributePathIB = - [1666851727.140220][18927:18927] CHIP:DMG: { - [1666851727.140225][18927:18927] CHIP:DMG: Endpoint = 0x1, - [1666851727.140230][18927:18927] CHIP:DMG: Cluster = 0x404, - [1666851727.140235][18927:18927] CHIP:DMG: Attribute = 0x0000_0002, - [1666851727.140240][18927:18927] CHIP:DMG: } - [1666851727.140247][18927:18927] CHIP:DMG: - [1666851727.140253][18927:18927] CHIP:DMG: Data = 0, - [1666851727.140258][18927:18927] CHIP:DMG: }, - [1666851727.140264][18927:18927] CHIP:DMG: - [1666851727.140267][18927:18927] CHIP:DMG: }, - [1666851727.140275][18927:18927] CHIP:DMG: - [1666851727.140278][18927:18927] CHIP:DMG: ], - [1666851727.140285][18927:18927] CHIP:DMG: - [1666851727.140290][18927:18927] CHIP:DMG: SuppressResponse = true, - [1666851727.140295][18927:18927] CHIP:DMG: InteractionModelRevision = 1 - [1666851727.140298][18927:18927] CHIP:DMG: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - Verify TH(all-clusters-minimal-app) receives the read command, and responds that this attribute is not available and also DUT is aware that the optional attributes are not available, and does not issue read requests for the attributes which it did read in step 2 - - - ./chip-tool flowmeasurement read tolerance 1 1 - - Verify Tolerance response on the TH(all-clusters-minimal-app) Log: - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && FLW.C.AO-READ - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_GRPKEY_1_1.yaml b/src/app/tests/suites/certification/Test_TC_GRPKEY_1_1.yaml new file mode 100644 index 00000000000000..4f9f2db080c1c3 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_GRPKEY_1_1.yaml @@ -0,0 +1,232 @@ +# Copyright (c) 2023 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: 26.1.1. [TC-GRPKEY-1.1] Global Attributes with DUT as Server + +PICS: + - GRPKEY.S + +config: + nodeId: 0x12344321 + cluster: "Group Key Management" + endpoint: 0 + +tests: + - label: "Step 1: Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + #Please refer Issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/3280 + - label: "Step 2: TH reads the ClusterRevision from DUT" + command: "readAttribute" + attribute: "ClusterRevision" + response: + value: 2 + constraints: + type: int16u + + - label: "Step 3a: TH reads the FeatureMap from DUT" + PICS: " !GRPKEY.S.F00 " + command: "readAttribute" + attribute: "FeatureMap" + response: + value: 0 + constraints: + type: bitmap32 + + - label: + "Step 3b: Given GRPKEY.S.F00(CS) ensure featuremap has the correct bit + set" + PICS: GRPKEY.S.F00 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x1] + + - label: "Step 4a: TH reads AttributeList from DUT" + PICS: PICS_EVENT_LIST_ENABLED + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [0, 1, 2, 3, 65528, 65529, 65530, 65531, 65532, 65533] + + - label: "Step 4a: TH reads AttributeList from DUT" + PICS: " !PICS_EVENT_LIST_ENABLED " + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533] + + - label: + "Step 4b: The list SHALL NOT contain any additional values in the + standard or scoped range: (0x0000_0000 - 0x0000_4FFF) and (0x0000_F000 + - 0x0000_FFFE). 2.The list MAY contain values in the Manufacturer + Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_4FFF), where + XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be + ignored. 3.TThe list SHALL NOT contain any values in the Test Vendor + or invalid range: (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), + (0xXXXX_5000 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where + XXXX is the allowed MEI range (0x0001 - 0xFFF1)" + verification: | + ./chip-tool groupkeymanagement read attribute-list 1 0 + + Verify the "AttributeList" contains the mandatory attribute (values 0, 1, 2, 3) , global attributes ( 65528, 65529, 65530, 65531, 65532, 65533) on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + + [1689923270.946521][6116:6118] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_FFFB DataVersion: 4114127542 + [1689923270.946632][6116:6118] CHIP:TOO: AttributeList: 10 entries + [1689923270.946672][6116:6118] CHIP:TOO: [1]: 0 + [1689923270.946705][6116:6118] CHIP:TOO: [2]: 1 + [1689923270.946737][6116:6118] CHIP:TOO: [3]: 2 + [1689923270.946768][6116:6118] CHIP:TOO: [4]: 3 + [1689923270.946800][6116:6118] CHIP:TOO: [5]: 65528 + [1689923270.946831][6116:6118] CHIP:TOO: [6]: 65529 + [1689923270.946862][6116:6118] CHIP:TOO: [7]: 65530 + [1689923270.946893][6116:6118] CHIP:TOO: [8]: 65531 + [1689923270.946924][6116:6118] CHIP:TOO: [9]: 65532 + [1689923270.946956][6116:6118] CHIP:TOO: [10]: 65533 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: "Step 5a: TH1 reads EventList from DUT" + PICS: PICS_EVENT_LIST_ENABLED + command: "readAttribute" + attribute: "EventList" + response: + value: [] + constraints: + type: list + + - label: + "Step 5b: TH reads EventList attribute from DUT. 1.The list SHALL NOT + contain any additional values in the standard or scoped range: + (0x0000_0000 - 0x0000_00FF). 2.The list MAY contain values in the + Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - + 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), + these values SHALL be ignored. 3.The list SHALL NOT contain any values + in the Test Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), + (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where + XXXX is the allowed MEI range (0x0001 - 0xFFF1)" + verification: | + ./chip-tool groupkeymanagement read event-list 1 0 + + Verify "EventList" contains the list of supported events, for this cluster list is empty(0 entries) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689923450.468055][6130:6132] CHIP:DMG: } + [1689923450.468251][6130:6132] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_FFFA DataVersion: 4114127542 + [1689923450.468339][6130:6132] CHIP:TOO: EventList: 0 entries + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: "Step 6a: TH reads AcceptedCommandList from DUT" + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [0, 1, 3, 4] + + - label: + "Step 6b: TH reads AcceptedCommandList attribute from DUT. 1.The list + MAY contain values in the Manufacturer Extensible Identifier (MEI) + range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI + range (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list + SHALL NOT contain any values in the Test Vendor or invalid range: + (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and + (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range + (0x0001 - 0xFFF1)" + verification: | + ./chip-tool groupkeymanagement read accepted-command-list 1 0 + + Verify the "AcceptedCommandList" contains a list of mandatory commands (values 0, 1, 3, 4) on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + + [1689923406.548840][6123:6125] CHIP:DMG: } + [1689923406.549076][6123:6125] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_FFF9 DataVersion: 4114127542 + [1689923406.549164][6123:6125] CHIP:TOO: AcceptedCommandList: 4 entries + [1689923406.549197][6123:6125] CHIP:TOO: [1]: 0 + [1689923406.549225][6123:6125] CHIP:TOO: [2]: 1 + [1689923406.549252][6123:6125] CHIP:TOO: [3]: 3 + [1689923406.549279][6123:6125] CHIP:TOO: [4]: 4 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" + + - label: "Step 7a: TH reads GeneratedCommandList from DUT" + command: "readAttribute" + attribute: "GeneratedCommandList" + response: + constraints: + type: list + contains: [2, 5] + + - label: + "Step 7b: TH reads GeneratedCommandList attribute from DUT. 1.The list + MAY contain values in the Manufacturer Extensible Identifier (MEI) + range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI + range (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list + SHALL NOT contain any values in the Test Vendor or invalid range: + (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and + (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range + (0x0001 - 0xFFF1)" + verification: | + ./chip-tool groupkeymanagement read generated-command-list 1 0 + + Verify the "GeneratedCommandList" contains al ist of mandatory commands(values 2, 5) on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + + [1689923490.959431][6135:6137] CHIP:DMG: } + [1689923490.959610][6135:6137] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_FFF8 DataVersion: 4114127542 + [1689923490.959684][6135:6137] CHIP:TOO: GeneratedCommandList: 2 entries + [1689923490.959711][6135:6137] CHIP:TOO: [1]: 2 + [1689923490.959734][6135:6137] CHIP:TOO: [2]: 5 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_G_2_4.yaml b/src/app/tests/suites/certification/Test_TC_G_2_4.yaml new file mode 100644 index 00000000000000..22227d62333728 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_G_2_4.yaml @@ -0,0 +1,435 @@ +# Copyright (c) 2023 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: + 131.2.4. [TC-G-2.4] Commands - AddGroup Command with same GroupID on + Multiple Endpoint [DUT-Server] + +PICS: + - G.S + - MCORE.G.MULTIENDPOINT + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: "Pre-Conditions" + verification: | + 1 Note: This test case is applicable only when DUT supports Group Cluster at least on two end points: PIXIT.G.ENDPOINT,PIXIT.G.ENDPOINT2 + + 2 TH is commissioned with DUT + disabled: true + + - label: + "Step 1: Verify that PIXIT.G.ENDPOINT and PIXIT.G.ENDPOINT2 are + different." + verification: | + Verify that PIXIT.G.ENDPOINT and PIXIT.G.ENDPOINT2 are different. + disabled: true + + - label: + "Step 2: TH sends KeySetWrite command in the GroupKeyManagement + cluster to DUT on EP0 using a key that is pre-installed on the TH. + GroupKeySet fields are as follows: GroupKeySetID: 1 + GroupKeySecurityPolicy: TrustFirst (0) EpochKey0: + d0d1d2d3d4d5d6d7d8d9dadbdcdddedf EpochStartTime0: 2220000 EpochKey1: + d0d1d2d3d4d5d6d7d8d9dadbdcdddedf EpochStartTime1: 2220001 EpochKey2: + d0d1d2d3d4d5d6d7d8d9dadbdcdddedf EpochStartTime2: 2220002" + verification: | + ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 1, "groupKeySecurityPolicy": 0, "epochKey0": "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": + "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0 + + Verify DUT responds with SUCCESS status response on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689928280.676270][5573:5576] CHIP:DMG: InvokeResponseMessage = + [1689928280.676273][5573:5576] CHIP:DMG: { + [1689928280.676275][5573:5576] CHIP:DMG: suppressResponse = false, + [1689928280.676277][5573:5576] CHIP:DMG: InvokeResponseIBs = + [1689928280.676280][5573:5576] CHIP:DMG: [ + [1689928280.676281][5573:5576] CHIP:DMG: InvokeResponseIB = + [1689928280.676285][5573:5576] CHIP:DMG: { + [1689928280.676287][5573:5576] CHIP:DMG: CommandStatusIB = + [1689928280.676289][5573:5576] CHIP:DMG: { + [1689928280.676291][5573:5576] CHIP:DMG: CommandPathIB = + [1689928280.676293][5573:5576] CHIP:DMG: { + [1689928280.676295][5573:5576] CHIP:DMG: EndpointId = 0x0, + [1689928280.676297][5573:5576] CHIP:DMG: ClusterId = 0x3f, + [1689928280.676300][5573:5576] CHIP:DMG: CommandId = 0x0, + [1689928280.676302][5573:5576] CHIP:DMG: }, + [1689928280.676304][5573:5576] CHIP:DMG: + [1689928280.676306][5573:5576] CHIP:DMG: StatusIB = + [1689928280.676309][5573:5576] CHIP:DMG: { + [1689928280.676311][5573:5576] CHIP:DMG: status = 0x00 (SUCCESS), + [1689928280.676313][5573:5576] CHIP:DMG: }, + [1689928280.676315][5573:5576] CHIP:DMG: + [1689928280.676317][5573:5576] CHIP:DMG: }, + [1689928280.676320][5573:5576] CHIP:DMG: + [1689928280.676321][5573:5576] CHIP:DMG: }, + [1689928280.676324][5573:5576] CHIP:DMG: + [1689928280.676326][5573:5576] CHIP:DMG: ], + [1689928280.676328][5573:5576] CHIP:DMG: + disabled: true + + - label: + "Step 3: TH writes the GroupKeyMap attribute in the GroupKeyManagement + cluster on EP0 with one entry binding GroupId(0x0001) with + GroupKeySetID 1" + verification: | + ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 1, "groupKeySetID": 1, "fabricIndex": 1} ]' 1 0 + + Verify DUT responds with SUCCESS status response on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + 1689928416.859884][5757:5760] CHIP:DMG: WriteResponseMessage = + [1689928416.859894][5757:5760] CHIP:DMG: { + [1689928416.859903][5757:5760] CHIP:DMG: AttributeStatusIBs = + [1689928416.859921][5757:5760] CHIP:DMG: [ + [1689928416.859931][5757:5760] CHIP:DMG: AttributeStatusIB = + [1689928416.859943][5757:5760] CHIP:DMG: { + [1689928416.859953][5757:5760] CHIP:DMG: AttributePathIB = + [1689928416.859964][5757:5760] CHIP:DMG: { + [1689928416.859975][5757:5760] CHIP:DMG: Endpoint = 0x0, + [1689928416.859988][5757:5760] CHIP:DMG: Cluster = 0x3f, + [1689928416.859999][5757:5760] CHIP:DMG: Attribute = 0x0000_0000, + [1689928416.860009][5757:5760] CHIP:DMG: } + [1689928416.860025][5757:5760] CHIP:DMG: + [1689928416.860036][5757:5760] CHIP:DMG: StatusIB = + [1689928416.860050][5757:5760] CHIP:DMG: { + [1689928416.860062][5757:5760] CHIP:DMG: status = 0x00 (SUCCESS), + [1689928416.860071][5757:5760] CHIP:DMG: }, + [1689928416.860081][5757:5760] CHIP:DMG: + [1689928416.860088][5757:5760] CHIP:DMG: }, + [1689928416.860104][5757:5760] CHIP:DMG: + [1689928416.860113][5757:5760] CHIP:DMG: AttributeStatusIB = + [1689928416.860126][5757:5760] CHIP:DMG: { + [1689928416.860135][5757:5760] CHIP:DMG: AttributePathIB = + [1689928416.860145][5757:5760] CHIP:DMG: { + [1689928416.860156][5757:5760] CHIP:DMG: Endpoint = 0x0, + [1689928416.860167][5757:5760] CHIP:DMG: Cluster = 0x3f, + [1689928416.860177][5757:5760] CHIP:DMG: Attribute = 0x0000_0000, + [1689928416.860185][5757:5760] CHIP:DMG: ListIndex = Null, + [1689928416.860197][5757:5760] CHIP:DMG: } + [1689928416.860209][5757:5760] CHIP:DMG: + [1689928416.860216][5757:5760] CHIP:DMG: StatusIB = + [1689928416.860224][5757:5760] CHIP:DMG: { + [1689928416.860231][5757:5760] CHIP:DMG: status = 0x00 (SUCCESS), + [1689928416.860239][5757:5760] CHIP:DMG: }, + [1689928416.860251][5757:5760] CHIP:DMG: + [1689928416.860261][5757:5760] CHIP:DMG: }, + [1689928416.860277][5757:5760] CHIP:DMG: + [1689928416.860286][5757:5760] CHIP:DMG: ], + [1689928416.860307][5757:5760] CHIP:DMG: + [1689928416.860319][5757:5760] CHIP:DMG: InteractionModelRevision = 1 + [1689928416.860328][5757:5760] CHIP:DMG: } + disabled: true + + - label: + "Step 4: TH cleans up the groups by sending the RemoveAllGroups + command to the DUT on PIXIT.G.ENDPOINT,PIXIT.G.ENDPOINT2" + verification: | + ./chip-tool groups remove-all-groups 1 1 + + Verify DUT responds with SUCCESS status response on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689928700.354515][5800:5803] CHIP:DMG: { + [1689928700.354516][5800:5803] CHIP:DMG: suppressResponse = false, + [1689928700.354518][5800:5803] CHIP:DMG: InvokeResponseIBs = + [1689928700.354522][5800:5803] CHIP:DMG: [ + [1689928700.354524][5800:5803] CHIP:DMG: InvokeResponseIB = + [1689928700.354527][5800:5803] CHIP:DMG: { + [1689928700.354528][5800:5803] CHIP:DMG: CommandStatusIB = + [1689928700.354531][5800:5803] CHIP:DMG: { + [1689928700.354533][5800:5803] CHIP:DMG: CommandPathIB = + [1689928700.354537][5800:5803] CHIP:DMG: { + [1689928700.354539][5800:5803] CHIP:DMG: EndpointId = 0x1, + [1689928700.354541][5800:5803] CHIP:DMG: ClusterId = 0x4, + [1689928700.354544][5800:5803] CHIP:DMG: CommandId = 0x4, + [1689928700.354546][5800:5803] CHIP:DMG: }, + [1689928700.354549][5800:5803] CHIP:DMG: + [1689928700.354551][5800:5803] CHIP:DMG: StatusIB = + [1689928700.354554][5800:5803] CHIP:DMG: { + [1689928700.354556][5800:5803] CHIP:DMG: status = 0x00 (SUCCESS), + [1689928700.354558][5800:5803] CHIP:DMG: }, + [1689928700.354560][5800:5803] CHIP:DMG: + [1689928700.354562][5800:5803] CHIP:DMG: }, + [1689928700.354565][5800:5803] CHIP:DMG: + [1689928700.354567][5800:5803] CHIP:DMG: }, + [1689928700.354569][5800:5803] CHIP:DMG: + [1689928700.354571][5800:5803] CHIP:DMG: ], + [1689928700.354574][5800:5803] CHIP:DMG: + + + ./chip-tool groups remove-all-groups 1 2 + + Verify DUT responds with SUCCESS status response on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689928742.133296][5810:5813] CHIP:DMG: InvokeResponseMessage = + [1689928742.133303][5810:5813] CHIP:DMG: { + [1689928742.133311][5810:5813] CHIP:DMG: suppressResponse = false, + [1689928742.133317][5810:5813] CHIP:DMG: InvokeResponseIBs = + [1689928742.133329][5810:5813] CHIP:DMG: [ + [1689928742.133336][5810:5813] CHIP:DMG: InvokeResponseIB = + [1689928742.133348][5810:5813] CHIP:DMG: { + [1689928742.133355][5810:5813] CHIP:DMG: CommandStatusIB = + [1689928742.133364][5810:5813] CHIP:DMG: { + [1689928742.133371][5810:5813] CHIP:DMG: CommandPathIB = + [1689928742.133380][5810:5813] CHIP:DMG: { + [1689928742.133388][5810:5813] CHIP:DMG: EndpointId = 0x2, + [1689928742.133397][5810:5813] CHIP:DMG: ClusterId = 0x4, + [1689928742.133405][5810:5813] CHIP:DMG: CommandId = 0x4, + [1689928742.133413][5810:5813] CHIP:DMG: }, + [1689928742.133424][5810:5813] CHIP:DMG: + [1689928742.133435][5810:5813] CHIP:DMG: StatusIB = + [1689928742.133447][5810:5813] CHIP:DMG: { + [1689928742.133455][5810:5813] CHIP:DMG: status = 0x00 (SUCCESS), + [1689928742.133463][5810:5813] CHIP:DMG: }, + [1689928742.133472][5810:5813] CHIP:DMG: + [1689928742.133478][5810:5813] CHIP:DMG: }, + [1689928742.133490][5810:5813] CHIP:DMG: + [1689928742.133500][5810:5813] CHIP:DMG: }, + [1689928742.133508][5810:5813] CHIP:DMG: + [1689928742.133514][5810:5813] CHIP:DMG: ], + [1689928742.133526][5810:5813] CHIP:DMG: + disabled: true + + - label: + "Step 5a: TH sends AddGroup command to DUT on PIXIT.G.ENDPOINT with + the following fields: GroupID as 0x0001 GroupName as 'Gp1'" + PICS: G.S.C00.Rsp && G.S.C00.Tx + verification: | + ./chip-tool groups add-group 0x0001 Gp1 1 1 + + Verify the AddGroupResponse with following field: + Status is SUCCESS + GroupID is 0x0001 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689928877.256544][5836:5839] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0000 + [1689928877.256740][5836:5839] CHIP:TOO: AddGroupResponse: { + [1689928877.256774][5836:5839] CHIP:TOO: status: 0 + [1689928877.256777][5836:5839] CHIP:TOO: groupID: 1 + [1689928877.256780][5836:5839] CHIP:TOO: } + disabled: true + + - label: + "Step 5b: TH sends AddGroup command to DUT on PIXIT.G.ENDPOINT2 with + the following fields: GroupID as 0x0001 GroupName as 'Gp2'" + PICS: G.S.C00.Rsp && G.S.C00.Tx + verification: | + ./chip-tool groups add-group 0x0001 Gp2 1 2 + + Verify the AddGroupResponse with following field: + Status is SUCCESS + GroupID is 0x0001 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689928983.569742][5852:5855] CHIP:DMG: Received Command Response Data, Endpoint=2 Cluster=0x0000_0004 Command=0x0000_0000 + [1689928983.569765][5852:5855] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0004 Command 0x0000_0000 + [1689928983.569795][5852:5855] CHIP:TOO: AddGroupResponse: { + [1689928983.569805][5852:5855] CHIP:TOO: status: 0 + [1689928983.569813][5852:5855] CHIP:TOO: groupID: 1 + [1689928983.569821][5852:5855] CHIP:TOO: } + disabled: true + + - label: + "Step 6: TH reads GroupTable attribute from the GroupKeyManagement + cluster from DUT on EP0" + PICS: GRPKEY.S.A0001 + verification: | + ./chip-tool groupkeymanagement read group-table 1 0 + + Verify the GroupTable with the following entries + GroupID is 0x0001 + If G.S.F00(GN) is true then GroupName is Gp2 , Otherwise empty + Endpoints list contains a endpoints 1, 2 + on TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689929132.327353][5868:5871] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 229830719 + [1689929132.327657][5868:5871] CHIP:TOO: GroupTable: 1 entries + [1689929132.327692][5868:5871] CHIP:TOO: [1]: { + [1689929132.327708][5868:5871] CHIP:TOO: GroupId: 1 + [1689929132.327724][5868:5871] CHIP:TOO: Endpoints: 2 entries + [1689929132.327736][5868:5871] CHIP:TOO: [1]: 1 + [1689929132.327744][5868:5871] CHIP:TOO: [2]: 2 + [1689929132.327754][5868:5871] CHIP:TOO: GroupName: Gp2 + [1689929132.327762][5868:5871] CHIP:TOO: FabricIndex: 1 + [1689929132.327769][5868:5871] CHIP:TOO: } + disabled: true + + - label: + "Step 7: Verify that the GroupTable contains an entry with the + GroupName as 'Gp2'" + PICS: G.S.F00 + verification: | + ./chip-tool groupkeymanagement read group-table 1 0 + + Verify the GroupTable with the following entries + GroupID is 0x0001 + If G.S.F00(GN) is true then GroupName is Gp2 , Otherwise empty + Endpoints list contains a endpoints 1, 2 + on TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689929132.327353][5868:5871] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 229830719 + [1689929132.327657][5868:5871] CHIP:TOO: GroupTable: 1 entries + [1689929132.327692][5868:5871] CHIP:TOO: [1]: { + [1689929132.327708][5868:5871] CHIP:TOO: GroupId: 1 + [1689929132.327724][5868:5871] CHIP:TOO: Endpoints: 2 entries + [1689929132.327736][5868:5871] CHIP:TOO: [1]: 1 + [1689929132.327744][5868:5871] CHIP:TOO: [2]: 2 + [1689929132.327754][5868:5871] CHIP:TOO: GroupName: Gp2 + [1689929132.327762][5868:5871] CHIP:TOO: FabricIndex: 1 + [1689929132.327769][5868:5871] CHIP:TOO: } + disabled: true + + - label: + "Step 8: TH sends ViewGroup command to DUT on PIXIT.G.ENDPOINT with + the following fields: GroupID as 0x0001" + PICS: G.S.C01.Rsp && G.S.C01.Tx + verification: | + ./chip-tool groups view-group 0x0001 1 1 + + Verify the ViewGroupResponse with following fields : + Status is SUCCESS + GroupID is 0x0001 + If G.S.F00(GN) is true then GroupName is Gp1, Otherwise empty + on TH(Chip-tool) Log , below is the sample log provided for the raspi platform: + + Note: GroupName for GroupID 0x0001 is same on ENDPOINT 1 and ENDPOINT 2 + + [1689929265.503341][5898:5901] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0001 + [1689929265.503352][5898:5901] CHIP:TOO: ViewGroupResponse: { + [1689929265.503357][5898:5901] CHIP:TOO: status: 0 + [1689929265.503359][5898:5901] CHIP:TOO: groupID: 1 + [1689929265.503361][5898:5901] CHIP:TOO: groupName: Gp2 + [1689929265.503363][5898:5901] CHIP:TOO: } + disabled: true + + - label: + "Step 9: Verify that the ViewGroupResponse contains GroupName as + 'GP2'. Note: GroupName for GroupID 0x0001 is same on PIXIT.G.ENDPOINT + and PIXIT.G.ENDPOINT2" + PICS: G.S.F00 + verification: | + ./chip-tool groups view-group 0x0001 1 1 + + Verify the ViewGroupResponse with following fields : + Status is SUCCESS + GroupID is 0x0001 + If G.S.F00(GN) is true then GroupName is Gp1, Otherwise empty + on TH(Chip-tool) Log , below is the sample log provided for the raspi platform: + + Note: GroupName for GroupID 0x0001 is same on ENDPOINT 1 and ENDPOINT 2 + + [1689929265.503341][5898:5901] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0001 + [1689929265.503352][5898:5901] CHIP:TOO: ViewGroupResponse: { + [1689929265.503357][5898:5901] CHIP:TOO: status: 0 + [1689929265.503359][5898:5901] CHIP:TOO: groupID: 1 + [1689929265.503361][5898:5901] CHIP:TOO: groupName: Gp2 + [1689929265.503363][5898:5901] CHIP:TOO: } + disabled: true + + - label: + "Step 10: TH sends RemoveGroup command to DUT on PIXIT.G.ENDPOINT as + unicast with the following field: GroupID as 0x0001" + PICS: G.S.C03.Rsp && G.S.C03.Tx + verification: | + ./chip-tool groups remove-group 0x0001 1 1 + + Verify the RemoveGroupResponse with Status as SUCCESS and GroupID is 0x0001 on the TH(Chip-tool) Log, below is the sample log provided for the raspi platform: + + [1689929333.591022][5912:5915] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0003 + [1689929333.591032][5912:5915] CHIP:TOO: RemoveGroupResponse: { + [1689929333.591035][5912:5915] CHIP:TOO: status: 0 + [1689929333.591037][5912:5915] CHIP:TOO: groupID: 1 + [1689929333.591039][5912:5915] CHIP:TOO: } + disabled: true + + - label: + "Step 11: TH reads GroupTable attribute from the GroupKeyManagement + cluster from DUT on EP0" + PICS: GRPKEY.S.A0001 + verification: | + ./chip-tool groupkeymanagement read group-table 1 0 + + Verify that Grouptable entry with GroupID 0x0001 is associated with the Endpoint 2 and no entry with GroupID 0x0001 associated with the Endpoint 1 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689929376.037105][5924:5927] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 229830719 + [1689929376.037147][5924:5927] CHIP:TOO: GroupTable: 1 entries + [1689929376.037191][5924:5927] CHIP:TOO: [1]: { + [1689929376.037204][5924:5927] CHIP:TOO: GroupId: 1 + [1689929376.037213][5924:5927] CHIP:TOO: Endpoints: 1 entries + [1689929376.037224][5924:5927] CHIP:TOO: [1]: 2 + [1689929376.037233][5924:5927] CHIP:TOO: GroupName: Gp2 + [1689929376.037241][5924:5927] CHIP:TOO: FabricIndex: 1 + [1689929376.037246][5924:5927] CHIP:TOO: } + disabled: true + + - label: + "Step 12: TH sends RemoveGroup command to DUT on PIXIT.G.ENDPOINT2 as + unicast with the following field: GroupID as 0x0001" + PICS: G.S.C03.Rsp && G.S.C03.Tx + verification: | + ./chip-tool groups remove-group 0x0001 1 2 + + Verify DUT responds with SUCCESS status response on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689929465.586716][5960:5963] CHIP:DMG: }, + [1689929465.586745][5960:5963] CHIP:DMG: Received Command Response Data, Endpoint=2 Cluster=0x0000_0004 Command=0x0000_0003 + [1689929465.586771][5960:5963] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0004 Command 0x0000_0003 + [1689929465.586795][5960:5963] CHIP:TOO: RemoveGroupResponse: { + [1689929465.586813][5960:5963] CHIP:TOO: status: 0 + [1689929465.586818][5960:5963] CHIP:TOO: groupID: 1 + [1689929465.586826][5960:5963] CHIP:TOO: } + disabled: true + + - label: + "Step 13: TH reads GroupTable attribute from the GroupKeyManagement + cluster from DUT on EP0" + PICS: GRPKEY.S.A0001 + verification: | + ./chip-tool groupkeymanagement read group-table 1 0 + + Verify that there is no entry that has GroupID 0x0001 associated with the Endpoint 2 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1689934348.530688][6829:6831] CHIP:DMG: ReportDataMessage = + [1689934348.530718][6829:6831] CHIP:DMG: { + [1689934348.530740][6829:6831] CHIP:DMG: AttributeReportIBs = + [1689934348.530775][6829:6831] CHIP:DMG: [ + [1689934348.530801][6829:6831] CHIP:DMG: AttributeReportIB = + [1689934348.530837][6829:6831] CHIP:DMG: { + [1689934348.530864][6829:6831] CHIP:DMG: AttributeDataIB = + [1689934348.530900][6829:6831] CHIP:DMG: { + [1689934348.530935][6829:6831] CHIP:DMG: DataVersion = 0xdc445868, + [1689934348.530968][6829:6831] CHIP:DMG: AttributePathIB = + [1689934348.531003][6829:6831] CHIP:DMG: { + [1689934348.531056][6829:6831] CHIP:DMG: Endpoint = 0x0, + [1689934348.531095][6829:6831] CHIP:DMG: Cluster = 0x3f, + [1689934348.531143][6829:6831] CHIP:DMG: Attribute = 0x0000_0001, + [1689934348.531178][6829:6831] CHIP:DMG: } + [1689934348.531225][6829:6831] CHIP:DMG: + [1689934348.531259][6829:6831] CHIP:DMG: Data = [ + [1689934348.531303][6829:6831] CHIP:DMG: + [1689934348.531340][6829:6831] CHIP:DMG: ], + [1689934348.531384][6829:6831] CHIP:DMG: }, + [1689934348.531421][6829:6831] CHIP:DMG: + [1689934348.531450][6829:6831] CHIP:DMG: }, + [1689934348.531496][6829:6831] CHIP:DMG: + [1689934348.531521][6829:6831] CHIP:DMG: ], + [1689934348.531566][6829:6831] CHIP:DMG: + [1689934348.531592][6829:6831] CHIP:DMG: SuppressResponse = true, + [1689934348.531619][6829:6831] CHIP:DMG: InteractionModelRevision = 1 + [1689934348.531655][6829:6831] CHIP:DMG: } + [1689934348.531858][6829:6831] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 3695466600 + [1689934348.531940][6829:6831] CHIP:TOO: GroupTable: 0 entries + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_G_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_G_3_1_Simulated.yaml deleted file mode 100644 index 291ad030cf8cf2..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_G_3_1_Simulated.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 120.3.1. [TC-G-3.1] Attributes [DUT-Client] - -PICS: - - G.C - -config: - nodeId: 0x12344321 - cluster: "Groups" - endpoint: 1 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads NameSupport attribute value from TH" - PICS: G.C.A0000 - wait: "readAttribute" - attribute: "NameSupport" diff --git a/src/app/tests/suites/certification/Test_TC_HEPAFREMON_1_1.yaml b/src/app/tests/suites/certification/Test_TC_HEPAFREMON_1_1.yaml index 24f4d7054afeaa..04db88ae83189b 100644 --- a/src/app/tests/suites/certification/Test_TC_HEPAFREMON_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_HEPAFREMON_1_1.yaml @@ -100,7 +100,7 @@ tests: contains: [2, 65528, 65529, 65531, 65532, 65533] - label: - "Step 4a: Read the feature dependent(HEPAFREMON.S.F00) attribute in + "Step 4b: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList" PICS: HEPAFREMON.S.F00 command: "readAttribute" @@ -111,9 +111,9 @@ tests: contains: [0, 1, 2] - label: - "Step 4b: Read the optional attribute InPlaceIndicator - (HEPAFREMON.S.A0002) in AttributeList" - PICS: HEPAFREMON.S.A0002 + "Step 4c: Read the optional attribute InPlaceIndicator + (HEPAFREMON.S.A0003) in AttributeList" + PICS: HEPAFREMON.S.A0003 command: "readAttribute" attribute: "AttributeList" response: @@ -121,6 +121,28 @@ tests: type: list contains: [3] + - label: + "Step 4d: Read the optional attribute LastChangedTime + (HEPAFREMON.S.A0004) in AttributeList" + PICS: HEPAFREMON.S.A0004 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [4] + + - label: + "Step 4e: Read the optional attribute ReplacementProductList + (HEPAFREMON.S.F02) in AttributeList" + PICS: HEPAFREMON.S.F02 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [5] + - label: "Step 5: TH reads EventList attribute from DUT" PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_IDM_10_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_10_1.yaml new file mode 100644 index 00000000000000..12d5a1140aa187 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_IDM_10_1.yaml @@ -0,0 +1,290 @@ +# Copyright (c) 2023 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: + 32.6.8. [TC-IDM-10.1] Cluster requirements - Global attributes [DUT as + Server] + +PICS: + - MCORE.IDM.S + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: + "Step 1: TH performs a wildcard read of all attributes and endpoints" + verification: | + TH(chip-tool) sends the wildcard read command to read all attributes and endpoints from DUT(Reference app/all-clusters-app) + ./chip-tool any read-by-id 0xFFFFFFFF 0xFFFFFFFF 1 0xFFFF + + Please store the log for use in the next step validation. + disabled: true + + - label: + "Step 2: For every cluster on every endpoint verify that the cluster + includes all the mandatory global attributes: ClusterRevision, + FeatureMap, AttributeList, AcceptedCommandList, GeneratedCommandList, + EventList" + verification: | + The following log is an example of the output obtained for Identify Cluster on Endpoint 0. Descriptor cluster on Endpoint 1 and Occupancy cluster on Endpoint 2. + Pls repeat this for every cluster on every endpoint. The log represents the attributes of clusters found on different endpoints. + + Verify the presence of all mandatory global attributes for every cluster on every endpoint: + 1. ClusterRevision + 2. FeatureMap + 3. EventList + 4. AttributeList + 5. AcceptedCommandList + 6. GeneratedCommandList + + Verification Instructions: + Please use the provided example log as a guide to verify the attributes for other clusters and endpoints in a similar manner. + + Example verification log for 'Identify Cluster' (0x0000_0003) on Endpoint 0 : + [1690267325.176118][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_0001 DataVersion: 3031281428 + [1690267325.176127][9552:9554] CHIP:TOO: IdentifyType: 2 + [1690267325.176149][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFC DataVersion: 3031281428 + [1690267325.176152][9552:9554] CHIP:TOO: FeatureMap: 0 + [1690267325.176160][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFD DataVersion: 3031281428 + [1690267325.176163][9552:9554] CHIP:TOO: ClusterRevision: 4 + [1690267325.176182][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFF8 DataVersion: 3031281428 + [1690267325.176186][9552:9554] CHIP:TOO: GeneratedCommandList: 0 entries + [1690267325.176202][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFF9 DataVersion: 3031281428 + [1690267325.176206][9552:9554] CHIP:TOO: AcceptedCommandList: 2 entries + [1690267325.176208][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.176216][9552:9554] CHIP:TOO: [2]: 64 + [1690267325.176228][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFA DataVersion: 3031281428 + [1690267325.176231][9552:9554] CHIP:TOO: EventList: 0 entries + [1690267325.176250][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFB DataVersion: 3031281428 + [1690267325.176254][9552:9554] CHIP:TOO: AttributeList: 8 entries + [1690267325.176256][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.176258][9552:9554] CHIP:TOO: [2]: 1 + [1690267325.176261][9552:9554] CHIP:TOO: [3]: 65528 + [1690267325.176262][9552:9554] CHIP:TOO: [4]: 65529 + [1690267325.176264][9552:9554] CHIP:TOO: [5]: 65530 + [1690267325.176267][9552:9554] CHIP:TOO: [6]: 65531 + [1690267325.176269][9552:9554] CHIP:TOO: [7]: 65532 + [1690267325.176272][9552:9554] CHIP:TOO: [8]: 65533 + [1690267325.176274][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_0000 DataVersion: 800446264 + [1690267325.176277][9552:9554] CHIP:TOO: NameSupport: 128 + + Example verification log for ' Descriptor cluster ' (0x0000_001D) on Endpoint 1 : + [1690267325.249870][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 762289150 + [1690267325.249874][9552:9554] CHIP:TOO: PartsList: 0 entries + [1690267325.249878][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_FFFC DataVersion: 762289150 + [1690267325.249881][9552:9554] CHIP:TOO: FeatureMap: 0 + [1690267325.249891][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_FFFD DataVersion: 762289150 + [1690267325.249893][9552:9554] CHIP:TOO: ClusterRevision: 1 + [1690267325.249910][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_FFF8 DataVersion: 762289150 + [1690267325.249914][9552:9554] CHIP:TOO: GeneratedCommandList: 0 entries + [1690267325.249926][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_FFF9 DataVersion: 762289150 + [1690267325.249929][9552:9554] CHIP:TOO: AcceptedCommandList: 0 entries + [1690267325.249942][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_FFFA DataVersion: 762289150 + [1690267325.249946][9552:9554] CHIP:TOO: EventList: 0 entries + [1690267325.249965][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_FFFB DataVersion: 762289150 + [1690267325.249972][9552:9554] CHIP:TOO: AttributeList: 10 entries + [1690267325.249975][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.249978][9552:9554] CHIP:TOO: [2]: 1 + [1690267325.249980][9552:9554] CHIP:TOO: [3]: 2 + [1690267325.249982][9552:9554] CHIP:TOO: [4]: 3 + [1690267325.249986][9552:9554] CHIP:TOO: [5]: 65528 + [1690267325.249989][9552:9554] CHIP:TOO: [6]: 65529 + [1690267325.249992][9552:9554] CHIP:TOO: [7]: 65530 + [1690267325.249995][9552:9554] CHIP:TOO: [8]: 65531 + [1690267325.249999][9552:9554] CHIP:TOO: [9]: 65532 + [1690267325.250002][9552:9554] CHIP:TOO: [10]: 65533 + [1690267325.250017][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001E Attribute 0x0000_0000 DataVersion: 3536645262 + + Example verification log for ' Occupancy cluster ' (0x0000_0406) on Endpoint 2 : + + [1690267325.401773][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_0000 DataVersion: 3381359521 + [1690267325.401776][9552:9554] CHIP:TOO: Occupancy: 0 + [1690267325.401785][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_0001 DataVersion: 3381359521 + [1690267325.401787][9552:9554] CHIP:TOO: OccupancySensorType: 0 + [1690267325.401795][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_0002 DataVersion: 3381359521 + [1690267325.401798][9552:9554] CHIP:TOO: OccupancySensorTypeBitmap: 1 + [1690267325.401806][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFC DataVersion: 3381359521 + [1690267325.401808][9552:9554] CHIP:TOO: FeatureMap: 0 + [1690267325.401816][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFD DataVersion: 3381359521 + [1690267325.401819][9552:9554] CHIP:TOO: ClusterRevision: 3 + [1690267325.401834][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFF8 DataVersion: 3381359521 + [1690267325.401837][9552:9554] CHIP:TOO: GeneratedCommandList: 0 entries + [1690267325.401848][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFF9 DataVersion: 3381359521 + [1690267325.401850][9552:9554] CHIP:TOO: AcceptedCommandList: 0 entries + [1690267325.401861][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFA DataVersion: 3381359521 + [1690267325.401864][9552:9554] CHIP:TOO: EventList: 0 entries + [1690267325.401876][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFB DataVersion: 3381359521 + [1690267325.401880][9552:9554] CHIP:TOO: AttributeList: 9 entries + [1690267325.401882][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.401884][9552:9554] CHIP:TOO: [2]: 1 + [1690267325.401886][9552:9554] CHIP:TOO: [3]: 2 + [1690267325.401888][9552:9554] CHIP:TOO: [4]: 65528 + [1690267325.401890][9552:9554] CHIP:TOO: [5]: 65529 + [1690267325.401892][9552:9554] CHIP:TOO: [6]: 65530 + [1690267325.401894][9552:9554] CHIP:TOO: [7]: 65531 + [1690267325.401896][9552:9554] CHIP:TOO: [8]: 65532 + [1690267325.401898][9552:9554] CHIP:TOO: [9]: 65533 + [1690267325.401975][9552:9554] CHIP:EM: <<< [E:6807i S:13119 M:239700033 (Ack:147952547)] (S) Msg TX to 1:0000000000000001 [83EA] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690267325.401983][9552:9554] CHIP:IN: (S) Sending msg 239700033 on secure session with LSID: 13119 + [1690267325.402014][9552:9554] CHIP:EM: Flushed pending ack for MessageCounter:147952547 on exchange 6807i + disabled: true + + - label: + "Step 3: For every cluster on every endpoint, verify that each + attribute reported in the AttributeList exactly matches the set of + received attributes from the wildcard read. In other words, if an + attribute ID is present in the AttributeList, a report for that path + must have been seen in the read of step 1, and if an attribute path + exists in the read of step 1, its ID must be present in the + AttributeList of the associated cluster within the hierarchy." + verification: | + The following log is an example of the output obtained For every cluster on every endpoint. The log represents the attributes of clusters found on different endpoints. + + Verify AttributeList for Each Cluster on Every Endpoint, follow the verification process: + 1. Examine the AttributeList reported for the specific cluster. + 2. Cross-reference the attributes listed in the AttributeList with the set of received attributes from the wildcard read (Step 1). + 3. Ensure that each attribute ID present in the AttributeList is also seen in the received attributes from the wildcard read, and vice versa. + + Verification Instructions: + Please use the provided example log as a guide to verify the attributes for other clusters and endpoints in a similar manner. + + + Example verification log for 'Identify Cluster' (0x0000_0003) on Endpoint 0 : + - AttributeList: [0, 1, 65528, 65529, 65530, 65531, 65532, 65532] + - Wildcard Read Received Attributes: [0, 1, 65528, 65529, 65530, 65531, 65532, 65532] + - All attribute IDs in the AttributeList are present in the received attributes from the wildcard read. + - All received attributes from the wildcard read have their corresponding attribute IDs listed in the AttributeList. + [1690267325.175008][9552:9554] CHIP:DMG: InteractionModelRevision = 1 + [1690267325.175013][9552:9554] CHIP:DMG: } + [1690267325.175842][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_0000 DataVersion: 3031281428 + [1690267325.175868][9552:9554] CHIP:TOO: IdentifyTime: 0 + [1690267325.176118][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_0001 DataVersion: 3031281428 + [1690267325.176127][9552:9554] CHIP:TOO: IdentifyType: 2 + [1690267325.176149][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFC DataVersion: 3031281428 + [1690267325.176152][9552:9554] CHIP:TOO: FeatureMap: 0 + [1690267325.176160][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFD DataVersion: 3031281428 + [1690267325.176163][9552:9554] CHIP:TOO: ClusterRevision: 4 + [1690267325.176182][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFF8 DataVersion: 3031281428 + [1690267325.176186][9552:9554] CHIP:TOO: GeneratedCommandList: 0 entries + [1690267325.176202][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFF9 DataVersion: 3031281428 + [1690267325.176206][9552:9554] CHIP:TOO: AcceptedCommandList: 2 entries + [1690267325.176208][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.176216][9552:9554] CHIP:TOO: [2]: 64 + [1690267325.176228][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFA DataVersion: 3031281428 + [1690267325.176231][9552:9554] CHIP:TOO: EventList: 0 entries + [1690267325.176250][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFB DataVersion: 3031281428 + [1690267325.176254][9552:9554] CHIP:TOO: AttributeList: 8 entries + [1690267325.176256][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.176258][9552:9554] CHIP:TOO: [2]: 1 + [1690267325.176261][9552:9554] CHIP:TOO: [3]: 65528 + [1690267325.176262][9552:9554] CHIP:TOO: [4]: 65529 + [1690267325.176264][9552:9554] CHIP:TOO: [5]: 65530 + [1690267325.176267][9552:9554] CHIP:TOO: [6]: 65531 + [1690267325.176269][9552:9554] CHIP:TOO: [7]: 65532 + [1690267325.176272][9552:9554] CHIP:TOO: [8]: 65533 + [1690267325.176274][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_0000 DataVersion: 800446264 + [1690267325.176277][9552:9554] CHIP:TOO: NameSupport: 128 + [1690267325.176285][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_FFFC DataVersion: 800446264 + [1690267325.176290][9552:9554] CHIP:TOO: FeatureMap: 1 + [1690267325.176298][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_FFFD DataVersion: 800446264 + [1690267325.176301][9552:9554] CHIP:TOO: ClusterRevision: 4 + [1690267325.176324][9552:9554] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_FFF8 DataVersion: 800446264 + [1690267325.176328][9552:9554] CHIP:TOO: GeneratedCommandList: 4 entries + + + Example verification log for ' SWITCH cluster ' (0x0000_003B) on Endpoint 1 : + - AttributeList: [0, 1, 2, 65528, 65529, 65530, 65531, 65532, 65532] + - Wildcard Read Received Attributes: [0, 1, 2, 65528, 65529, 65530, 65531, 65532, 65532] + - All attribute IDs in the AttributeList are present in the received attributes from the wildcard read. + - All received attributes from the wildcard read have their corresponding attribute IDs listed in the AttributeList. + + [1690267325.252505][9552:9554] CHIP:TOO: [12]: 65532 + [1690267325.252507][9552:9554] CHIP:TOO: [13]: 65533 + [1690267325.252510][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_0000 DataVersion: 279843917 + [1690267325.252512][9552:9554] CHIP:TOO: NumberOfPositions: 2 + [1690267325.252520][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_0001 DataVersion: 279843917 + [1690267325.252522][9552:9554] CHIP:TOO: CurrentPosition: 0 + [1690267325.252531][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_0002 DataVersion: 279843917 + [1690267325.252533][9552:9554] CHIP:TOO: MultiPressMax: 2 + [1690267325.252541][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_FFFC DataVersion: 279843917 + [1690267325.252543][9552:9554] CHIP:TOO: FeatureMap: 1 + [1690267325.252551][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_FFFD DataVersion: 279843917 + [1690267325.252553][9552:9554] CHIP:TOO: ClusterRevision: 1 + [1690267325.252569][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_FFF8 DataVersion: 279843917 + [1690267325.252571][9552:9554] CHIP:TOO: GeneratedCommandList: 0 entries + [1690267325.252580][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_FFF9 DataVersion: 279843917 + [1690267325.252583][9552:9554] CHIP:TOO: AcceptedCommandList: 0 entries + [1690267325.252596][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_FFFA DataVersion: 279843917 + [1690267325.252598][9552:9554] CHIP:TOO: EventList: 1 entries + [1690267325.252601][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.252620][9552:9554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_003B Attribute 0x0000_FFFB DataVersion: 279843917 + [1690267325.252625][9552:9554] CHIP:TOO: AttributeList: 9 entries + [1690267325.252627][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.252629][9552:9554] CHIP:TOO: [2]: 1 + [1690267325.252630][9552:9554] CHIP:TOO: [3]: 2 + [1690267325.252632][9552:9554] CHIP:TOO: [4]: 65528 + [1690267325.252634][9552:9554] CHIP:TOO: [5]: 65529 + [1690267325.252636][9552:9554] CHIP:TOO: [6]: 65530 + [1690267325.252638][9552:9554] CHIP:TOO: [7]: 65531 + [1690267325.252640][9552:9554] CHIP:TOO: [8]: 65532 + [1690267325.252642][9552:9554] CHIP:TOO: [9]: 65533 + [1690267325.252687][9552:9554] CHIP:EM: <<< [E:6807i S:13119 M:239699999 (Ack:147952513)] (S) Msg TX to 1:0000000000000001 [83EA] --- Type 0001:01 (IM:StatusResponse) + [1690267325.252691][9552:9554] CHIP:IN: (S) Sending msg 239699999 on secure session with LSID: 13119 + + Example verification log for ' Occupancy cluster ' (0x0000_0406) on Endpoint 2 : + - AttributeList: [0, 1, 2, 65528, 65529, 65530, 65531, 65532, 65532] + - Wildcard Read Received Attributes: [0, 1, 2, 65528, 65529, 65530, 65531, 65532, 65532] + - All attribute IDs in the AttributeList are present in the received attributes from the wildcard read. + - All received attributes from the wildcard read have their corresponding attribute IDs listed in the AttributeList. + [1690267325.401762][9552:9554] CHIP:TOO: [8]: 65528 + [1690267325.401764][9552:9554] CHIP:TOO: [9]: 65529 + [1690267325.401765][9552:9554] CHIP:TOO: [10]: 65530 + [1690267325.401767][9552:9554] CHIP:TOO: [11]: 65531 + [1690267325.401769][9552:9554] CHIP:TOO: [12]: 65532 + [1690267325.401771][9552:9554] CHIP:TOO: [13]: 65533 + [1690267325.401773][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_0000 DataVersion: 3381359521 + [1690267325.401776][9552:9554] CHIP:TOO: Occupancy: 0 + [1690267325.401785][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_0001 DataVersion: 3381359521 + [1690267325.401787][9552:9554] CHIP:TOO: OccupancySensorType: 0 + [1690267325.401795][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_0002 DataVersion: 3381359521 + [1690267325.401798][9552:9554] CHIP:TOO: OccupancySensorTypeBitmap: 1 + [1690267325.401806][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFC DataVersion: 3381359521 + [1690267325.401808][9552:9554] CHIP:TOO: FeatureMap: 0 + [1690267325.401816][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFD DataVersion: 3381359521 + [1690267325.401819][9552:9554] CHIP:TOO: ClusterRevision: 3 + [1690267325.401834][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFF8 DataVersion: 3381359521 + [1690267325.401837][9552:9554] CHIP:TOO: GeneratedCommandList: 0 entries + [1690267325.401848][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFF9 DataVersion: 3381359521 + [1690267325.401850][9552:9554] CHIP:TOO: AcceptedCommandList: 0 entries + [1690267325.401861][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFA DataVersion: 3381359521 + [1690267325.401864][9552:9554] CHIP:TOO: EventList: 0 entries + [1690267325.401876][9552:9554] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0406 Attribute 0x0000_FFFB DataVersion: 3381359521 + [1690267325.401880][9552:9554] CHIP:TOO: AttributeList: 9 entries + [1690267325.401882][9552:9554] CHIP:TOO: [1]: 0 + [1690267325.401884][9552:9554] CHIP:TOO: [2]: 1 + [1690267325.401886][9552:9554] CHIP:TOO: [3]: 2 + [1690267325.401888][9552:9554] CHIP:TOO: [4]: 65528 + [1690267325.401890][9552:9554] CHIP:TOO: [5]: 65529 + [1690267325.401892][9552:9554] CHIP:TOO: [6]: 65530 + [1690267325.401894][9552:9554] CHIP:TOO: [7]: 65531 + [1690267325.401896][9552:9554] CHIP:TOO: [8]: 65532 + [1690267325.401898][9552:9554] CHIP:TOO: [9]: 65533 + [1690267325.401975][9552:9554] CHIP:EM: <<< [E:6807i S:13119 M:239700033 (Ack:147952547)] (S) Msg TX to 1:0000000000000001 [83EA] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690267325.401983][9552:9554] CHIP:IN: (S) Sending msg 239700033 on secure session with LSID: 13119 + [1690267325.402014][9552:9554] CHIP:EM: Flushed pending ack for MessageCounter:147952547 on exchange 6807i + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_IDM_11_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_11_1.yaml new file mode 100644 index 00000000000000..1598e76f4d0d2d --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_IDM_11_1.yaml @@ -0,0 +1,81 @@ +# Copyright (c) 2023 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: + 32.6.9. [TC-IDM-11.1] Data types - attribute strings [DUT as Server] - data + model + +PICS: + - MCORE.IDM.S + +config: + nodeId: 0x12344321 + cluster: "Basic Information" + endpoint: 0 + +tests: + - label: + "Step 1: TH performs a wildcard read of all attributes and endpoints" + verification: | + TH(chip-tool) sends the wildcard read command to read all attributes and endpoints from DUT(Reference app/all-clusters-app) + ./chip-tool any read-by-id 0xFFFFFFFF 0xFFFFFFFF 1 0xFFFF + + Please store the log for use in the next step validation. + disabled: true + + - label: + "Step 2: For every returned attribute, if the attribute type is string + and the returned value is not Null or empty, ensure the returned value + is a valid UTF-8-encoded string. It is not permitted to have partially + encoded codepoints between the last legally-encoded codepoint and the + end of the string." + verification: | + From the privious step log, Verify UTF-8 Encoding for Each Returned String Attribute. + For each returned attribute with the attribute type "string," follow the verification process: + 1. Check if the returned value is not Null or empty. + 2. If the returned value is not Null or empty, validate that it is a valid UTF-8-encoded string. + 3. Ensure that there are no partially encoded codepoints between the last legally-encoded codepoint and the end of the string. + + The following log is an example of the output obtained for Basic Inforamtion Cluster. Pls repeat this for every cluster on every endpoint. The log represents the attributes of clusters found on different endpoints. + + Verification Instructions: + Please use the provided example log as a guide to verify the attributes for other clusters and endpoints in a similar manner. + + Example verification log for 'Basic information Cluster' (0x0000_0028) on Endpoint 0 : + [1690271126.212327][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0000 DataVersion: 338522070 + [1690271126.212330][10587:10589] CHIP:TOO: DataModelRevision: 1 + [1690271126.212344][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0001 DataVersion: 338522070 + [1690271126.212348][10587:10589] CHIP:TOO: VendorName: TEST_VENDOR + [1690271126.212358][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0002 DataVersion: 338522070 + [1690271126.212361][10587:10589] CHIP:TOO: VendorID: 65521 + [1690271126.212369][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0003 DataVersion: 338522070 + [1690271126.212371][10587:10589] CHIP:TOO: ProductName: TEST_PRODUCT + [1690271126.212379][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0004 DataVersion: 338522070 + [1690271126.212382][10587:10589] CHIP:TOO: ProductID: 32769 + [1690271126.212390][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 338522070 + [1690271126.212392][10587:10589] CHIP:TOO: NodeLabel: + [1690271126.212401][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0006 DataVersion: 338522070 + [1690271126.212403][10587:10589] CHIP:TOO: Location: XX + [1690271126.212411][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0007 DataVersion: 338522070 + [1690271126.212413][10587:10589] CHIP:TOO: HardwareVersion: 0 + [1690271126.212422][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0008 DataVersion: 338522070 + [1690271126.212424][10587:10589] CHIP:TOO: HardwareVersionString: TEST_VERSION + [1690271126.212432][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0009 DataVersion: 338522070 + [1690271126.212434][10587:10589] CHIP:TOO: SoftwareVersion: 1 + [1690271126.212443][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_000A DataVersion: 338522070 + [1690271126.212445][10587:10589] CHIP:TOO: SoftwareVersionString: 1.0 + [1690271126.212453][10587:10589] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_000B DataVersion: 338522070 + [1690271126.212455][10587:10589] CHIP:TOO: ManufacturingDate: 20200101 + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml index ff7e3d0a241322..1abcdfb85b5f30 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml @@ -153,8 +153,8 @@ tests: ##### Test Implementation - label: - "TH sends the Invoke Request Message to the DUT with the path that - indicates a specific endpoint that is unsupported." + "Step 1: TH sends the Invoke Request Message to the DUT with the path + that indicates a specific endpoint that is unsupported." cluster: "AnyCommands" command: "CommandById" endpoint: PIXIT.IDM.UnsupportedEndPoint @@ -170,8 +170,8 @@ tests: error: UNSUPPORTED_ENDPOINT - label: - "TH sends the Invoke Request Message to the DUT with the path that - indicates a specific cluster that is unsupported." + "Step 2: TH sends the Invoke Request Message to the DUT with the path + that indicates a specific cluster that is unsupported." cluster: "AnyCommands" command: "CommandById" endpoint: InvokeRequestMessage.EndPoint @@ -187,8 +187,8 @@ tests: error: UNSUPPORTED_CLUSTER - label: - "TH sends the Invoke Request Message to the DUT with the path that - indicates a specific command that is unsupported." + "Step 3: TH sends the Invoke Request Message to the DUT with the path + that indicates a specific command that is unsupported." cluster: "AnyCommands" command: "CommandById" endpoint: InvokeRequestMessage.EndPoint @@ -204,8 +204,8 @@ tests: error: UNSUPPORTED_COMMAND - label: - "Setup the TH such that it should not have the privilege for the - cluster in the path." + "Step 4: Setup the TH such that it should not have the privilege for + the cluster in the path." cluster: "AccessControl" command: "writeAttribute" attribute: "ACL" @@ -230,7 +230,7 @@ tests: ] - label: - "TH sends the Invoke Request Message to the DUT with a valid + "Step 4: TH sends the Invoke Request Message to the DUT with a valid CommandDataIB" cluster: "AnyCommands" command: "CommandById" @@ -247,8 +247,8 @@ tests: error: UNSUPPORTED_ACCESS - label: - "TH sends the Invoke Request Message to the DUT with a valid and - fabric-scoped CommandDataIB" + "Step 5: TH sends the Invoke Request Message to the DUT with a valid + and fabric-scoped CommandDataIB" cluster: "General Commissioning" command: "CommissioningComplete" endpoint: PIXIT.Cluster.GeneralCommissioning.EndPoint @@ -275,8 +275,8 @@ tests: ] - label: - "(OPTIONAL) TH sends the Invoke Request Message to the DUT with the - command which requires a data response to be sent back." + "Step 6: (OPTIONAL) TH sends the Invoke Request Message to the DUT + with the command which requires a data response to be sent back." cluster: "General Commissioning" command: "ArmFailSafe" endpoint: PIXIT.Cluster.GeneralCommissioning.EndPoint @@ -292,7 +292,7 @@ tests: value: 0 - label: - "TH sends the Invoke Request Message to the DUT with a valid + "Step 7: TH sends the Invoke Request Message to the DUT with a valid CommandDataIB and SuppressResponse set to True" disabled: true verification: | @@ -333,8 +333,9 @@ tests: ] - label: - "TH sends a Invoke Request Message to the DUT with the TimedRequest - set as TRUE.(There should be no previous Timed Invoke action.)" + "Step 8: TH sends a Invoke Request Message to the DUT with the + TimedRequest set as TRUE.(There should be no previous Timed Invoke + action.)" cluster: "AnyCommands" command: "CommandById" endpoint: InvokeRequestMessage.EndPoint @@ -370,9 +371,9 @@ tests: ] - label: - "TH sends Invoke Request Message to the DUT with the command in the - path that requires a Timed Invoke transaction to invoke and this - action is not part of a Timed Invoke transaction" + "Step 9: TH sends Invoke Request Message to the DUT with the command + in the path that requires a Timed Invoke transaction to invoke and + this action is not part of a Timed Invoke transaction" cluster: "AdministratorCommissioning" command: "OpenBasicCommissioningWindow" endpoint: PIXIT.Cluster.AdministratorCommissioning.EndPoint diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml index de62254f8cef45..000c90336c0a8a 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml @@ -14,8 +14,8 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 3.4.1. [TC-IDM-4.1] SubscriptionRequestMessage from DUT test cases. - [DUT_Client] + 32.4.1. [TC-IDM-4.1] SubscriptionRequestMessage from DUT test cases. [DUT as + Client] PICS: - MCORE.IDM.C.SubscribeRequest @@ -26,10 +26,16 @@ config: endpoint: 0 tests: - - label: "Note" + - label: "Notes/Testing Considerations" verification: | - 1. Please use Interactive mode to Verify subscription test cases Here the command to enter interactive mode:-- ./chip-tool interactive start - 2. 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. + 1. The Cluster and Commands should be based on the cluster implementation on the DUT. + 2. The cluster used in the below command is an example, User can use any supported chip cluster/attribute/command. + disabled: true + + - label: "Precondition" + verification: | + Please use Interactive mode to Verify subscription test cases + Here the command to enter interactive mode:-- ./chip-tool interactive start disabled: true - label: @@ -111,7 +117,6 @@ tests: 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) - onoff subscribe on-off 10 80 1 1 --keepSubscriptions true Verify on the TH(reference-app) that the status response received from the DUT is "Success" @@ -170,9 +175,9 @@ tests: disabled: true - label: - "Step 3: [OPTIONAL] Activate the subscription between the DUT and the - TH for an attribute of data type boolean. Modify that attribute on the - TH. TH should send the modified data to the DUT. Modify the attribute + "Step 3: Activate the subscription between the DUT and the TH for an + attribute of data type boolean. Modify that attribute on the TH. TH + should send the modified data to the DUT. Modify the attribute multiple times (3 times)." PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool verification: | @@ -283,9 +288,9 @@ tests: disabled: true - label: - "Step 4: [OPTIONAL] Activate the subscription between the DUT and the - TH for an attribute of data type string. Modify that attribute on the - TH. TH should send the modified data to the DUT. Modify the attribute + "Step 4: Activate the subscription between the DUT and the TH for an + attribute of data type string. Modify that attribute on the TH. TH + should send the modified data to the DUT. Modify the attribute multiple times (3 times)." PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_String verification: | @@ -392,10 +397,10 @@ tests: disabled: true - label: - "Step 5: [OPTIONAL] Activate the subscription between the DUT and the - TH for an attribute of data type unsigned integer. Modify that - attribute on the TH. TH should send the modified data to the DUT. - Modify the attribute multiple times (3 times)." + "Step 5: Activate the subscription between the DUT and the TH for an + attribute of data type unsigned integer. Modify that attribute on the + TH. TH should send the modified data to the DUT. Modify the attribute + multiple times (3 times)." PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_UnsignedInteger verification: | 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) @@ -500,10 +505,10 @@ tests: disabled: true - label: - "Step 6: [OPTIONAL] Activate the subscription between the DUT and the - TH for an attribute of data type signed integer. Modify that attribute - on the TH. TH should send the modified data to the DUT. Modify the - attribute multiple times (3 times)" + "Step 6: Activate the subscription between the DUT and the TH for an + attribute of data type signed integer. Modify that attribute on the + TH. TH should send the modified data to the DUT. Modify the attribute + multiple times (3 times)" PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Integer verification: | DUT implementation required to verify subscribe an attribute of data type signed integer @@ -513,10 +518,10 @@ tests: disabled: true - label: - "Step 7: [OPTIONAL] Activate the subscription between the DUT and the - TH for an attribute of data type Floating Point. Modify that attribute - on the TH. TH should send the modified data to the DUT. Modify the - attribute multiple times (3 times)" + "Step 7: Activate the subscription between the DUT and the TH for an + attribute of data type Floating Point. Modify that attribute on the + TH. TH should send the modified data to the DUT. Modify the attribute + multiple times (3 times)" PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_FloatingPoint verification: | DUT implementation required to verify subscribe an attribute of data type floating point @@ -527,9 +532,9 @@ tests: disabled: true - label: - "Step 8: [OPTIONAL] Activate the subscription between the DUT and the - TH for an attribute of data type list. Modify that attribute on the - TH. TH should send the modified data to the DUT. Modify the attribute + "Step 8: Activate the subscription between the DUT and the TH for an + attribute of data type list. Modify that attribute on the TH. TH + should send the modified data to the DUT. Modify the attribute multiple times (3 times)" PICS: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_List verification: | @@ -548,12 +553,12 @@ tests: activation." PICS: MCORE.IDM.C.SubscribeRequest verification: | - Out of scope + Not verifiable/Out of scope disabled: true - label: "Step 10: DUT sends a subscription request message to the target - node/reference device for multiple attributes(3 attributes)." + node/reference device for multiple attributes (>1 attributes)." PICS: MCORE.IDM.C.SubscribeRequest.MultipleAttributes 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) diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml index 5a5f36b73da8e8..67ceafbb3547b2 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml @@ -14,8 +14,8 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 3.4.2. [TC-IDM-4.2] Subscription Response Messages from DUT Test Cases. - [{DUT_Server}] + 32.4.2. [TC-IDM-4.2] Subscription Response Messages from DUT Test Cases. + [DUT as Server] PICS: - MCORE.IDM.S @@ -26,108 +26,238 @@ config: endpoint: 0 tests: - - label: "Note" + - label: "Notes/Testing Considerations" + verification: | + 1. The Cluster and Commands should be based on the cluster implementation on the DUT. + 2. The cluster used in the below test steps is an example, User can use any supported chip cluster/attribute/command. + disabled: true + + - label: "Pre condition" verification: | Please use Interactive mode to Verify subscription test cases - Here the command to enter interactive mode:-- ./chip-tool interactive start + Here the command to enter interactive mode:-- ./chip-tool interactive start disabled: true - - label: - If the device is has the ICD Management cluster, TH reads from the DUT - the IdleModeInterval attribute and sets the - SubscriptionMaxIntervalPublisherLimit to the value read. If the device - does not have the ICD Management cluster, set the - SubscriptionMaxIntervalPublisherLimit to 60 minutes. + - label: "Step 0a: TH reads from the DUT the IdleModeInterval attribute." + PICS: " !ICDM.S " verification: | - The cluster used in the below command is an example, - icdmanagement read idle-mode-interval 12344321 0 + When the ICDM feature is not supported or enabled, the SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT is set to 60 minutes. + disabled: true + + - label: "Step 0b: TH reads from the DUT the IdleModeInterval attribute." + PICS: ICDM.S + verification: | + TH reads from the DUT the IdleModeInterval attribute by sending below mentioned command + + icdmanagement read idle-mode-interval 1 + Please note down the value of IdleModeInterval as SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT for use in the next step validations. + + + [1690475024.398278][5675:5677] CHIP:DMG: SuppressResponse = true, + [1690475024.398282][5675:5677] CHIP:DMG: InteractionModelRevision = 1 + [1690475024.398285][5675:5677] CHIP:DMG: } + [1690475024.398735][5675:5677] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0046 Attribute 0x0000_0000 DataVersion: 4216223957 + [1690475024.398921][5675:5677] CHIP:TOO: IdleModeInterval: 500 + [1690475024.399202][5675:5677] CHIP:EM: <<< [E:28320i S:44238 M:28503816 (Ack:266918637)] (S) Msg TX to 1:0000000000000001 [3C19] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690475024.399208][5675:5677] CHIP:IN: (S) Sending msg 28503816 on secure session with LSID: 44238 + [1690475024.399217][5675:5677] CHIP:EM: Flushed pending ack for MessageCounter:266918637 on exchange 28320i disabled: true - label: "Step 1: TH sends a subscription message to the DUT with - MaxIntervalCeiling set to a value greater than the - SubscriptionMaxIntervalPublisherLimit. DUT sends a report data action - to the TH. TH sends a success status response to the DUT. DUT sends a - Subscribe Response Message to the TH to activate the subscription." + MaxIntervalCeiling set to a value greater than + SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT. DUT sends a report data + action to the TH. TH sends a success status response to the DUT. DUT + sends a Subscribe Response Message to the TH to activate the + subscription." verification: | - onoff subscribe on-off 100 3900 1 1 --keepSubscriptions true - - On the TH(reference app), verify a report data message is received and verify it contains the following data : - Report data - data of the attribute/event requested earlier. - Verify on the TH the Subscribe Response has the following fields, - SubscriptionId - Verify it is of type uint32. - MaxInterval - Verify it is of type uint32. - Verify that the MaxInterval is less than or equal MaxIntervalCeiling. - - [1686294743.438593][101362:101364] CHIP:DMG: ], - [1686294743.438598][101362:101364] CHIP:DMG: - [1686294743.438601][101362:101364] CHIP:DMG: InteractionModelRevision = 1 - [1686294743.438604][101362:101364] CHIP:DMG: } - [1686294743.438641][101362:101364] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3334871844 - [1686294743.438651][101362:101364] CHIP:TOO: OnOff: FALSE - [1686294743.438663][101362:101364] CHIP:DMG: MoveToState ReadClient[0x7fc7ec011c50]: Moving to [AwaitingSu] - [1686294743.438688][101362:101364] CHIP:EM: <<< [E:49832i S:18140 M:226017852 (Ack:29621147)] (S) Msg TX to 1:0000000000000001 [A822] --- Type 0001:01 (IM:StatusResponse) - [1686294743.438695][101362:101364] CHIP:IN: (S) Sending msg 226017852 on secure session with LSID: 18140 - [1686294743.441447][101362:101364] CHIP:EM: >>> [E:49832i S:18140 M:29621148 (Ack:226017852)] (S) Msg RX from 1:0000000000000001 [A822] --- Type 0001:04 (IM:SubscribeResponse) - [1686294743.441455][101362:101364] CHIP:EM: Found matching exchange: 49832i, Delegate: 0x7fc7ec011c60 - [1686294743.441461][101362:101364] CHIP:EM: Rxd Ack; Removing MessageCounter:226017852 from Retrans Table on exchange 49832i - [1686294743.441467][101362:101364] CHIP:DMG: SubscribeResponse is received - [1686294743.441475][101362:101364] CHIP:DMG: SubscribeResponseMessage = - [1686294743.441479][101362:101364] CHIP:DMG: { - [1686294743.441483][101362:101364] CHIP:DMG: SubscriptionId = 0x51734852, - [1686294743.441487][101362:101364] CHIP:DMG: MaxInterval = 0xf3c, - [1686294743.441490][101362:101364] CHIP:DMG: InteractionModelRevision = 1 - [1686294743.441494][101362:101364] CHIP:DMG: } - [1686294743.441498][101362:101364] CHIP:DMG: Subscription established with SubscriptionID = 0x51734852 MinInterval = 100s MaxInterval = 3900s Peer = 01:0000000000000001 - [1686294743.441504][101362:101364] CHIP:DMG: MoveToState ReadClient[0x7fc7ec011c50]: Moving to [Subscripti] + Please run the following command on the TH to test the subscription feature and verify that the value of MaxIntervalCeiling is set correctly(set the value greater than SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT) + + onoff subscribe on-off 100 600 1 1 --keepSubscriptions true + + On the TH( chip-tool), verify a report data message is received and verify it contains the following data : + 1. Verify Report Data Message Received: + Check if a report data message is received on the TH. + + 2. Verify Report Data Contents: + Confirm that the received report data message contains the data of the attribute/event that was previously requested. + + 3. Verify Subscribe Response Fields: + Examine the Subscribe Response to ensure it includes the following fields: + SubscriptionId: Verify that it is of type uint32. + Verify MaxInterval Field: + + 4. Check for an additional field in the Subscribe Response: + MaxInterval: Verify that it is of type uint32. + + 5. Verify MaxInterval against MaxIntervalCeiling: + Compare the MaxInterval value received in the Subscribe Response to the MaxIntervalCeiling value to verify that MaxInterval is less than or equal to MaxIntervalCeiling. + + [1690475115.797447][5694:5696] CHIP:DMG: InteractionModelRevision = 1 + [1690475115.797452][5694:5696] CHIP:DMG: } + [1690475115.797536][5694:5696] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 2332229409 + [1690475115.797556][5694:5696] CHIP:TOO: OnOff: FALSE + [1690475115.797577][5694:5696] CHIP:DMG: MoveToState ReadClient[0x7fd84800fb20]: Moving to [AwaitingSu] + [1690475115.797625][5694:5696] CHIP:EM: <<< [E:36539i S:55497 M:232793668 (Ack:16536682)] (S) Msg TX to 1:0000000000000001 [3C19] --- Type 0001:01 (IM:StatusResponse) + [1690475115.797638][5694:5696] CHIP:IN: (S) Sending msg 232793668 on secure session with LSID: 55497 + [1690475115.798143][5694:5696] CHIP:EM: >>> [E:36539i S:55497 M:16536683 (Ack:232793668)] (S) Msg RX from 1:0000000000000001 [3C19] --- Type 0001:04 (IM:SubscribeResponse) + [1690475115.798165][5694:5696] CHIP:EM: Found matching exchange: 36539i, Delegate: 0x7fd84800fb30 + [1690475115.798179][5694:5696] CHIP:EM: Rxd Ack; Removing MessageCounter:232793668 from Retrans Table on exchange 36539i + [1690475115.798192][5694:5696] CHIP:DMG: SubscribeResponse is received + [1690475115.798206][5694:5696] CHIP:DMG: SubscribeResponseMessage = + [1690475115.798213][5694:5696] CHIP:DMG: { + [1690475115.798220][5694:5696] CHIP:DMG: SubscriptionId = 0x9b87e9c7, + [1690475115.798226][5694:5696] CHIP:DMG: MaxInterval = 0x258, + [1690475115.798232][5694:5696] CHIP:DMG: InteractionModelRevision = 1 + [1690475115.798238][5694:5696] CHIP:DMG: } + [1690475115.798247][5694:5696] CHIP:DMG: Subscription established with SubscriptionID = 0x9b87e9c7 MinInterval = 100s MaxInterval = 600s Peer = 01:0000000000000001 + [1690475115.798256][5694:5696] CHIP:DMG: MoveToState ReadClient[0x7fd84800fb20]: Moving to [Subscripti] disabled: true - label: "Step 2: TH sends a subscription message to the DUT with - MaxIntervalCeiling set to a value less than han the - SubscriptionMaxIntervalPublisherLimit. DUT sends a report data action - to the TH. TH sends a success status response to the DUT. DUT sends a - Subscribe Response Message to the TH to activate the subscription." + MaxIntervalCeiling set to a value less than + SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT. DUT sends a report data + action to the TH. TH sends a success status response to the DUT. DUT + sends a Subscribe Response Message to the TH to activate the + subscription." verification: | - basicinformation subscribe location 10 2400 1 0 --keepSubscriptions true + Please run the following command on the TH to test the subscription feature and verify that the value of MaxIntervalCeiling is set correctly( set the value less than SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT) + + + basicinformation subscribe location 10 400 1 0 --keepSubscriptions true + On the TH(chip-tool), verify a report data message is received and verify it contains the following data : - Report data - data of the attribute/event requested earlier. - Verify on the TH the Subscribe Response has the following fields, - SubscriptionId - Verify it is of type uint32. - MaxInterval - Verify it is of type uint32. - Verify that the MaxInterval is less than or equal to the MaxIntervalCeiling. - - [1686294932.404445][101362:101364] CHIP:DMG: InteractionModelRevision = 1 - [1686294932.404449][101362:101364] CHIP:DMG: } - [1686294932.404497][101362:101364] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0006 DataVersion: 946377024 - [1686294932.404508][101362:101364] CHIP:TOO: Location: XX - [1686294932.404523][101362:101364] CHIP:DMG: MoveToState ReadClient[0x7fc7ec00e400]: Moving to [AwaitingSu] - [1686294932.404565][101362:101364] CHIP:EM: <<< [E:49833i S:18140 M:226017855 (Ack:29621149)] (S) Msg TX to 1:0000000000000001 [A822] --- Type 0001:01 (IM:StatusResponse) - [1686294932.404575][101362:101364] CHIP:IN: (S) Sending msg 226017855 on secure session with LSID: 18140 - [1686294932.420682][101362:101364] CHIP:EM: >>> [E:49833i S:18140 M:29621150 (Ack:226017855)] (S) Msg RX from 1:0000000000000001 [A822] --- Type 0001:04 (IM:SubscribeResponse) - [1686294932.420716][101362:101364] CHIP:EM: Found matching exchange: 49833i, Delegate: 0x7fc7ec00e410 - [1686294932.420737][101362:101364] CHIP:EM: Rxd Ack; Removing MessageCounter:226017855 from Retrans Table on exchange 49833i - [1686294932.420754][101362:101364] CHIP:DMG: SubscribeResponse is received - [1686294932.420777][101362:101364] CHIP:DMG: SubscribeResponseMessage = - [1686294932.420787][101362:101364] CHIP:DMG: { - [1686294932.420796][101362:101364] CHIP:DMG: SubscriptionId = 0xcbbba269, - [1686294932.420805][101362:101364] CHIP:DMG: MaxInterval = 0x960, - [1686294932.420815][101362:101364] CHIP:DMG: InteractionModelRevision = 1 - [1686294932.420822][101362:101364] CHIP:DMG: } - [1686294932.420834][101362:101364] CHIP:DMG: Subscription established with SubscriptionID = 0xcbbba269 MinInterval = 10s MaxInterval = 2400s Peer = 01:0000000000000001 - [1686294932.420847][101362:101364] CHIP:DMG: MoveToState ReadClient[0x7fc7ec00e400]: Moving to [Subscripti] + 1. Verify Report Data Message Received: + Check if a report data message is received on the TH (target hardware). + + 2. Verify Report Data Contents: + Confirm that the received report data message contains the data of the attribute/event that was previously requested. + + 3. Verify Subscribe Response Fields: + Examine the Subscribe Response to ensure it includes the following fields: + SubscriptionId: Verify that it is of type uint32. + MaxInterval: Verify that it is of type uint32. + + 4. Verify MaxInterval against SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT: + Compare the MaxInterval value received in the Subscribe Response to the value of SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT. + Verify that the MaxInterval value is less than or equal to SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT. + + [1690475286.624596][5694:5696] CHIP:DMG: + [1690475286.624598][5694:5696] CHIP:DMG: InteractionModelRevision = 1 + [1690475286.624600][5694:5696] CHIP:DMG: } + [1690475286.624620][5694:5696] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0006 DataVersion: 2118637528 + [1690475286.624625][5694:5696] CHIP:TOO: Location: XX + [1690475286.624631][5694:5696] CHIP:DMG: MoveToState ReadClient[0x7fd848010a50]: Moving to [AwaitingSu] + [1690475286.624645][5694:5696] CHIP:EM: <<< [E:36540i S:55497 M:232793671 (Ack:16536684)] (S) Msg TX to 1:0000000000000001 [3C19] --- Type 0001:01 (IM:StatusResponse) + [1690475286.624649][5694:5696] CHIP:IN: (S) Sending msg 232793671 on secure session with LSID: 55497 + [1690475286.624771][5694:5696] CHIP:EM: >>> [E:36540i S:55497 M:16536685 (Ack:232793671)] (S) Msg RX from 1:0000000000000001 [3C19] --- Type 0001:04 (IM:SubscribeResponse) + [1690475286.624775][5694:5696] CHIP:EM: Found matching exchange: 36540i, Delegate: 0x7fd848010a60 + [1690475286.624778][5694:5696] CHIP:EM: Rxd Ack; Removing MessageCounter:232793671 from Retrans Table on exchange 36540i + [1690475286.624782][5694:5696] CHIP:DMG: SubscribeResponse is received + [1690475286.624787][5694:5696] CHIP:DMG: SubscribeResponseMessage = + [1690475286.624789][5694:5696] CHIP:DMG: { + [1690475286.624791][5694:5696] CHIP:DMG: SubscriptionId = 0xc96fec0e, + [1690475286.624793][5694:5696] CHIP:DMG: MaxInterval = 0x190, + [1690475286.624796][5694:5696] CHIP:DMG: InteractionModelRevision = 1 + [1690475286.624798][5694:5696] CHIP:DMG: } + [1690475286.624801][5694:5696] CHIP:DMG: Subscription established with SubscriptionID = 0xc96fec0e MinInterval = 10s MaxInterval = 400s Peer = 01:0000000000000001 + [1690475286.624805][5694:5696] CHIP:DMG: MoveToState ReadClient[0x7fd848010a50]: Moving to [Subscripti] disabled: true - label: - "Step 3: Setup TH2 such that it does not have access to an attribute - on a specific cluster and endpoint. TH2 sends a subscription message - to subscribe to an attribute for which it does not have access. - AttributePath = [[Attribute = Attribute, Cluster = ClusterID, Endpoint - = EndpointID ]]." + "Step 3: Setup TH2 such that it does not have access to a specific + cluster. TH2 sends a subscription message to subscribe to an attribute + on that cluster for which it does not have access. AttributePath = + [[Attribute = Attribute, Cluster = ClusterID, Endpoint = EndpointID + ]]." verification: | - As per Spec, there is no access control to specifically enable/disable access to an attribute, so the wording of the test plan need to be modified + Please send the below mentioned command to configure TH2 without access to a specific cluster, we send the ACL command, allowing access only to the Level Control cluster (cluster ID: 8); any attempts to subscribe to or use commands from other clusters will result in a status of 'INVALID_ACTION + + accesscontrol write acl '[{"privilege":5, "authMode":2, "subjects":[112233], "targets":null, "fabricIndex": 1},{"privilege":3, "authMode":2, "subjects":[4], "targets":[{"cluster":8, "endpoint":null, "deviceType":null}]}]' 1 0 + + [1689933254.566655][48781:48783] CHIP:EM: Rxd Ack; Removing MessageCounter:156974239 from Retrans Table on exchange 6316i + [1689933254.566660][48781:48783] CHIP:DMG: WriteClient moving to [ResponseRe] + [1689933254.566671][48781:48783] CHIP:DMG: WriteResponseMessage = + [1689933254.566675][48781:48783] CHIP:DMG: { + [1689933254.566677][48781:48783] CHIP:DMG: AttributeStatusIBs = + [1689933254.566682][48781:48783] CHIP:DMG: [ + [1689933254.566684][48781:48783] CHIP:DMG: AttributeStatusIB = + [1689933254.566688][48781:48783] CHIP:DMG: { + [1689933254.566691][48781:48783] CHIP:DMG: AttributePathIB = + [1689933254.566695][48781:48783] CHIP:DMG: { + [1689933254.566698][48781:48783] CHIP:DMG: Endpoint = 0x0, + [1689933254.566702][48781:48783] CHIP:DMG: Cluster = 0x1f, + [1689933254.566705][48781:48783] CHIP:DMG: Attribute = 0x0000_0000, + [1689933254.566708][48781:48783] CHIP:DMG: } + [1689933254.566713][48781:48783] CHIP:DMG: + [1689933254.566716][48781:48783] CHIP:DMG: StatusIB = + [1689933254.566720][48781:48783] CHIP:DMG: { + [1689933254.566723][48781:48783] CHIP:DMG: status = 0x00 (SUCCESS), + [1689933254.566726][48781:48783] CHIP:DMG: }, + [1689933254.566730][48781:48783] CHIP:DMG: + [1689933254.566732][48781:48783] CHIP:DMG: }, + [1689933254.566739][48781:48783] CHIP:DMG: + [1689933254.566741][48781:48783] CHIP:DMG: AttributeStatusIB = + [1689933254.566744][48781:48783] CHIP:DMG: { + [1689933254.566747][48781:48783] CHIP:DMG: AttributePathIB = + [1689933254.566750][48781:48783] CHIP:DMG: { + [1689933254.566752][48781:48783] CHIP:DMG: Endpoint = 0x0, + [1689933254.566756][48781:48783] CHIP:DMG: Cluster = 0x1f, + [1689933254.566760][48781:48783] CHIP:DMG: Attribute = 0x0000_0000, + [1689933254.566763][48781:48783] CHIP:DMG: ListIndex = Null, + [1689933254.566766][48781:48783] CHIP:DMG: } + [1689933254.566770][48781:48783] CHIP:DMG: + [1689933254.566773][48781:48783] CHIP:DMG: StatusIB = + [1689933254.566776][48781:48783] CHIP:DMG: { + [1689933254.566779][48781:48783] CHIP:DMG: status = 0x00 (SUCCESS), + [1689933254.566782][48781:48783] CHIP:DMG: }, + [1689933254.566786][48781:48783] CHIP:DMG: + [1689933254.566789][48781:48783] CHIP:DMG: }, + [1689933254.566794][48781:48783] CHIP:DMG: + [1689933254.566797][48781:48783] CHIP:DMG: AttributeStatusIB = + [1689933254.566800][48781:48783] CHIP:DMG: { + [1689933254.566802][48781:48783] CHIP:DMG: AttributePathIB = + [1689933254.566805][48781:48783] CHIP:DMG: { + [1689933254.566808][48781:48783] CHIP:DMG: Endpoint = 0x0, + [1689933254.566811][48781:48783] CHIP:DMG: Cluster = 0x1f, + [1689933254.566815][48781:48783] CHIP:DMG: Attribute = 0x0000_0000, + [1689933254.566818][48781:48783] CHIP:DMG: ListIndex = Null, + [1689933254.566821][48781:48783] CHIP:DMG: } + [1689933254.566825][48781:48783] CHIP:DMG: + [1689933254.566828][48781:48783] CHIP:DMG: StatusIB = + [1689933254.566831][48781:48783] CHIP:DMG: { + [1689933254.566834][48781:48783] CHIP:DMG: status = 0x00 (SUCCESS), + [1689933254.566837][48781:48783] CHIP:DMG: }, + [1689933254.566840][48781:48783] CHIP:DMG: + [1689933254.566843][48781:48783] CHIP:DMG: }, + [1689933254.566847][48781:48783] CHIP:DMG: + [1689933254.566849][48781:48783] CHIP:DMG: ], + [1689933254.566857][48781:48783] CHIP:DMG: + [1689933254.566859][48781:48783] CHIP:DMG: InteractionModelRevision = 1 + [1689933254.566862][48781:48783] CHIP:DMG: } + [1689933254.566897][48781:48783] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1689933254.566916][48781:48783] CHIP:EM: <<< [E:6316i S:13964 M:156974240 (Ack:46397313)] (S) Msg TX to 1:0000000000000001 [B15F] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1689933254.566922][48781:48783] CHIP:IN: (S) Sending msg 156974240 on secure session with LSID: 13964 + + If TH2 attempts to subscribe to an attribute on a cluster (ClusterID) for which it does not have access, the AttributePath used for the subscription would be in the form [[Attribute = AttributeName, Cluster = ClusterID, Endpoint = EndpointID]], but this action will be denied, and TH2 will not be able to access the attribute due to the restricted access. + + below provided the example command used to subscribe location attribute from basicinformation cluster from node id(4) that have access to the “levelcontrol” cluster + + basicinformation subscribe location 10 2400 1 0 --commissioner-nodeid 4 + [1689933387.304826][48781:48783] CHIP:EM: Rxd Ack; Removing MessageCounter:42350588 from Retrans Table on exchange 6319i + [1689933387.304834][48781:48783] CHIP:DMG: StatusResponseMessage = + [1689933387.304838][48781:48783] CHIP:DMG: { + [1689933387.304841][48781:48783] CHIP:DMG: Status = 0x80 (INVALID_ACTION), + [1689933387.304845][48781:48783] CHIP:DMG: InteractionModelRevision = 1 + [1689933387.304846][48781:48783] CHIP:DMG: } + [1689933387.304850][48781:48783] CHIP:IM: Received status response, status is 0x80 (INVALID_ACTION) + [1689933387.304864][48781:48783] CHIP:EM: <<< [E:6319i S:13965 M:42350589 (Ack:227168589)] (S) Msg TX to 2:0000000000000001 [B15F] --- Type 0001:01 (IM:StatusResponse) + [1689933387.304869][48781:48783] CHIP:IN: (S) Sending msg 42350589 on secure session with LSID: 13965 + [1689933387.304882][48781:48783] CHIP:DMG: MoveToState ReadClient[0x7fd404019110]: Moving to [ Idle] - https://github.com/CHIP-Specifications/chip-test-plans/issues/2366 + With the ACL command in step-2, we are overwriting the default privilege that chip-tool has an admin. After this step-3 you need to send below mentioned command to Grant access to all clusters again. + accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode":2, "subjects":[112233,4], "targets":null}]' 1 0 disabled: true - label: @@ -136,7 +266,7 @@ tests: to subscribe to all attributes for which it does not have access. AttributePath = [[Cluster = ClusterID, Endpoint = EndpointID ]]." verification: | - To Setup the TH2(chip-tool) such that it should not have the privilege for the cluster in the path(AttributePath = [[Attribute = Attribute, Cluster = ClusterID, Endpoint = EndpointID ]]). 1st we need to send below mentioned ACL command and Here by sending below mentioned ACL command giving only access for Level control cluster(8), So except Level control cluster if try to subscribe any other cluster commands will get status as INVALID_ACTION . + Please send the below mentioned command to configure TH2 without access to a specific cluster on Specific endpoint, we send the ACL command, allowing access only to the Level Control cluster (cluster ID: 8) on endpoint 1 ; any attempts to subscribe to or use commands from other clusters will result in a status of 'INVALID_ACTION accesscontrol write acl '[{"privilege":5, "authMode":2, "subjects":[112233], "targets":null, "fabricIndex": 1},{"privilege":3, "authMode":2, "subjects":[4], "targets":[{"cluster":8, "endpoint":1, "deviceType":null}]}]' 1 0 @@ -200,7 +330,11 @@ tests: [1687418564.590811][167960:167962] CHIP:DMG: } [1687418564.590882][167960:167962] CHIP:DMG: WriteClient moving to [AwaitingDe] - Try to subscribe to all attributes onto endpoint 1 for cluster “onoff” from a node id that have access to the “levelcontrol” cluster onto endpoint 1 + If TH2 attempts to subscribe to an attribute on a cluster (ClusterID) for which it does not have access, the AttributePath used for the subscription would be in the form AttributePath = [[Cluster = ClusterID, Endpoint = EndpointID ]]., but this action will be denied, and TH2 will not be able to access the attribute due to the restricted access. + + below provided the example command to subscribe all attributes onto endpoint 1 for onoff cluster from node id(4) that have access to the “levelcontrol” cluster onto endpoint 1 + + onoff subscribe-by-id 0xFFFFFFFF 5 100 1 1 --commissioner-nodeid 4 [1687418591.903193][167960:167962] CHIP:EM: Found matching exchange: 3641i, Delegate: 0x7fc81c00bbd0 @@ -225,8 +359,7 @@ tests: clusters on a specific Endpoint for which it does not have access. AttributePath = [[ Endpoint = EndpointID ]]." verification: | - To Setup the TH2(chip-tool) such that it should not have the privilege for the cluster in the path(AttributePath = [[ Endpoint = EndpointID ]]). 1st we need to send below mentioned ACL command and Here by sending below mentioned ACL command giving only access for Level control cluster(8), So except Level control cluster if try to subscribe any other cluster commands will get status as INVALID_ACTION . - + Please send the below mentioned command to configure TH2 without access to a specific endpoint, we send the ACL command, allowing access only to the endpoint 1 ; any attempts to subscribe to or use commands from other clusters will result in a status of 'INVALID_ACTION accesscontrol write acl '[{"privilege":5, "authMode":2, "subjects":[112233], "targets":null, "fabricIndex": 1},{"privilege":3, "authMode":2, "subjects":[4], "targets":[{"cluster":null, "endpoint":1, "deviceType":null}]}]' 1 0 @@ -290,7 +423,10 @@ tests: [1687418943.853418][167960:167962] CHIP:DMG: } [1687418943.853488][167960:167962] CHIP:DMG: WriteClient moving to [AwaitingDe] - Try to subscribe to all attributes onto endpoint 0 for cluster 6 from a node id that have access to everything onto endpoint 1 + If TH2 attempts to subscribe to an attribute on a cluster (ClusterID) for which it does not have access, the AttributePath used for the subscription would be in the form AttributePath = [[ Endpoint = EndpointID ]], but this action will be denied, and TH2 will not be able to access the attribute due to the restricted access. + + below provided the example command to subscribe to all attributes onto endpoint 0 for cluster 6 from a node id that have access to everything onto endpoint 1 + onoff subscribe-by-id 0xFFFFFFFF 5 100 1 0 --commissioner-nodeid 4 [1687418974.537572][167960:167962] CHIP:EM: Rxd Ack; Removing MessageCounter:104560062 from Retrans Table on exchange 3650i @@ -314,21 +450,8 @@ tests: clusters on all endpoints on a Node for which it does not have access. AttributePath = [[ ]]." verification: | - After commissioned the device, Device does not allow access for node id 4. Because it is not granted the access for Node ID 4 - - Try to subscribe to all attributes onto endpoint 1 for cluster 6 from a node id that does not have any access to the node - - onoff subscribe-by-id 0xFFFFFFFF 5 100 1 0 --commissioner-nodeid 4 - - [1687419427.834160][167960:167962] CHIP:EM: Rxd Ack; Removing MessageCounter:104560064 from Retrans Table on exchange 3652i - [1687419427.834192][167960:167962] CHIP:DMG: StatusResponseMessage = - [1687419427.834207][167960:167962] CHIP:DMG: { - [1687419427.834216][167960:167962] CHIP:DMG: Status = 0x80 (INVALID_ACTION), - [1687419427.834225][167960:167962] CHIP:DMG: InteractionModelRevision = 1 - [1687419427.834233][167960:167962] CHIP:DMG: } - [1687419427.834242][167960:167962] CHIP:IM: Received status response, status is 0x80 (INVALID_ACTION) - [1687419427.834293][167960:167962] CHIP:EM: <<< [E:3652i S:26604 M:104560065 (Ack:37058094)] (S) Msg TX to 2:0000000000000001 [2DB4] --- Type 0001:01 (IM:StatusResponse) - [1687419427.834308][167960:167962] CHIP:IN: (S) Sending msg 104560065 on secure session with LSID: 26604 + Chip-Tool support required to validate this step : SDK Issue - https://github.com/project-chip/connectedhomeip/issues/28360 + Not Testable disabled: true - label: @@ -338,53 +461,8 @@ tests: subscription for that attribute. Start another subscription with the DataVersionFilter field set to the data version received above." verification: | - onoff subscribe start-up-on-off 50 800 1 1 --keepSubscriptions true - - verify that subscription is activated between TH(chip-tool) and DUT(reference app) and DUT(reference-app) sends a report data action with the data of the attribute along with the data version to TH(chip-tool) - [1686295071.084688][101362:101364] CHIP:DMG: } - [1686295071.084713][101362:101364] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_4003 DataVersion: 3334871844 - [1686295071.084721][101362:101364] CHIP:TOO: StartUpOnOff: null - [1686295071.084730][101362:101364] CHIP:DMG: MoveToState ReadClient[0x7fc7ec011120]: Moving to [AwaitingSu] - [1686295071.084754][101362:101364] CHIP:EM: <<< [E:49834i S:18140 M:226017858 (Ack:29621151)] (S) Msg TX to 1:0000000000000001 [A822] --- Type 0001:01 (IM:StatusResponse) - [1686295071.084759][101362:101364] CHIP:IN: (S) Sending msg 226017858 on secure session with LSID: 18140 - [1686295071.087868][101362:101364] CHIP:EM: >>> [E:49834i S:18140 M:29621152 (Ack:226017858)] (S) Msg RX from 1:0000000000000001 [A822] --- Type 0001:04 (IM:SubscribeResponse) - [1686295071.087881][101362:101364] CHIP:EM: Found matching exchange: 49834i, Delegate: 0x7fc7ec011130 - [1686295071.087887][101362:101364] CHIP:EM: Rxd Ack; Removing MessageCounter:226017858 from Retrans Table on exchange 49834i - [1686295071.087893][101362:101364] CHIP:DMG: SubscribeResponse is received - [1686295071.087899][101362:101364] CHIP:DMG: SubscribeResponseMessage = - [1686295071.087902][101362:101364] CHIP:DMG: { - [1686295071.087905][101362:101364] CHIP:DMG: SubscriptionId = 0x6bd3d042, - [1686295071.087908][101362:101364] CHIP:DMG: MaxInterval = 0x320, - [1686295071.087911][101362:101364] CHIP:DMG: InteractionModelRevision = 1 - [1686295071.087914][101362:101364] CHIP:DMG: } - [1686295071.087918][101362:101364] CHIP:DMG: Subscription established with SubscriptionID = 0x6bd3d042 MinInterval = 50s MaxInterval = 800s Peer = 01:0000000000000001 - [1686295071.087923][101362:101364] CHIP:DMG: MoveToState ReadClient[0x7fc7ec011120]: Moving to [Subscripti] - - - Start another subscription with the DataVersionFilter field set to the data version received above and Verify that the subscription is activated between TH and DUT. - onoff subscribe start-up-on-off 50 800 1 1 --data-version 3334871844 - - [1657450845.854472][11635:11640] CHIP:EM: Removed CHIP MessageCounter:190733050 from RetransTable on exchange 33630i - [1657450845.854526][11635:11640] CHIP:DMG: ReportDataMessage = - [1657450845.854555][11635:11640] CHIP:DMG: { - [1657450845.854581][11635:11640] CHIP:DMG: SubscriptionId = 0x6139c55e, - [1657450845.854607][11635:11640] CHIP:DMG: InteractionModelRevision = 1 - [1657450845.854631][11635:11640] CHIP:DMG: } - [1657450845.854675][11635:11640] CHIP:DMG: MoveToState ReadClient[0xffff94002cb0]: Moving to [AwaitingSu] - [1657450845.854728][11635:11640] CHIP:EM: Piggybacking Ack for MessageCounter:11055899 on exchange: 33630i - [1657450845.854786][11635:11640] CHIP:IN: Prepared secure message 0xffff94002458 to 0x0000000000000001 (1) of type 0x1 and protocolId (0, 1) on exchange 33630i with MessageCounter:190733051. - [1657450845.854822][11635:11640] CHIP:IN: Sending encrypted msg 0xffff94002458 with MessageCounter:190733051 to 0x0000000000000001 (1) at monotonic time: 0000000000B04EDB msec - [1657450845.855783][11635:11640] CHIP:EM: Received message of type 0x4 with protocolId (0, 1) and MessageCounter:11055900 on exchange 33630i - [1657450845.855818][11635:11640] CHIP:EM: Found matching exchange: 33630i, Delegate: 0xffff94002cb0 - [1657450845.855856][11635:11640] CHIP:EM: Rxd Ack; Removing MessageCounter:190733051 from Retrans Table on exchange 33630i - [1657450845.855876][11635:11640] CHIP:EM: Removed CHIP MessageCounter:190733051 from RetransTable on exchange 33630i - [1657450845.855921][11635:11640] CHIP:DMG: SubscribeResponseMessage = - [1657450845.855943][11635:11640] CHIP:DMG: { - [1657450845.855963][11635:11640] CHIP:DMG: SubscriptionId = 0x6bd3d042, - [1657450845.855985][11635:11640] CHIP:DMG: MaxInterval = 0x320, - [1657450845.856006][11635:11640] CHIP:DMG: InteractionModelRevision = 1 - [1657450845.856026][11635:11640] CHIP:DMG: } - [1657450845.856050][11635:11640] CHIP:DMG: Subscription established with SubscriptionID = 0x6139c55e MinInterval = 50s MaxInterval = 800s Peer = 01:0000000000000001 + Chip-Tool support required to validate this step : SDK Issue - https://github.com/project-chip/connectedhomeip/issues/28363 + Not Testable disabled: true - label: @@ -393,42 +471,126 @@ tests: Activate the Subscription between TH and DUT. Modify the attribute which has been subscribed to on the DUT." verification: | - The cluster used in the below command is an example, User can use any supported chip cluster/attribute/command. + Please send the following command from TH (the subscription requester) to DUT (the device under test) to activate the subscription for the "on-time" attribute, setting the MinIntervalFloor and MaxIntervalCeiling values to be the same (in this case, 100 seconds): onoff subscribe on-time 100 100 1 1 --keepSubscriptions true - - On TH(chip-tool) verify that the DUT sends a report data with the value of the attribute after the MinIntervalFloor time. - - [1657450934.856825][11635:11640] CHIP:EM: Removed CHIP MessageCounter:190733053 from RetransTable on exchange 33631i - [1657450934.856955][11635:11640] CHIP:DMG: ReportDataMessage = - [1657450934.857025][11635:11640] CHIP:DMG: { - [1657450934.857088][11635:11640] CHIP:DMG: SubscriptionId = 0x4b34909f, - [1657450934.857152][11635:11640] CHIP:DMG: AttributeReportIBs = - [1657450934.857262][11635:11640] CHIP:DMG: [ - [1657450934.857326][11635:11640] CHIP:DMG: AttributeReportIB = - [1657450934.857409][11635:11640] CHIP:DMG: { - [1657450934.857475][11635:11640] CHIP:DMG: AttributeDataIB = - [1657450934.857553][11635:11640] CHIP:DMG: { - [1657450934.857633][11635:11640] CHIP:DMG: DataVersion = 0x1979c37, - [1657450934.857719][11635:11640] CHIP:DMG: AttributePathIB = - [1657450934.857801][11635:11640] CHIP:DMG: { - [1657450934.857885][11635:11640] CHIP:DMG: Endpoint = 0x1, - [1657450934.857974][11635:11640] CHIP:DMG: Cluster = 0x6, - [1657450934.858061][11635:11640] CHIP:DMG: Attribute = 0x0000_4001, - [1657450934.858142][11635:11640] CHIP:DMG: } - [1657450934.858228][11635:11640] CHIP:DMG: - [1657450934.858314][11635:11640] CHIP:DMG: Data = 0, - [1657450934.858391][11635:11640] CHIP:DMG: }, - [1657450934.858471][11635:11640] CHIP:DMG: - [1657450934.858539][11635:11640] CHIP:DMG: }, - [1657450934.858612][11635:11640] CHIP:DMG: - [1657450934.858672][11635:11640] CHIP:DMG: ], - [1657450934.858747][11635:11640] CHIP:DMG: - [1657450934.858808][11635:11640] CHIP:DMG: InteractionModelRevision = 1 - [1657450934.858866][11635:11640] CHIP:DMG: } - [1657450934.859074][11635:11640] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_4001 DataVersion: 26713143 - [1657450934.859155][11635:11640] CHIP:TOO: OnTime: 0 - [1657450934.859242][11635:11640] CHIP:DMG: MoveToState ReadClient[0xffff940027a0]: Moving to [AwaitingSu] + On the TH(all-clusters-app) verify the SubscribeResponse is received successfully + [1690540281.061350][9488:9490] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_4001 DataVersion: 3310786904 + [1690540281.061363][9488:9490] CHIP:TOO: OnTime: 0 + [1690540281.061379][9488:9490] CHIP:DMG: MoveToState ReadClient[0x7faef8013880]: Moving to [AwaitingSu] + [1690540281.061427][9488:9490] CHIP:EM: <<< [E:49945i S:38251 M:151709012 (Ack:20807554)] (S) Msg TX to 1:0000000000000001 [8B98] --- Type 0001:01 (IM:StatusResponse) + [1690540281.061441][9488:9490] CHIP:IN: (S) Sending msg 151709012 on secure session with LSID: 38251 + [1690540281.061758][9488:9490] CHIP:EM: >>> [E:49945i S:38251 M:20807555 (Ack:151709012)] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0001:04 (IM:SubscribeResponse) + [1690540281.061771][9488:9490] CHIP:EM: Found matching exchange: 49945i, Delegate: 0x7faef8013890 + [1690540281.061786][9488:9490] CHIP:EM: Rxd Ack; Removing MessageCounter:151709012 from Retrans Table on exchange 49945i + [1690540281.061800][9488:9490] CHIP:DMG: SubscribeResponse is received + [1690540281.061816][9488:9490] CHIP:DMG: SubscribeResponseMessage = + [1690540281.061825][9488:9490] CHIP:DMG: { + [1690540281.061833][9488:9490] CHIP:DMG: SubscriptionId = 0x3ef5dc34, + [1690540281.061844][9488:9490] CHIP:DMG: MaxInterval = 0x64, + [1690540281.061853][9488:9490] CHIP:DMG: InteractionModelRevision = 1 + [1690540281.061862][9488:9490] CHIP:DMG: } + [1690540281.061875][9488:9490] CHIP:DMG: Subscription established with SubscriptionID = 0x3ef5dc34 MinInterval = 100s MaxInterval = 100s Peer = 01:0000000000000001 + + + + After activating the subscription between TH and DUT, please send the following command to modify the 'on-time' attribute value: + + >>> onoff write on-time 1 1 1 + On TH(chip-tool), verify that the DUT sends a report data containing the current 'ontime' attribute value after the MinIntervalFloor time has elapsed + + [1690540304.761997][9488:9488] CHIP:TOO: Command: onoff write on-time 1 1 1 + [1690540304.762298][9488:9490] CHIP:TOO: Sending command to node 0x1 + [1690540304.762462][9488:9490] CHIP:CSM: FindOrEstablishSession: PeerId = [1:0000000000000001] + [1690540304.762474][9488:9490] CHIP:CSM: FindOrEstablishSession: No existing OperationalSessionSetup instance found + [1690540304.762493][9488:9490] CHIP:DIS: Found an existing secure session to [1:0000000000000001]! + [1690540304.762501][9488:9490] CHIP:DIS: OperationalSessionSetup[1:0000000000000001]: State change 1 --> 5 + [1690540304.762534][9488:9490] CHIP:TOO: cluster 0x0000_0006, attribute: 0x0000_4001, endpoint 1 + [1690540304.762585][9488:9490] CHIP:DMG: WriteClient moving to [AddAttribu] + [1690540304.762673][9488:9490] CHIP:EM: <<< [E:49946i S:38251 M:151709014] (S) Msg TX to 1:0000000000000001 [8B98] --- Type 0001:06 (IM:WriteRequest) + [1690540304.762693][9488:9490] CHIP:IN: (S) Sending msg 151709014 on secure session with LSID: 38251 + [1690540304.762788][9488:9490] CHIP:DMG: WriteClient moving to [AwaitingRe] + [1690540304.763448][9488:9490] CHIP:EM: >>> [E:49946i S:38251 M:20807556 (Ack:151709014)] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0001:07 (IM:WriteResponse) + [1690540304.763464][9488:9490] CHIP:EM: Found matching exchange: 49946i, Delegate: 0x7faef800a5e0 + [1690540304.763478][9488:9490] CHIP:EM: Rxd Ack; Removing MessageCounter:151709014 from Retrans Table on exchange 49946i + [1690540304.763493][9488:9490] CHIP:DMG: WriteClient moving to [ResponseRe] + [1690540304.763518][9488:9490] CHIP:DMG: WriteResponseMessage = + [1690540304.763527][9488:9490] CHIP:DMG: { + [1690540304.763534][9488:9490] CHIP:DMG: AttributeStatusIBs = + [1690540304.763546][9488:9490] CHIP:DMG: [ + [1690540304.763553][9488:9490] CHIP:DMG: AttributeStatusIB = + [1690540304.763562][9488:9490] CHIP:DMG: { + [1690540304.763570][9488:9490] CHIP:DMG: AttributePathIB = + [1690540304.763579][9488:9490] CHIP:DMG: { + [1690540304.763589][9488:9490] CHIP:DMG: Endpoint = 0x1, + [1690540304.763597][9488:9490] CHIP:DMG: Cluster = 0x6, + [1690540304.763606][9488:9490] CHIP:DMG: Attribute = 0x0000_4001, + [1690540304.763614][9488:9490] CHIP:DMG: } + [1690540304.763626][9488:9490] CHIP:DMG: + [1690540304.763634][9488:9490] CHIP:DMG: StatusIB = + [1690540304.763646][9488:9490] CHIP:DMG: { + [1690540304.763654][9488:9490] CHIP:DMG: status = 0x00 (SUCCESS), + [1690540304.763662][9488:9490] CHIP:DMG: }, + [1690540304.763671][9488:9490] CHIP:DMG: + [1690540304.763677][9488:9490] CHIP:DMG: }, + [1690540304.763688][9488:9490] CHIP:DMG: + [1690540304.763694][9488:9490] CHIP:DMG: ], + [1690540304.763706][9488:9490] CHIP:DMG: + [1690540304.763713][9488:9490] CHIP:DMG: InteractionModelRevision = 1 + [1690540304.763719][9488:9490] CHIP:DMG: } + [1690540304.763753][9488:9490] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1690540304.763793][9488:9490] CHIP:EM: <<< [E:49946i S:38251 M:151709015 (Ack:20807556)] (S) Msg TX to 1:0000000000000001 [8B98] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690540304.763810][9488:9490] CHIP:IN: (S) Sending msg 151709015 on secure session with LSID: 38251 + [1690540304.763846][9488:9490] CHIP:EM: Flushed pending ack for MessageCounter:20807556 on exchange 49946i + [1690540325.496486][9488:9490] CHIP:EM: >>> [E:48664r S:38251 M:20807557] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0001:05 (IM:ReportData) + [1690540325.496520][9488:9490] CHIP:EM: Handling via exchange: 48664r, Delegate: 0x5639a50ebc68 + [1690540325.496552][9488:9490] CHIP:DMG: ReportDataMessage = + [1690540325.496565][9488:9490] CHIP:DMG: { + [1690540325.496576][9488:9490] CHIP:DMG: SubscriptionId = 0x3a11136b, + [1690540325.496587][9488:9490] CHIP:DMG: InteractionModelRevision = 1 + [1690540325.496595][9488:9490] CHIP:DMG: } + [1690540325.496632][9488:9490] CHIP:DMG: Refresh LivenessCheckTime for 804224 milliseconds with SubscriptionId = 0x3a11136b Peer = 01:0000000000000001 + [1690540325.496682][9488:9490] CHIP:EM: <<< [E:48664r S:38251 M:151709016 (Ack:20807557)] (S) Msg TX to 1:0000000000000001 [8B98] --- Type 0001:01 (IM:StatusResponse) + [1690540325.496697][9488:9490] CHIP:IN: (S) Sending msg 151709016 on secure session with LSID: 38251 + [1690540325.497211][9488:9490] CHIP:EM: >>> [E:48664r S:38251 M:20807558 (Ack:151709016)] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690540325.497237][9488:9490] CHIP:EM: Found matching exchange: 48664r, Delegate: (nil) + [1690540325.497258][9488:9490] CHIP:EM: Rxd Ack; Removing MessageCounter:151709016 from Retrans Table on exchange 48664r + [1690540381.062201][9488:9490] CHIP:EM: >>> [E:48665r S:38251 M:20807559] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0001:05 (IM:ReportData) + [1690540381.062234][9488:9490] CHIP:EM: Handling via exchange: 48665r, Delegate: 0x5639a50ebc68 + [1690540381.062272][9488:9490] CHIP:DMG: ReportDataMessage = + [1690540381.062281][9488:9490] CHIP:DMG: { + [1690540381.062289][9488:9490] CHIP:DMG: SubscriptionId = 0x3ef5dc34, + [1690540381.062296][9488:9490] CHIP:DMG: AttributeReportIBs = + [1690540381.062308][9488:9490] CHIP:DMG: [ + [1690540381.062315][9488:9490] CHIP:DMG: AttributeReportIB = + [1690540381.062325][9488:9490] CHIP:DMG: { + [1690540381.062332][9488:9490] CHIP:DMG: AttributeDataIB = + [1690540381.062338][9488:9490] CHIP:DMG: { + [1690540381.062346][9488:9490] CHIP:DMG: DataVersion = 0xc5569959, + [1690540381.062354][9488:9490] CHIP:DMG: AttributePathIB = + [1690540381.062367][9488:9490] CHIP:DMG: { + [1690540381.062375][9488:9490] CHIP:DMG: Endpoint = 0x1, + [1690540381.062383][9488:9490] CHIP:DMG: Cluster = 0x6, + [1690540381.062392][9488:9490] CHIP:DMG: Attribute = 0x0000_4001, + [1690540381.062399][9488:9490] CHIP:DMG: } + [1690540381.062409][9488:9490] CHIP:DMG: + [1690540381.062417][9488:9490] CHIP:DMG: Data = 1, + [1690540381.062423][9488:9490] CHIP:DMG: }, + [1690540381.062433][9488:9490] CHIP:DMG: + [1690540381.062439][9488:9490] CHIP:DMG: }, + [1690540381.062447][9488:9490] CHIP:DMG: + [1690540381.062453][9488:9490] CHIP:DMG: ], + [1690540381.062463][9488:9490] CHIP:DMG: + [1690540381.062470][9488:9490] CHIP:DMG: InteractionModelRevision = 1 + [1690540381.062476][9488:9490] CHIP:DMG: } + [1690540381.062543][9488:9490] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_4001 DataVersion: 3310786905 + [1690540381.062558][9488:9490] CHIP:TOO: OnTime: 1 + [1690540381.062580][9488:9490] CHIP:DMG: Refresh LivenessCheckTime for 104224 milliseconds with SubscriptionId = 0x3ef5dc34 Peer = 01:0000000000000001 + [1690540381.062627][9488:9490] CHIP:EM: <<< [E:48665r S:38251 M:151709017 (Ack:20807559)] (S) Msg TX to 1:0000000000000001 [8B98] --- Type 0001:01 (IM:StatusResponse) + [1690540381.062641][9488:9490] CHIP:IN: (S) Sending msg 151709017 on secure session with LSID: 38251 + [1690540381.063237][9488:9490] CHIP:EM: >>> [E:48665r S:38251 M:20807560 (Ack:151709017)] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0000:10 (SecureChannel:StandaloneAck) + [1690540381.063261][9488:9490] CHIP:EM: Found matching exchange: 48665r, Delegate: (nil) + [1690540381.063276][9488:9490] CHIP:EM: Rxd Ack; Removing MessageCounter:151709017 from Retrans Table on exchange 48665r disabled: true - label: @@ -436,11 +598,12 @@ tests: set the MinIntervalFloor value to be greater than MaxIntervalCeiling. +" verification: | - The cluster used in the below command is an example, User can use any supported chip cluster/attribute/command. + Please send the following command from TH (the subscription requester) to DUT (the device under test) to activate the subscription for the "on-time" attribute, setting the MinIntervalFloor value to be greater than MaxIntervalCeiling: + + onoff subscribe on-time 500 100 1 1 --keepSubscriptions true - onoff subscribe on-time 500 100 1 1 --keepSubscriptions true + On TH (chip-tool), verify that the DUT sends an error message, confirming that the subscription is not established successfully - On TH(chip-tool) Verify that the DUT sends an error message and the subscription is not established. [1661754615.089845][103654:103659] CHIP:DMG: StatusResponseMessage = [1661754615.089857][103654:103659] CHIP:DMG: { [1661754615.089868][103654:103659] CHIP:DMG: Status = 0x80 (INVALID_ACTION), @@ -455,12 +618,41 @@ tests: global attribute from all clusters on all endpoints. AttributePath = [[Attribute = Global Attribute]]. +" verification: | - The cluster used in the below command is an example, User can use any supported chip cluster/attribute/command. - - any subscribe-by-id 0xFFFFFFFF 0xFFFD 10 300 1 0xFFFF --keepSubscriptions true - - - On TH(chip-tool) Verify that the Subscription succeeds and the DUT sends back the attribute values for the global attribute + any subscribe-by-id 0xFFFFFFFF 0xFFFD 10 300 1 0xFFFF --keepSubscriptions true + + The following log is an example of the output obtained for Attribute 0x0000_FFFD on Endpoint 0 + Pls repeat this for every cluster on every endpoint. The log represents the attributes of clusters found on different endpoints. + + Verify the presence of mandatory global attribute ClusterRevision for every cluster on every endpoint: + + + Verification Instructions: + Please use the provided example log as a guide to verify the attributes for other clusters and endpoints in a similar manner. + [1690541617.461279][9488:9490] CHIP:DMG: } + [1690541617.461374][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFD DataVersion: 124546948 + [1690541617.461379][9488:9490] CHIP:TOO: ClusterRevision: 4 + [1690541617.461388][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_FFFD DataVersion: 1468663600 + [1690541617.461391][9488:9490] CHIP:TOO: ClusterRevision: 4 + [1690541617.461399][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_FFFD DataVersion: 2536415407 + [1690541617.461402][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461410][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001E Attribute 0x0000_FFFD DataVersion: 1723648967 + [1690541617.461413][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461421][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_FFFD DataVersion: 659240739 + [1690541617.461424][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461432][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFFD DataVersion: 3950349597 + [1690541617.461435][9488:9490] CHIP:TOO: ClusterRevision: 2 + [1690541617.461443][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002A Attribute 0x0000_FFFD DataVersion: 1224601682 + [1690541617.461446][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461454][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002B Attribute 0x0000_FFFD DataVersion: 2744454868 + [1690541617.461456][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461464][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFFD DataVersion: 463823876 + [1690541617.461467][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461475][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002D Attribute 0x0000_FFFD DataVersion: 115397017 + [1690541617.461477][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690541617.461485][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_FFFD DataVersion: 85684249 + [1690541617.461488][9488:9490] CHIP:TOO: ClusterRevision: 2 + [1690541617.461496][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_FFFD DataVersion: 75615160 + [1690541617.461498][9488:9490] CHIP:TOO: ClusterRevision: 1 disabled: true - label: @@ -468,81 +660,107 @@ tests: attribute on an endpoint on all clusters. AttributePath = [[Attribute = Global Attribute, Endpoint = EndpointID ]]. +" verification: | - The cluster used in the below command is an example, User can use any supported chip cluster/attribute/command. - - any subscribe-by-id 0xFFFFFFFF 0xFFFD 10 300 1 0 --keepSubscriptions true + The following log is an example of the output obtained for Attribute 0x0000_FFFD on Endpoint 0 + Pls repeat this for every cluster on endpoint 0. The log represents the attribute of clusters found on endpoint 0. + + Verify the presence of mandatory global attribute ClusterRevision for every cluster on every endpoint: + + + Verification Instructions: + Please use the provided example log as a guide to verify the attributes for other clusters and endpoints in a similar manner. + + [1690542041.905545][9488:9490] CHIP:DMG: InteractionModelRevision = 1 + [1690542041.905546][9488:9490] CHIP:DMG: } + [1690542041.905621][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFD DataVersion: 124546948 + [1690542041.905625][9488:9490] CHIP:TOO: ClusterRevision: 4 + [1690542041.905634][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_FFFD DataVersion: 1468663600 + [1690542041.905637][9488:9490] CHIP:TOO: ClusterRevision: 4 + [1690542041.905646][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_FFFD DataVersion: 2536415407 + [1690542041.905649][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905657][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001E Attribute 0x0000_FFFD DataVersion: 1723648967 + [1690542041.905659][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905667][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_FFFD DataVersion: 659240739 + [1690542041.905670][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905678][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFFD DataVersion: 3950349597 + [1690542041.905680][9488:9490] CHIP:TOO: ClusterRevision: 2 + [1690542041.905688][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002A Attribute 0x0000_FFFD DataVersion: 1224601682 + [1690542041.905691][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905699][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002B Attribute 0x0000_FFFD DataVersion: 2744454868 + [1690542041.905701][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905710][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFFD DataVersion: 463823876 + [1690542041.905712][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905720][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002D Attribute 0x0000_FFFD DataVersion: 115397017 + [1690542041.905722][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905730][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_FFFD DataVersion: 85684249 + [1690542041.905733][9488:9490] CHIP:TOO: ClusterRevision: 2 + [1690542041.905741][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_FFFD DataVersion: 75615160 + [1690542041.905743][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905751][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFD DataVersion: 1962336111 + [1690542041.905753][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905761][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0032 Attribute 0x0000_FFFD DataVersion: 465381371 + [1690542041.905763][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905772][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0033 Attribute 0x0000_FFFD DataVersion: 2781452270 + [1690542041.905774][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905782][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0034 Attribute 0x0000_FFFD DataVersion: 3343308905 + [1690542041.905784][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905792][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0035 Attribute 0x0000_FFFD DataVersion: 1933667935 + [1690542041.905794][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905803][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0036 Attribute 0x0000_FFFD DataVersion: 1917440631 + [1690542041.905806][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905814][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0037 Attribute 0x0000_FFFD DataVersion: 2059544742 + [1690542041.905816][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905824][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0038 Attribute 0x0000_FFFD DataVersion: 292367345 + [1690542041.905826][9488:9490] CHIP:TOO: ClusterRevision: 2 + [1690542041.905835][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_FFFD DataVersion: 4275836516 + [1690542041.905837][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905845][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_FFFD DataVersion: 2334789054 + [1690542041.905848][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905856][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_FFFD DataVersion: 2215403935 + [1690542041.905858][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905866][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0040 Attribute 0x0000_FFFD DataVersion: 1171006049 + [1690542041.905868][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905877][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0041 Attribute 0x0000_FFFD DataVersion: 1339481925 + [1690542041.905879][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905887][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0046 Attribute 0x0000_FFFD DataVersion: 2155717858 + [1690542041.905889][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.905897][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0405 Attribute 0x0000_FFFD DataVersion: 2620361579 + [1690542041.906830][9488:9490] CHIP:TOO: ClusterRevision: 3 + [1690542041.906854][9488:9490] CHIP:TOO: Endpoint: 0 Cluster: 0xFFF1_FC06 Attribute 0x0000_FFFD DataVersion: 2161647034 + [1690542041.906860][9488:9490] CHIP:TOO: ClusterRevision: 1 + [1690542041.906886][9488:9490] CHIP:DMG: MoveToState ReadClient[0x7faef801d0f0]: Moving to [AwaitingSu] + [1690542041.906910][9488:9490] CHIP:EM: <<< [E:49949i S:38251 M:151709045 (Ack:20807605)] (S) Msg TX to 1:0000000000000001 [8B98] --- Type 0001:01 (IM:StatusResponse) + [1690542041.906915][9488:9490] CHIP:IN: (S) Sending msg 151709045 on secure session with LSID: 38251 + [1690542041.907098][9488:9490] CHIP:EM: >>> [E:49949i S:38251 M:20807606 (Ack:151709045)] (S) Msg RX from 1:0000000000000001 [8B98] --- Type 0001:04 (IM:SubscribeResponse) + [1690542041.907107][9488:9490] CHIP:EM: Found matching exchange: 49949i, Delegate: 0x7faef801d100 + [1690542041.907113][9488:9490] CHIP:EM: Rxd Ack; Removing MessageCounter:151709045 from Retrans Table on exchange 49949i + [1690542041.907119][9488:9490] CHIP:DMG: SubscribeResponse is received + [1690542041.907126][9488:9490] CHIP:DMG: SubscribeResponseMessage = + [1690542041.907128][9488:9490] CHIP:DMG: { + [1690542041.907131][9488:9490] CHIP:DMG: SubscriptionId = 0x9488dc04, + [1690542041.907134][9488:9490] CHIP:DMG: MaxInterval = 0x12c, + [1690542041.907137][9488:9490] CHIP:DMG: InteractionModelRevision = 1 + [1690542041.907139][9488:9490] CHIP:DMG: } + [1690542041.907144][9488:9490] CHIP:DMG: Subscription established with SubscriptionID = 0x9488dc04 MinInterval = 10s MaxInterval = 300s Peer = 01:0000000000000001 + disabled: true - - On TH(chip-tool) Verify that the Subscription succeeds and the DUT sends back the attribute values for the global attribute - - [1657451191.595630][11635:11640] CHIP:DMG: InteractionModelRevision = 1 - [1657451191.595654][11635:11640] CHIP:DMG: } - [1657451191.596003][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_FFFD DataVersion: 1247215770 - [1657451191.596042][11635:11640] CHIP:TOO: ClusterRevision: 4 - [1657451191.596102][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Attribute 0x0000_FFFD DataVersion: 3391062846 - [1657451191.596129][11635:11640] CHIP:TOO: ClusterRevision: 4 - [1657451191.596187][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_FFFD DataVersion: 4071202320 - [1657451191.596214][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596271][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001E Attribute 0x0000_FFFD DataVersion: 2618211726 - [1657451191.596299][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596356][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_FFFD DataVersion: 2563208108 - [1657451191.596382][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596439][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_FFFD DataVersion: 1504991228 - [1657451191.596466][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596523][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002A Attribute 0x0000_FFFD DataVersion: 3503114671 - [1657451191.596550][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596607][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002B Attribute 0x0000_FFFD DataVersion: 655424947 - [1657451191.596634][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596691][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002C Attribute 0x0000_FFFD DataVersion: 2421456926 - [1657451191.596717][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596774][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002D Attribute 0x0000_FFFD DataVersion: 3528791487 - [1657451191.596800][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596857][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002E Attribute 0x0000_FFFD DataVersion: 968449410 - [1657451191.596883][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.596940][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_FFFD DataVersion: 2811758882 - [1657451191.596967][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597023][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_FFFD DataVersion: 1035240738 - [1657451191.597050][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597107][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFD DataVersion: 1760092942 - [1657451191.597133][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597191][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0032 Attribute 0x0000_FFFD DataVersion: 2220680799 - [1657451191.597217][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597275][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0033 Attribute 0x0000_FFFD DataVersion: 3326056069 - [1657451191.597301][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597360][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0034 Attribute 0x0000_FFFD DataVersion: 3433535141 - [1657451191.597386][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597443][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0035 Attribute 0x0000_FFFD DataVersion: 3003261549 - [1657451191.597470][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597526][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0036 Attribute 0x0000_FFFD DataVersion: 3106710214 - [1657451191.597553][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597610][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0037 Attribute 0x0000_FFFD DataVersion: 3053018824 - [1657451191.597637][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597694][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_FFFD DataVersion: 1257168122 - [1657451191.597721][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597777][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_FFFD DataVersion: 2262465581 - [1657451191.597804][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597861][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_FFFD DataVersion: 901334231 - [1657451191.597888][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.597945][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0040 Attribute 0x0000_FFFD DataVersion: 4191161303 - [1657451191.597972][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.598030][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0041 Attribute 0x0000_FFFD DataVersion: 2358987419 - [1657451191.598057][11635:11640] CHIP:TOO: ClusterRevision: 1 - [1657451191.598114][11635:11640] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0405 Attribute 0x0000_FFFD DataVersion: 2403664035 - [1657451191.598141][11635:11640] CHIP:TOO: ClusterRevision: 3 - [1657451191.598261][11635:11640] CHIP:DMG: MoveToState ReadClient[0xffff94006d20]: Moving to [AwaitingSu] - [1657451191.598325][11635:11640] CHIP:EM: Piggybacking Ack for MessageCounter:11055908 on exchange: 33634i - [1657451191.598398][11635:11640] CHIP:IN: Prepared secure message 0xffff940026a8 to 0x0000000000000001 (1) of type 0x1 and protocolId (0, 1) on exchange 33634i with MessageCounter:190733064. - [1657451191.598437][11635:11640] CHIP:IN: Sending encrypted msg 0xffff940026a8 with MessageCounter:190733064 to 0x0000000000000001 (1) at monotonic time: 0000000000B5956B msec - [1657451191.599445][11635:11640] CHIP:EM: Received message of type 0x4 with protocolId (0, 1) and MessageCounter:11055909 on exchange 33634i - [1657451191.599480][11635:11640] CHIP:EM: Found matching exchange: 33634i, Delegate: 0xffff94006d20 - [1657451191.599517][11635:11640] CHIP:EM: Rxd Ack; Removing MessageCounter:190733064 from Retrans Table on exchange 33634i - [1657451191.599544][11635:11640] CHIP:EM: Removed CHIP MessageCounter:190733064 from RetransTable on exchange 33634i - [1657451191.599595][11635:11640] CHIP:DMG: SubscribeResponseMessage = - [1657451191.599623][11635:11640] CHIP:DMG: { - [1657451191.599647][11635:11640] CHIP:DMG: SubscriptionId = 0x22d38d78, - [1657451191.599674][11635:11640] CHIP:DMG: MaxInterval = 0x12c, - [1657451191.599700][11635:11640] CHIP:DMG: InteractionModelRevision = 1 - [1657451191.599723][11635:11640] CHIP:DMG: } - [1657451191.599751][11635:11640] CHIP:DMG: Subscription established with SubscriptionID = 0x22d38d78 MinInterval = 10s MaxInterval = 300s Peer = 01:0000000000000001 + - label: + "Step 12: TH sends a subscription request to the DUT with both + AttributeRequests and EventRequests as empty" + verification: | + Please send the following command from TH (the subscription requester) to DUT (the device under test) to activate the subscription with both AttributeRequests and EventRequests as empty + + any subscribe-none 10 100 1 --keepSubscriptions 1 + + On TH (chip-tool), verify that the DUT sends an error message, confirming that the subscription is not established successfully + [1690884829.708780][84191:84193] CHIP:EM: Rxd Ack; Removing MessageCounter:136461510 from Retrans Table on exchange 23099i + [1690884829.708861][84191:84193] CHIP:DMG: StatusResponseMessage = + [1690884829.708907][84191:84193] CHIP:DMG: { + [1690884829.708947][84191:84193] CHIP:DMG: Status = 0x80 (INVALID_ACTION), + [1690884829.708988][84191:84193] CHIP:DMG: InteractionModelRevision = 1 + [1690884829.709026][84191:84193] CHIP:DMG: } + [1690884829.709064][84191:84193] CHIP:IM: Received status response, status is 0x80 (INVALID_ACTION) + [1690884829.709196][84191:84193] CHIP:EM: <<< [E:23099i S:5058 M:136461511 (Ack:90075666)] (S) Msg TX to 1:0000000000000001 [EAE3] --- Type 0001:01 (IM:StatusResponse) + [1690884829.709252][84191:84193] CHIP:IN: (S) Sending msg 136461511 on secure session with LSID: 5058 + [1690884829.709420][84191:84193] CHIP:DMG: MoveToState ReadClient[0xffff9c005e90]: Moving to [ Idle] disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml index 393c01c3bb8db2..b0e91d442a3898 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml @@ -14,8 +14,8 @@ # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default name: - 3.4.3. [TC-IDM-4.3] Report Data Messages post Subscription Activation from - DUT Test Cases. [{DUT_Server}] + 32.4.3. [TC-IDM-4.3] Report Data Messages post Subscription Activation from + DUT Test Cases. [DUT as Server] PICS: - MCORE.IDM.S @@ -26,17 +26,62 @@ config: endpoint: 0 tests: - - label: "Note" + - label: "Notes/Testing Considerations" + verification: | + 1. The Cluster and Commands should be based on the cluster implementation on the DUT. + 2. The cluster used in the below test steps is an example, User can use any supported chip cluster/attribute/command. + disabled: true + + - label: "Pre condition" verification: | Please use Interactive mode to Verify subscription test cases - Here the command to enter interactive mode:-- ./chip-tool interactive start + Here the command to enter interactive mode:-- ./chip-tool interactive start + disabled: true + + - label: "Step 1a: DUT and TH activate the subscription." + verification: | + Activate the Subscription between DUT and TH by sending below mentioned command + + onoff subscribe on-off 10 100 1 1 --keepSubscriptions true + + on TH(chip-tool), + 1. Verify Report Data Message Received: + On the target hardware (TH), check if a report data message is received. + + 2. Verify Subscribe Response Fields: + In the received report data message, examine the Subscribe Response to ensure it contains the following fields: + SubscriptionId + MaxInterval + + [1690479841.107906][5694:5696] CHIP:DMG: + [1690479841.107911][5694:5696] CHIP:DMG: ], + [1690479841.107923][5694:5696] CHIP:DMG: + [1690479841.107930][5694:5696] CHIP:DMG: InteractionModelRevision = 1 + [1690479841.107936][5694:5696] CHIP:DMG: } + [1690479841.107987][5694:5696] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 2332229409 + [1690479841.107999][5694:5696] CHIP:TOO: OnOff: FALSE + [1690479841.108015][5694:5696] CHIP:DMG: MoveToState ReadClient[0x7fd848013240]: Moving to [AwaitingSu] + [1690479841.108061][5694:5696] CHIP:EM: <<< [E:36541i S:55497 M:232793692 (Ack:16536722)] (S) Msg TX to 1:0000000000000001 [3C19] --- Type 0001:01 (IM:StatusResponse) + [1690479841.108075][5694:5696] CHIP:IN: (S) Sending msg 232793692 on secure session with LSID: 55497 + [1690479841.108621][5694:5696] CHIP:EM: >>> [E:36541i S:55497 M:16536723 (Ack:232793692)] (S) Msg RX from 1:0000000000000001 [3C19] --- Type 0001:04 (IM:SubscribeResponse) + [1690479841.108645][5694:5696] CHIP:EM: Found matching exchange: 36541i, Delegate: 0x7fd848013250 + [1690479841.108659][5694:5696] CHIP:EM: Rxd Ack; Removing MessageCounter:232793692 from Retrans Table on exchange 36541i + [1690479841.108673][5694:5696] CHIP:DMG: SubscribeResponse is received + [1690479841.108689][5694:5696] CHIP:DMG: SubscribeResponseMessage = + [1690479841.108697][5694:5696] CHIP:DMG: { + [1690479841.108704][5694:5696] CHIP:DMG: SubscriptionId = 0x5503a5a, + [1690479841.108711][5694:5696] CHIP:DMG: MaxInterval = 0x64, + [1690479841.108718][5694:5696] CHIP:DMG: InteractionModelRevision = 1 + [1690479841.108723][5694:5696] CHIP:DMG: } + [1690479841.108732][5694:5696] CHIP:DMG: Subscription established with SubscriptionID = 0x05503a5a MinInterval = 10s MaxInterval = 100s Peer = 01:0000000000000001 + [1690479841.108743][5694:5696] CHIP:DMG: MoveToState ReadClient[0x7fd848013240]: Moving to [Subscripti] disabled: true - label: - "Step 1: DUT and TH activate the subscription. Change the value of the - attribute which has been subscribed on the DUT by manually changing - some settings on the device. Example: Temperature sensor may update - the value of the room temperature. Turning on/off on a light bulb." + "Step 1b: Change the value of the attribute which has been subscribed + on the DUT by manually changing some settings on the device. Example: + Temperature sensor may update the value of the room temperature. + Turning on/off on a light bulb." verification: | DUT dependency test step is execpting to Change the value of the attribute which has been subscribed on the DUT by manually changing some settings on the device. @@ -49,6 +94,8 @@ tests: attribute which has been subscribed on the DUT by sending an IMWrite or Invoke message to the DUT from the TH. +" verification: | + Activate the Subscription between DUT and TH by sending below mentioned command + onoff subscribe start-up-on-off 30 100 1 1 --keepSubscriptions true on TH(chip-tool), verify that DUT is responds right attribute value for above command @@ -120,9 +167,11 @@ tests: disabled: true - label: - "Step 3: DUT and TH activate the subscription for an attribute. Dont + "Step 3: DUT and TH activate the subscription for an attribute. Do not change the value of the attribute which has been subscribed." verification: | + Activate the Subscription between DUT and TH by sending below mentioned command + onoff subscribe on-off 10 200 1 1 --keepSubscriptions true on TH(chip-tool) verify that DUT is responds right attribute value for above command @@ -172,7 +221,7 @@ tests: - label: "Step 4: DUT and TH activate the subscription. Change the value of the attribute which has been subscribed on the DUT. TH force sends a - status response with an 'inactive subscription'. Change the value of + status response with an 'invalid subscription'. Change the value of the attribute which has been subscribed on the DUT." verification: | Out of scope @@ -182,7 +231,7 @@ tests: "Step 5: Activate the subscription between the DUT and the TH for an attribute of data type bool. Modify that attribute on the DUT. DUT should send the report data with the modified attribute value. Modify - the attribute multiple times (3 times) before the max interval time + the attribute multiple times (3 times) before the MaxInterval time specified during the subscription activation." PICS: MCORE.IDM.S.Attribute.DataType_Bool verification: | @@ -265,7 +314,7 @@ tests: "Step 6: Activate the subscription between the DUT and the TH for an attribute of data type string. Modify that attribute on the DUT. DUT should send the report data with the modified attribute value Modify - the attribute multiple times (3 times) before the max interval time + the attribute multiple times (3 times) before the MaxInterval time specified during the subscription activation." PICS: MCORE.IDM.S.Attribute.DataType_String verification: | @@ -347,8 +396,8 @@ tests: "Step 7: Activate the subscription between the DUT and the TH for an attribute of data type 'unsigned integer'. Modify that attribute on the DUT. DUT should send the report data with the modified attribute - value. Modify the attribute multiple times (3 times) before the max - interval time specified during the subscription activation." + value. Modify the attribute multiple times (3 times) before the + MaxInterval time specified during the subscription activation." PICS: MCORE.IDM.S.Attribute.DataType_UnsignedInteger verification: | any subscribe-by-id 0x0008 0x0010 10 100 1 1 --keepSubscriptions true @@ -430,8 +479,8 @@ tests: "Step 8: Activate the subscription between the DUT and the TH for an attribute of data type 'signed integer'. Modify that attribute on the DUT. DUT should send the report data with the modified attribute - value. Modify the attribute multiple times (3 times)before the max - interval time specified during the subscription activation." + value. Modify the attribute multiple times (3 times)before the + MaxInterval time specified during the subscription activation." PICS: MCORE.IDM.S.Attribute.DataType_SignedInteger verification: | Subscribe to an attribute of type signed integer to the Harness @@ -444,8 +493,8 @@ tests: "Step 9: Activate the subscription between the DUT and the TH for an attribute of data type 'floating point'. Modify that attribute on the DUT. DUT should send the report data with the modified attribute - value. Modify the attribute multiple times (3 times) before the max - interval time specified during the subscription activation." + value. Modify the attribute multiple times (3 times) before the + MaxInterval time specified during the subscription activation." PICS: MCORE.IDM.S.Attribute.DataType_FloatingPoint verification: | Subscribe to an attribute of type floating point to the Harness @@ -458,7 +507,7 @@ tests: "Step 10: Activate the subscription between the DUT and the TH for an attribute of data type list. Modify that attribute on the DUT. DUT should send the report data with the modified attribute value. Modify - the attribute multiple times (3 times) before the max interval time + the attribute multiple times (3 times) before the MaxInterval time specified during the subscription activation." PICS: MCORE.IDM.S.Attribute.DataType_List verification: | @@ -489,10 +538,10 @@ tests: - label: "Step 11: Activate the subscription between the DUT and the TH for any - attribute. KeepSubsriptions flag should be set to False After the + attribute. KeepSubscriptions flag should be set to False After the Maximum interval time is elapsed, TH should send another subscription request message with different parameters than before. - KeepSubsriptions flag should be set to False Change the value of the + KeepSubscriptions flag should be set to False Change the value of the attribute requested on the DUT." verification: | basicinformation subscribe local-config-disabled 10 100 1 0 --keepSubscriptions 0 diff --git a/src/app/tests/suites/certification/Test_TC_ILL_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_ILL_3_1_Simulated.yaml deleted file mode 100644 index 17e4c8b93399e4..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_ILL_3_1_Simulated.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. - -name: 69.3.1. [TC-ILL-3.1] Attributes with client as DUT - -PICS: - - ILL.C - - ILL.C.AM-READ - - ILL.C.AO-READ - - ILL.C.AM-WRITE - - ILL.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Illuminance Measurement" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: MeasuredValue" - wait: "readAttribute" - attribute: "MeasuredValue" - - - label: "Read attribute: MinMeasuredValue" - wait: "readAttribute" - attribute: "MinMeasuredValue" - - - label: "Read attribute: MaxMeasuredValue" - wait: "readAttribute" - attribute: "MaxMeasuredValue" - - - label: "Read attribute: Tolerance" - wait: "readAttribute" - attribute: "Tolerance" - - - label: "Read attribute: LightSensorType" - wait: "readAttribute" - attribute: "LightSensorType" - - - 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: | - 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 illuminancemeasurement read attribute-list 1 1 - - Verify DUT receives AttributeList response on the TH(all-clusters-minimal-app) Log: - - Received Read request - [1663070306.262953][4422:4422] CHIP:DMG: ReadRequestMessage = - [1663070281.411639][4422:4422] CHIP:DMG: { - [1663070281.411663][4422:4422] CHIP:DMG: AttributePathIBs = - [1663070281.411698][4422:4422] CHIP:DMG: [ - [1663070281.411724][4422:4422] CHIP:DMG: AttributePathIB = - [1663070281.411757][4422:4422] CHIP:DMG: { - [1663070281.411794][4422:4422] CHIP:DMG: Endpoint = 0x1, - [1663070281.411830][4422:4422] CHIP:DMG: Cluster = 0x400, - [1663070281.411865][4422:4422] CHIP:DMG: Attribute = 0x0000_FFFB, - [1663070281.411898][4422:4422] CHIP:DMG: } - [1663070281.411930][4422:4422] CHIP:DMG: - [1663070281.411962][4422:4422] CHIP:DMG: ], - [1663070281.411992][4422:4422] CHIP:DMG: - [1663070281.412021][4422:4422] CHIP:DMG: isFabricFiltered = true, - [1663070281.412051][4422:4422] CHIP:DMG: InteractionModelRevision = 1 - [1663070281.412078][4422:4422] CHIP:DMG: }, - [1663070281.412158][4422:4422] CHIP:DMG: IM RH moving to [GeneratingReports] - [1663070281.412262][4422:4422] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1663070281.412293][4422:4422] CHIP:DMG: Cluster 400, Attribute fffb is dirty - [1663070281.412317][4422:4422] CHIP:DMG: Reading attribute: Cluster=0x0000_0400 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) - [1663070281.412345][4422:4422] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0400 e=1 p=v - - - ./chip-tool illuminancemeasurement read feature-map 1 1 - - Verify DUT receives FeatureMap attribute response on the TH(all-clusters-minimal-app) Log: - - Received Read request - [1663070306.262953][4422:4422] CHIP:DMG: ReadRequestMessage = - [1663070306.262953][4422:4422] CHIP:DMG: ReadRequestMessage = - [1663070306.262984][4422:4422] CHIP:DMG: { - [1663070306.263008][4422:4422] CHIP:DMG: AttributePathIBs = - [1663070306.263041][4422:4422] CHIP:DMG: [ - [1663070306.263067][4422:4422] CHIP:DMG: AttributePathIB = - [1663070306.263103][4422:4422] CHIP:DMG: { - [1663070306.263140][4422:4422] CHIP:DMG: Endpoint = 0x1, - [1663070306.263175][4422:4422] CHIP:DMG: Cluster = 0x400, - [1663070306.263212][4422:4422] CHIP:DMG: Attribute = 0x0000_FFFC, - [1663070306.263244][4422:4422] CHIP:DMG: } - [1663070306.263277][4422:4422] CHIP:DMG: - [1663070306.263307][4422:4422] CHIP:DMG: ], - [1663070306.263339][4422:4422] CHIP:DMG: - [1663070306.263370][4422:4422] CHIP:DMG: isFabricFiltered = true, - [1663070306.263399][4422:4422] CHIP:DMG: InteractionModelRevision = 1 - [1663070306.263426][4422:4422] CHIP:DMG: }, - [1663070306.263508][4422:4422] CHIP:DMG: IM RH moving to [GeneratingReports] - [1663070306.263608][4422:4422] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1663070306.263640][4422:4422] CHIP:DMG: Cluster 400, Attribute fffc is dirty - [1663070306.263663][4422:4422] CHIP:DMG: Reading attribute: Cluster=0x0000_0400 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1663070306.263695][4422:4422] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0400 e=1 p=v - - - - - ./chip-tool illuminancemeasurement read min-measured-value 1 1 - - Verify DUT receives min-measured-value attribute response on the TH(all-clusters-minimal-app) Log: - - [1658142106.966504][13946:13946] CHIP:IM: Received Read request - [1658142106.966671][13946:13946] CHIP:DMG: ReadRequestMessage = - [1658142106.966738][13946:13946] CHIP:DMG: { - [1658142106.966821][13946:13946] CHIP:DMG: AttributePathIBs = - [1658142106.966887][13946:13946] CHIP:DMG: [ - [1658142106.966947][13946:13946] CHIP:DMG: AttributePathIB = - [1658142106.967035][13946:13946] CHIP:DMG: { - [1658142106.967105][13946:13946] CHIP:DMG: Endpoint = 0x1, - [1658142106.967209][13946:13946] CHIP:DMG: Cluster = 0x400, - [1658142106.967254][13946:13946] CHIP:DMG: Attribute = 0x0000_0001, - [1658142106.967281][13946:13946] CHIP:DMG: } - [1658142106.967320][13946:13946] CHIP:DMG: - [1658142106.967346][13946:13946] CHIP:DMG: ], - [1658142106.967384][13946:13946] CHIP:DMG: - [1658142106.967413][13946:13946] CHIP:DMG: isFabricFiltered = true, - [1658142106.967447][13946:13946] CHIP:DMG: InteractionModelRevision = 1 - [1658142106.967471][13946:13946] CHIP:DMG: }, - [1658142106.967568][13946:13946] CHIP:DMG: IM RH moving to [GeneratingReports] - [1658142106.967676][13946:13946] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - - - ./chip-tool illuminancemeasurement read max-measured-value 1 1 - - Verify DUT receives max-measured-value attribute response on the TH(all-clusters-minimal-app) Log: - [1658142397.298817][13946:13946] CHIP:IM: Received Read request - [1658142397.298895][13946:13946] CHIP:DMG: ReadRequestMessage = - [1658142397.298932][13946:13946] CHIP:DMG: { - [1658142397.298960][13946:13946] CHIP:DMG: AttributePathIBs = - [1658142397.298986][13946:13946] CHIP:DMG: [ - [1658142397.299020][13946:13946] CHIP:DMG: AttributePathIB = - [1658142397.299047][13946:13946] CHIP:DMG: { - [1658142397.299085][13946:13946] CHIP:DMG: Endpoint = 0x1, - [1658142397.299125][13946:13946] CHIP:DMG: Cluster = 0x400, - [1658142397.299158][13946:13946] CHIP:DMG: Attribute = 0x0000_0002, - [1658142397.299195][13946:13946] CHIP:DMG: } - [1658142397.299223][13946:13946] CHIP:DMG: - [1658142397.299258][13946:13946] CHIP:DMG: ], - [1658142397.299286][13946:13946] CHIP:DMG: - [1658142397.299321][13946:13946] CHIP:DMG: isFabricFiltered = true, - [1658142397.299346][13946:13946] CHIP:DMG: InteractionModelRevision = 1 - [1658142397.299378][13946:13946] CHIP:DMG: }, - [1658142397.299462][13946:13946] CHIP:DMG: IM RH moving to [GeneratingReports] - [1658142397.299556][13946:13946] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - - - ./chip-tool illuminancemeasurement read measured-value 1 1 - - Verify DUT receives measured-value attribute response on the TH(all-clusters-minimal-app) Log: - - [1658142471.266188][13946:13946] CHIP:IM: Received Read request - [1658142471.266273][13946:13946] CHIP:DMG: ReadRequestMessage = - [1658142471.266303][13946:13946] CHIP:DMG: { - [1658142471.266329][13946:13946] CHIP:DMG: AttributePathIBs = - [1658142471.266358][13946:13946] CHIP:DMG: [ - [1658142471.266386][13946:13946] CHIP:DMG: AttributePathIB = - [1658142471.266417][13946:13946] CHIP:DMG: { - [1658142471.266449][13946:13946] CHIP:DMG: Endpoint = 0x1, - [1658142471.266486][13946:13946] CHIP:DMG: Cluster = 0x400, - [1658142471.266521][13946:13946] CHIP:DMG: Attribute = 0x0000_0000, - [1658142471.266558][13946:13946] CHIP:DMG: } - [1658142471.266593][13946:13946] CHIP:DMG: - [1658142471.266624][13946:13946] CHIP:DMG: ], - [1658142471.266656][13946:13946] CHIP:DMG: - [1658142471.266686][13946:13946] CHIP:DMG: isFabricFiltered = true, - [1658142471.266714][13946:13946] CHIP:DMG: InteractionModelRevision = 1 - [1658142471.266740][13946:13946] CHIP:DMG: }, - [1658142471.266826][13946:13946] CHIP:DMG: IM RH moving to [GeneratingReports] - [1658142471.266939][13946:13946] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - 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 illuminancemeasurement read tolerance 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool illuminancemeasurement read light-sensor-type 1 1 - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml deleted file mode 100644 index 408b2fbf46ae9d..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml +++ /dev/null @@ -1,527 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 59.3.1. [TC-I-3.1] Attributes with Client as DUT - -PICS: - - I.C - - I.C.AM-READ - - I.C.AO-READ - - I.C.AM-WRITE - - I.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Identify" - endpoint: 1 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: IdentifyTime" - PICS: I.C.AM-READ - wait: "readAttribute" - attribute: "IdentifyTime" - - - label: "Read attribute: identifytype" - PICS: I.C.AM-READ - wait: "readAttribute" - attribute: "IdentifyType" - - - label: "write attribute: IdentifyTime" - PICS: I.C.AM-WRITE - wait: "writeAttribute" - attribute: "IdentifyTime" - arguments: - value: - - - label: "Readback attribute: IdentifyTime" - PICS: I.C.AM-READ - wait: "readAttribute" - attribute: "IdentifyTime" - - - 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: | - 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 identify read feature-map 1 1 - - Verify none of the optional feature of the server-side of the cluster is listed on TH(all-clusters-minnimal-app) Log - - [1667198019.683786][11390:11390] CHIP:EM: Handling via exchange: 36421r, Delegate: 0xaaaaad555148 - [1667198019.683892][11390:11390] CHIP:IM: Received Read request - [1667198019.684067][11390:11390] CHIP:DMG: ReadRequestMessage = - [1667198019.684135][11390:11390] CHIP:DMG: { - [1667198019.684186][11390:11390] CHIP:DMG: AttributePathIBs = - [1667198019.684252][11390:11390] CHIP:DMG: [ - [1667198019.684313][11390:11390] CHIP:DMG: AttributePathIB = - [1667198019.684383][11390:11390] CHIP:DMG: { - [1667198019.684453][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198019.684537][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198019.684611][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFC, - [1667198019.684695][11390:11390] CHIP:DMG: } - [1667198019.684767][11390:11390] CHIP:DMG: - [1667198019.684826][11390:11390] CHIP:DMG: ], - [1667198019.684896][11390:11390] CHIP:DMG: - [1667198019.684962][11390:11390] CHIP:DMG: isFabricFiltered = true, - [1667198019.685032][11390:11390] CHIP:DMG: InteractionModelRevision = 1 - [1667198019.685092][11390:11390] CHIP:DMG: }, - [1667198019.685252][11390:11390] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667198019.685482][11390:11390] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667198019.685556][11390:11390] CHIP:DMG: Cluster 3, Attribute fffc is dirty - [1667198019.685625][11390:11390] CHIP:DMG: Reading attribute: Cluster=0x0000_0003 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1667198019.685693][11390:11390] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v - [1667198019.685770][11390:11390] CHIP:DMG: AccessControl: allowed - [1667198019.685889][11390:11390] CHIP:DMG: Sending report (payload has 37 bytes)... - [1667198019.686450][11390:11390] CHIP:EM: <<< [E:36421r M:134293096 (Ack:90102725)] (S) Msg TX to 1:000000000001B669 [CA2D] --- Type 0001:05 (IM:ReportData) - [1667198019.686596][11390:11390] CHIP:IN: (S) Sending msg 134293096 on secure session with LSID: 13942 - [1667198019.687274][11390:11390] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:34895 | 134293096 | [Interaction Model (1) / Report Data (0x05) / Session = 39691 / Exchange = 36421] - [1667198019.687369][11390:11390] CHIP:DMG: Header Flags = - [1667198019.687425][11390:11390] CHIP:DMG: { - [1667198019.687511][11390:11390] CHIP:DMG: Exchange (0x06) = - [1667198019.687567][11390:11390] CHIP:DMG: { - [1667198019.687627][11390:11390] CHIP:DMG: AckMsg = 90102725 - [1667198019.687685][11390:11390] CHIP:DMG: NeedsAck = true - [1667198019.687738][11390:11390] CHIP:DMG: } - [1667198019.687809][11390:11390] CHIP:DMG: } - [1667198019.687860][11390:11390] CHIP:DMG: - [1667198019.687923][11390:11390] CHIP:DMG: Encrypted Payload (71 bytes) = - [1667198019.687979][11390:11390] CHIP:DMG: { - [1667198019.688033][11390:11390] CHIP:DMG: data = 000b9b00682601088051c3accb764025501e3a98907ee49fde00fb52eb4376fe15e852d2a6496f2f1e303426d75480b16676e4703eef4fa5faeafdd8cbbe06a5b89a6ed3bb5380 - [1667198019.688086][11390:11390] CHIP:DMG: buffer_ptr = 187650200610416 - [1667198019.688139][11390:11390] CHIP:DMG: } - [1667198019.688190][11390:11390] CHIP:DMG: - [1667198019.688266][11390:11390] CHIP:DMG: Decrypted Payload (37 bytes) = - [1667198019.688323][11390:11390] CHIP:DMG: { - [1667198019.688371][11390:11390] CHIP:DMG: data = 1536011535012600810a313837012402012403032504fcff18240200181818290424ff0118 - [1667198019.688426][11390:11390] CHIP:DMG: } - [1667198019.688484][11390:11390] CHIP:DMG: - [1667198019.688635][11390:11390] CHIP:DMG: ReportDataMessage = - [1667198019.688702][11390:11390] CHIP:DMG: { - [1667198019.688756][11390:11390] CHIP:DMG: AttributeReportIBs = - [1667198019.688833][11390:11390] CHIP:DMG: [ - [1667198019.688891][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198019.688971][11390:11390] CHIP:DMG: { - [1667198019.689038][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198019.689104][11390:11390] CHIP:DMG: { - [1667198019.689187][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198019.689278][11390:11390] CHIP:DMG: AttributePathIB = - [1667198019.689364][11390:11390] CHIP:DMG: { - [1667198019.689444][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198019.689543][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198019.689645][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFC, - [1667198019.689741][11390:11390] CHIP:DMG: } - [1667198019.689839][11390:11390] CHIP:DMG: - [1667198019.689936][11390:11390] CHIP:DMG: Data = 0, - [1667198019.690003][11390:11390] CHIP:DMG: }, - [1667198019.690087][11390:11390] CHIP:DMG: - [1667198019.690159][11390:11390] CHIP:DMG: }, - - ./chip-tool identify read attribute-list 1 1 - - Verify none of the optional attribute of the server-side of the cluster is listed on TH(all-clusters-minnimal-app) Log - - [1667198224.933982][11390:11390] CHIP:EM: Handling via exchange: 27925r, Delegate: 0xaaaaad555148 - [1667198224.934084][11390:11390] CHIP:IM: Received Read request - [1667198224.934251][11390:11390] CHIP:DMG: ReadRequestMessage = - [1667198224.934318][11390:11390] CHIP:DMG: { - [1667198224.934373][11390:11390] CHIP:DMG: AttributePathIBs = - [1667198224.934439][11390:11390] CHIP:DMG: [ - [1667198224.934546][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.934627][11390:11390] CHIP:DMG: { - [1667198224.934699][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.934793][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.934877][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.934954][11390:11390] CHIP:DMG: } - [1667198224.935024][11390:11390] CHIP:DMG: - [1667198224.935089][11390:11390] CHIP:DMG: ], - [1667198224.935161][11390:11390] CHIP:DMG: - [1667198224.935221][11390:11390] CHIP:DMG: isFabricFiltered = true, - [1667198224.935286][11390:11390] CHIP:DMG: InteractionModelRevision = 1 - [1667198224.935347][11390:11390] CHIP:DMG: }, - [1667198224.935508][11390:11390] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667198224.935740][11390:11390] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667198224.935813][11390:11390] CHIP:DMG: Cluster 3, Attribute fffb is dirty - [1667198224.935870][11390:11390] CHIP:DMG: Reading attribute: Cluster=0x0000_0003 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) - [1667198224.935933][11390:11390] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v - [1667198224.936010][11390:11390] CHIP:DMG: AccessControl: allowed - [1667198224.936182][11390:11390] CHIP:DMG: Sending report (payload has 245 bytes)... - [1667198224.936812][11390:11390] CHIP:EM: <<< [E:27925r M:151663564 (Ack:200483580)] (S) Msg TX to 1:000000000001B669 [CA2D] --- Type 0001:05 (IM:ReportData) - [1667198224.936917][11390:11390] CHIP:IN: (S) Sending msg 151663564 on secure session with LSID: 13943 - [1667198224.937653][11390:11390] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:59621 | 151663564 | [Interaction Model (1) / Report Data (0x05) / Session = 56997 / Exchange = 27925] - [1667198224.937751][11390:11390] CHIP:DMG: Header Flags = - [1667198224.937807][11390:11390] CHIP:DMG: { - [1667198224.937893][11390:11390] CHIP:DMG: Exchange (0x06) = - [1667198224.937950][11390:11390] CHIP:DMG: { - [1667198224.938010][11390:11390] CHIP:DMG: AckMsg = 200483580 - [1667198224.938065][11390:11390] CHIP:DMG: NeedsAck = true - [1667198224.938118][11390:11390] CHIP:DMG: } - [1667198224.938190][11390:11390] CHIP:DMG: } - [1667198224.938245][11390:11390] CHIP:DMG: - [1667198224.938314][11390:11390] CHIP:DMG: Encrypted Payload (279 bytes) = - [1667198224.938371][11390:11390] CHIP:DMG: { - [1667198224.938426][11390:11390] CHIP:DMG: data = 00a5de00cc330a0959e5cf9c38a602566830c8a854f61a764c38778932202dbd2459c7421e99d13982ea64c4e9bb13abe2b6498a67680727ab75ab029010bfd8fe9c1d4d4eac5573df7aca513dbb5727f27e9be48c11180cc3fb57985e446e60fca1454f3438ae974d7674570e60b9a7dbcd99d49a18ae607bbf2ee937d164399a5c1104322d44e8e48adf1fe35fee2a415705c74244709303c1373991d1f116ce5b3d7c9e0c03770c460fa43681d72ae6460cf825f333984a4d749f723e0c962ce57c2ad29c4abfa75c2fa89c59c8ef37843738fbb8dd7eab026ed10e790cc57558baa64c36994e7d06d27e6a43d324923dcb03f95e2f2e35a81a49cbef0afd9c3cc14ff156c3c6c0bea876ad4f3b3dad37d591f25cf0 - [1667198224.938547][11390:11390] CHIP:DMG: buffer_ptr = 187650200610672 - [1667198224.938609][11390:11390] CHIP:DMG: } - [1667198224.938661][11390:11390] CHIP:DMG: - [1667198224.938740][11390:11390] CHIP:DMG: Decrypted Payload (245 bytes) = - [1667198224.938794][11390:11390] CHIP:DMG: { - [1667198224.938848][11390:11390] CHIP:DMG: data = 1536011535012600810a313837012402012403032504fbff1836021818181535012600810a313837012402012403032504fbff34051824020018181535012600810a313837012402012403032504fbff34051824020118181535012600810a313837012402012403032504fbff3405182502f8ff18181535012600810a313837012402012403032504fbff3405182502f9ff18181535012600810a313837012402012403032504fbff3405182502fbff18181535012600810a313837012402012403032504fbff3405182502fcff18181535012600810a313837012402012403032504fbff3405182502fdff181818290424ff0118 - [1667198224.938912][11390:11390] CHIP:DMG: } - [1667198224.938963][11390:11390] CHIP:DMG: - [1667198224.939380][11390:11390] CHIP:DMG: ReportDataMessage = - [1667198224.939446][11390:11390] CHIP:DMG: { - [1667198224.939500][11390:11390] CHIP:DMG: AttributeReportIBs = - [1667198224.939585][11390:11390] CHIP:DMG: [ - [1667198224.939647][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.939745][11390:11390] CHIP:DMG: { - [1667198224.939817][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.939897][11390:11390] CHIP:DMG: { - [1667198224.939988][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.940059][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.940154][11390:11390] CHIP:DMG: { - [1667198224.940250][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.940327][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.940426][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.940521][11390:11390] CHIP:DMG: } - [1667198224.940603][11390:11390] CHIP:DMG: - [1667198224.940686][11390:11390] CHIP:DMG: Data = [ - [1667198224.940779][11390:11390] CHIP:DMG: - [1667198224.940855][11390:11390] CHIP:DMG: ], - [1667198224.940943][11390:11390] CHIP:DMG: }, - [1667198224.941038][11390:11390] CHIP:DMG: - [1667198224.941108][11390:11390] CHIP:DMG: }, - [1667198224.941204][11390:11390] CHIP:DMG: - [1667198224.941273][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.941353][11390:11390] CHIP:DMG: { - [1667198224.941425][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.941493][11390:11390] CHIP:DMG: { - [1667198224.941583][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.941672][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.941764][11390:11390] CHIP:DMG: { - [1667198224.941858][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.941954][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.942032][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.942118][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.942212][11390:11390] CHIP:DMG: } - [1667198224.942310][11390:11390] CHIP:DMG: - [1667198224.942408][11390:11390] CHIP:DMG: Data = 0, - [1667198224.942519][11390:11390] CHIP:DMG: }, - [1667198224.942595][11390:11390] CHIP:DMG: - [1667198224.942658][11390:11390] CHIP:DMG: }, - [1667198224.942746][11390:11390] CHIP:DMG: - [1667198224.942808][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.942895][11390:11390] CHIP:DMG: { - [1667198224.942957][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.943034][11390:11390] CHIP:DMG: { - [1667198224.943125][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.943215][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.943306][11390:11390] CHIP:DMG: { - [1667198224.943382][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.943478][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.943580][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.943675][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.943756][11390:11390] CHIP:DMG: } - [1667198224.943838][11390:11390] CHIP:DMG: - [1667198224.943919][11390:11390] CHIP:DMG: Data = 1, - [1667198224.944009][11390:11390] CHIP:DMG: }, - [1667198224.944089][11390:11390] CHIP:DMG: - [1667198224.944159][11390:11390] CHIP:DMG: }, - [1667198224.944248][11390:11390] CHIP:DMG: - [1667198224.944303][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.944382][11390:11390] CHIP:DMG: { - [1667198224.944447][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.944525][11390:11390] CHIP:DMG: { - [1667198224.944616][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.944706][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.944776][11390:11390] CHIP:DMG: { - [1667198224.944868][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.944968][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.945068][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.945165][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.945247][11390:11390] CHIP:DMG: } - [1667198224.945328][11390:11390] CHIP:DMG: - [1667198224.945414][11390:11390] CHIP:DMG: Data = 65528, - [1667198224.945501][11390:11390] CHIP:DMG: }, - [1667198224.945586][11390:11390] CHIP:DMG: - [1667198224.945644][11390:11390] CHIP:DMG: }, - [1667198224.945732][11390:11390] CHIP:DMG: - [1667198224.945794][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.945875][11390:11390] CHIP:DMG: { - [1667198224.945940][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.946011][11390:11390] CHIP:DMG: { - [1667198224.946091][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.946183][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.946266][11390:11390] CHIP:DMG: { - [1667198224.946360][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.946580][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.946689][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.946777][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.946856][11390:11390] CHIP:DMG: } - [1667198224.946940][11390:11390] CHIP:DMG: - [1667198224.947019][11390:11390] CHIP:DMG: Data = 65529, - [1667198224.947091][11390:11390] CHIP:DMG: }, - [1667198224.947172][11390:11390] CHIP:DMG: - [1667198224.947233][11390:11390] CHIP:DMG: }, - [1667198224.947324][11390:11390] CHIP:DMG: - [1667198224.947386][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.947467][11390:11390] CHIP:DMG: { - [1667198224.947534][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.947606][11390:11390] CHIP:DMG: { - [1667198224.947680][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.947752][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.947828][11390:11390] CHIP:DMG: { - [1667198224.947902][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.947987][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.948073][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.948153][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.948233][11390:11390] CHIP:DMG: } - [1667198224.948317][11390:11390] CHIP:DMG: - [1667198224.948399][11390:11390] CHIP:DMG: Data = 65531, - [1667198224.948473][11390:11390] CHIP:DMG: }, - [1667198224.948549][11390:11390] CHIP:DMG: - [1667198224.948614][11390:11390] CHIP:DMG: }, - [1667198224.948699][11390:11390] CHIP:DMG: - [1667198224.948760][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.948841][11390:11390] CHIP:DMG: { - [1667198224.948902][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.948973][11390:11390] CHIP:DMG: { - [1667198224.949042][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.949118][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.949196][11390:11390] CHIP:DMG: { - [1667198224.949274][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.949359][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.949444][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.949526][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.949606][11390:11390] CHIP:DMG: } - [1667198224.949685][11390:11390] CHIP:DMG: - [1667198224.949765][11390:11390] CHIP:DMG: Data = 65532, - [1667198224.949841][11390:11390] CHIP:DMG: }, - [1667198224.949915][11390:11390] CHIP:DMG: - [1667198224.949981][11390:11390] CHIP:DMG: }, - [1667198224.950072][11390:11390] CHIP:DMG: - [1667198224.950133][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198224.950214][11390:11390] CHIP:DMG: { - [1667198224.950274][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198224.950346][11390:11390] CHIP:DMG: { - [1667198224.950420][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198224.950536][11390:11390] CHIP:DMG: AttributePathIB = - [1667198224.950625][11390:11390] CHIP:DMG: { - [1667198224.950715][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198224.950805][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198224.950890][11390:11390] CHIP:DMG: Attribute = 0x0000_FFFB, - [1667198224.950978][11390:11390] CHIP:DMG: ListIndex = Null, - [1667198224.951062][11390:11390] CHIP:DMG: } - [1667198224.951145][11390:11390] CHIP:DMG: - [1667198224.951231][11390:11390] CHIP:DMG: Data = 65533, - [1667198224.951310][11390:11390] CHIP:DMG: }, - [1667198224.951385][11390:11390] CHIP:DMG: - [1667198224.951455][11390:11390] CHIP:DMG: }, - [1667198224.951534][11390:11390] CHIP:DMG: - - - ./chip-tool identify read identify-time 1 1 - - Verify DUT receives identify-time attribute response on theTH(all-clusters-minimal-app) - - [1667198339.074575][11390:11390] CHIP:EM: Handling via exchange: 6451r, Delegate: 0xaaaaad555148 - [1667198339.074679][11390:11390] CHIP:IM: Received Read request - [1667198339.074858][11390:11390] CHIP:DMG: ReadRequestMessage = - [1667198339.074925][11390:11390] CHIP:DMG: { - [1667198339.074984][11390:11390] CHIP:DMG: AttributePathIBs = - [1667198339.075050][11390:11390] CHIP:DMG: [ - [1667198339.075110][11390:11390] CHIP:DMG: AttributePathIB = - [1667198339.075186][11390:11390] CHIP:DMG: { - [1667198339.075265][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198339.075356][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198339.075447][11390:11390] CHIP:DMG: Attribute = 0x0000_0000, - [1667198339.075531][11390:11390] CHIP:DMG: } - [1667198339.075604][11390:11390] CHIP:DMG: - [1667198339.075671][11390:11390] CHIP:DMG: ], - [1667198339.075742][11390:11390] CHIP:DMG: - [1667198339.075809][11390:11390] CHIP:DMG: isFabricFiltered = true, - [1667198339.075875][11390:11390] CHIP:DMG: InteractionModelRevision = 1 - [1667198339.075934][11390:11390] CHIP:DMG: }, - [1667198339.076096][11390:11390] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667198339.076326][11390:11390] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667198339.076400][11390:11390] CHIP:DMG: Cluster 3, Attribute 0 is dirty - [1667198339.076456][11390:11390] CHIP:DMG: Reading attribute: Cluster=0x0000_0003 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1667198339.076522][11390:11390] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v - [1667198339.076600][11390:11390] CHIP:DMG: AccessControl: allowed - [1667198339.076716][11390:11390] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667198339.077270][11390:11390] CHIP:EM: <<< [E:6451r M:222156074 (Ack:7059472)] (S) Msg TX to 1:000000000001B669 [CA2D] --- Type 0001:05 (IM:ReportData) - [1667198339.077372][11390:11390] CHIP:IN: (S) Sending msg 222156074 on secure session with LSID: 13945 - [1667198339.078057][11390:11390] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:46790 | 222156074 | [Interaction Model (1) / Report Data (0x05) / Session = 2802 / Exchange = 6451] - [1667198339.078153][11390:11390] CHIP:DMG: Header Flags = - [1667198339.078211][11390:11390] CHIP:DMG: { - [1667198339.078298][11390:11390] CHIP:DMG: Exchange (0x06) = - [1667198339.078355][11390:11390] CHIP:DMG: { - [1667198339.078414][11390:11390] CHIP:DMG: AckMsg = 7059472 - [1667198339.078523][11390:11390] CHIP:DMG: NeedsAck = true - [1667198339.078581][11390:11390] CHIP:DMG: } - [1667198339.078654][11390:11390] CHIP:DMG: } - [1667198339.078703][11390:11390] CHIP:DMG: - [1667198339.078772][11390:11390] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667198339.078828][11390:11390] CHIP:DMG: { - [1667198339.078882][11390:11390] CHIP:DMG: data = 00f20a002ad53d0dbfe9edb13d868a05c798791f5f8fdd9da1275c3e8b4a0e90d79afa29de34e027d2151f9b8eddefe41084248d0eb87df77fff3e74845f815637f1d35bdbf5 - [1667198339.078940][11390:11390] CHIP:DMG: buffer_ptr = 187650200611616 - [1667198339.078993][11390:11390] CHIP:DMG: } - [1667198339.079044][11390:11390] CHIP:DMG: - [1667198339.079118][11390:11390] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667198339.079177][11390:11390] CHIP:DMG: { - [1667198339.079230][11390:11390] CHIP:DMG: data = 1536011535012600810a3138370124020124030324040018240200181818290424ff0118 - [1667198339.079286][11390:11390] CHIP:DMG: } - [1667198339.079337][11390:11390] CHIP:DMG: - [1667198339.079498][11390:11390] CHIP:DMG: ReportDataMessage = - [1667198339.079557][11390:11390] CHIP:DMG: { - [1667198339.079613][11390:11390] CHIP:DMG: AttributeReportIBs = - [1667198339.079699][11390:11390] CHIP:DMG: [ - [1667198339.079762][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198339.079843][11390:11390] CHIP:DMG: { - [1667198339.079916][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198339.080009][11390:11390] CHIP:DMG: { - [1667198339.080102][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198339.080193][11390:11390] CHIP:DMG: AttributePathIB = - [1667198339.080287][11390:11390] CHIP:DMG: { - [1667198339.080384][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198339.080467][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198339.080567][11390:11390] CHIP:DMG: Attribute = 0x0000_0000, - [1667198339.080648][11390:11390] CHIP:DMG: } - [1667198339.080752][11390:11390] CHIP:DMG: - [1667198339.080853][11390:11390] CHIP:DMG: Data = 0, - [1667198339.080927][11390:11390] CHIP:DMG: }, - [1667198339.081022][11390:11390] CHIP:DMG: - [1667198339.081103][11390:11390] CHIP:DMG: }, - - - - ./chip-tool identify read identify-type 1 1 - - Verify DUT receives identify-type attribute response on theTH(all-clusters-minimal-app) - - [1667198289.735862][11390:11390] CHIP:EM: Handling via exchange: 64741r, Delegate: 0xaaaaad555148 - [1667198289.735963][11390:11390] CHIP:IM: Received Read request - [1667198289.736138][11390:11390] CHIP:DMG: ReadRequestMessage = - [1667198289.736198][11390:11390] CHIP:DMG: { - [1667198289.736254][11390:11390] CHIP:DMG: AttributePathIBs = - [1667198289.736320][11390:11390] CHIP:DMG: [ - [1667198289.736375][11390:11390] CHIP:DMG: AttributePathIB = - [1667198289.736452][11390:11390] CHIP:DMG: { - [1667198289.736528][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198289.736602][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198289.736682][11390:11390] CHIP:DMG: Attribute = 0x0000_0001, - [1667198289.736754][11390:11390] CHIP:DMG: } - [1667198289.736827][11390:11390] CHIP:DMG: - [1667198289.736899][11390:11390] CHIP:DMG: ], - [1667198289.736964][11390:11390] CHIP:DMG: - [1667198289.737029][11390:11390] CHIP:DMG: isFabricFiltered = true, - [1667198289.737095][11390:11390] CHIP:DMG: InteractionModelRevision = 1 - [1667198289.737155][11390:11390] CHIP:DMG: }, - [1667198289.737319][11390:11390] CHIP:DMG: IM RH moving to [GeneratingReports] - [1667198289.737548][11390:11390] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1667198289.737622][11390:11390] CHIP:DMG: Cluster 3, Attribute 1 is dirty - [1667198289.737678][11390:11390] CHIP:DMG: Reading attribute: Cluster=0x0000_0003 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) - [1667198289.737744][11390:11390] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0003 e=1 p=v - [1667198289.737815][11390:11390] CHIP:DMG: AccessControl: allowed - [1667198289.737932][11390:11390] CHIP:DMG: Sending report (payload has 36 bytes)... - [1667198289.738541][11390:11390] CHIP:EM: <<< [E:64741r M:69392004 (Ack:178331771)] (S) Msg TX to 1:000000000001B669 [CA2D] --- Type 0001:05 (IM:ReportData) - [1667198289.738642][11390:11390] CHIP:IN: (S) Sending msg 69392004 on secure session with LSID: 13944 - [1667198289.739330][11390:11390] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:42392 | 69392004 | [Interaction Model (1) / Report Data (0x05) / Session = 32014 / Exchange = 64741] - [1667198289.739426][11390:11390] CHIP:DMG: Header Flags = - [1667198289.739484][11390:11390] CHIP:DMG: { - [1667198289.739569][11390:11390] CHIP:DMG: Exchange (0x06) = - [1667198289.739626][11390:11390] CHIP:DMG: { - [1667198289.739683][11390:11390] CHIP:DMG: AckMsg = 178331771 - [1667198289.739739][11390:11390] CHIP:DMG: NeedsAck = true - [1667198289.739793][11390:11390] CHIP:DMG: } - [1667198289.739864][11390:11390] CHIP:DMG: } - [1667198289.739913][11390:11390] CHIP:DMG: - [1667198289.739975][11390:11390] CHIP:DMG: Encrypted Payload (70 bytes) = - [1667198289.740036][11390:11390] CHIP:DMG: { - [1667198289.740090][11390:11390] CHIP:DMG: data = 000e7d0084d62204cbd01ef8fb96fef21446fb254f4ff23fac8a52c2dd91613eab078272abd47216595fafa1d635d39acb95eb86803156e59f4b8355e1b58b60cee20904a1f2 - [1667198289.740142][11390:11390] CHIP:DMG: buffer_ptr = 187650200612528 - [1667198289.740194][11390:11390] CHIP:DMG: } - [1667198289.740245][11390:11390] CHIP:DMG: - [1667198289.740321][11390:11390] CHIP:DMG: Decrypted Payload (36 bytes) = - [1667198289.740379][11390:11390] CHIP:DMG: { - [1667198289.740431][11390:11390] CHIP:DMG: data = 1536011535012600810a3138370124020124030324040118240202181818290424ff0118 - [1667198289.740486][11390:11390] CHIP:DMG: } - [1667198289.740532][11390:11390] CHIP:DMG: - [1667198289.740692][11390:11390] CHIP:DMG: ReportDataMessage = - [1667198289.740749][11390:11390] CHIP:DMG: { - [1667198289.740794][11390:11390] CHIP:DMG: AttributeReportIBs = - [1667198289.740861][11390:11390] CHIP:DMG: [ - [1667198289.740913][11390:11390] CHIP:DMG: AttributeReportIB = - [1667198289.740984][11390:11390] CHIP:DMG: { - [1667198289.741055][11390:11390] CHIP:DMG: AttributeDataIB = - [1667198289.741135][11390:11390] CHIP:DMG: { - [1667198289.741217][11390:11390] CHIP:DMG: DataVersion = 0x38310a81, - [1667198289.741305][11390:11390] CHIP:DMG: AttributePathIB = - [1667198289.741389][11390:11390] CHIP:DMG: { - [1667198289.741484][11390:11390] CHIP:DMG: Endpoint = 0x1, - [1667198289.741588][11390:11390] CHIP:DMG: Cluster = 0x3, - [1667198289.741688][11390:11390] CHIP:DMG: Attribute = 0x0000_0001, - [1667198289.741782][11390:11390] CHIP:DMG: } - [1667198289.741858][11390:11390] CHIP:DMG: - [1667198289.741946][11390:11390] CHIP:DMG: Data = 2, - [1667198289.742034][11390:11390] CHIP:DMG: }, - [1667198289.742120][11390:11390] CHIP:DMG: - [1667198289.742180][11390:11390] CHIP:DMG: }, - [1667198289.742256][11390:11390] CHIP:DMG: - [1667198289.742317][11390:11390] CHIP:DMG: ], - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - There is no optional attribute for this cluster - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" 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 deleted file mode 100644 index a004c2c02a0021..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LCFG_3_1_Simulated.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: - 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_LTIME_1_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_1_1_Simulated.yaml deleted file mode 100644 index 5d315c8c3cf9bc..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LTIME_1_1_Simulated.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (c) 2023 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: 108.1.1. [TC-LTIME-1.1] Global Attributes [DUT as Client] - -PICS: - - LTIME.C - -config: - nodeId: 0x12344321 - cluster: "Time Format Localization" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT read (0xFFFD) ClusterRevision attribute" - PICS: LTIME.C.Afffd - wait: "readAttribute" - attribute: "ClusterRevision" - - - label: "DUT read (0xFFFC) FeatureMap attribute" - PICS: LTIME.C.Afffc - wait: "readAttribute" - attribute: "FeatureMap" - - - label: "DUT read (0xFFFB) AttributeList attribute" - PICS: LTIME.C.Afffb - wait: "readAttribute" - attribute: "AttributeList" - - #Commenting out the step EventList attribute which is out of scope for matter V1.0 - #- label: "DUT read (0xFFFA) EventList attribute" - # PICS: LTIME.C.Afffa - # wait: "readAttribute" - # attribute: "EventList" - - - label: "DUT read (0xFFF9) AcceptedCommandList attribute" - PICS: LTIME.C.Afff9 - wait: "readAttribute" - attribute: "AcceptedCommandList" - - - label: "DUT read (0xFFF8) GeneratedCommandList attribute" - PICS: LTIME.C.Afff8 - wait: "readAttribute" - attribute: "GeneratedCommandList" diff --git a/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml deleted file mode 100644 index de3b799ac2bc7d..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml +++ /dev/null @@ -1,938 +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: - 4.2.1. [TC-LTIME-2.1] Read and Write Time Format Localization Cluster - Attributes [DUT as Client] - -PICS: - - LTIME.C - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: "Note" - verification: | - Commission TH(all-clusters-app) to DUT(chip-tool) using below command - - TH(all-clusters-app) : ./chip-all-clusters-app --trace_decode 1 - DUT(chip-tool) : ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1 - disabled: true - - - label: "Step 1: DUT reads HourFormat attribute from TH" - PICS: LTIME.C.A0000 - verification: | - ./chip-tool timeformatlocalization read hour-format 1 0 - - Verify HourFormat attribute read request is successful on the TH(all-clusters-app) Log and below is the sample log provided for raspi platform: - - [1686897742.935624][12411:12411] CHIP:DMG: ReadRequestMessage = - [1686897742.935627][12411:12411] CHIP:DMG: { - [1686897742.935630][12411:12411] CHIP:DMG: AttributePathIBs = - [1686897742.935633][12411:12411] CHIP:DMG: [ - [1686897742.935636][12411:12411] CHIP:DMG: AttributePathIB = - [1686897742.935640][12411:12411] CHIP:DMG: { - [1686897742.935643][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686897742.935646][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686897742.935650][12411:12411] CHIP:DMG: Attribute = 0x0000_0000, - [1686897742.935652][12411:12411] CHIP:DMG: } - [1686897742.935656][12411:12411] CHIP:DMG: - [1686897742.935658][12411:12411] CHIP:DMG: ], - [1686897742.935662][12411:12411] CHIP:DMG: - [1686897742.935665][12411:12411] CHIP:DMG: isFabricFiltered = true, - [1686897742.935668][12411:12411] CHIP:DMG: InteractionModelRevision = 1 - [1686897742.935670][12411:12411] CHIP:DMG: }, - disabled: true - - - label: - "Step 2: If (LTIME.C.A0000.12HR) DUT writes 0 to HourFormat attribute - on TH" - PICS: LTIME.C.A0000.12HR - verification: | - ./chip-tool timeformatlocalization write hour-format 0 1 0 - - Verify TH receives HourFormat attribute write command and updates value to 0 on the TH(all-clusters-app) Log and below is the sample log provided for raspi platform: - - [1686897823.291113][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686897823.291116][12411:12411] CHIP:DMG: { - [1686897823.291119][12411:12411] CHIP:DMG: suppressResponse = false, - [1686897823.291122][12411:12411] CHIP:DMG: timedRequest = false, - [1686897823.291124][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686897823.291128][12411:12411] CHIP:DMG: [ - [1686897823.291131][12411:12411] CHIP:DMG: AttributeDataIB = - [1686897823.291134][12411:12411] CHIP:DMG: { - [1686897823.291137][12411:12411] CHIP:DMG: AttributePathIB = - [1686897823.291140][12411:12411] CHIP:DMG: { - [1686897823.291144][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686897823.291147][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686897823.291150][12411:12411] CHIP:DMG: Attribute = 0x0000_0000, - [1686897823.291153][12411:12411] CHIP:DMG: } - [1686897823.291156][12411:12411] CHIP:DMG: - [1686897823.291160][12411:12411] CHIP:DMG: Data = 0, - [1686897823.291163][12411:12411] CHIP:DMG: }, - [1686897823.291167][12411:12411] CHIP:DMG: - [1686897823.291169][12411:12411] CHIP:DMG: ], - [1686897823.291173][12411:12411] CHIP:DMG: - [1686897823.291176][12411:12411] CHIP:DMG: moreChunkedMessages = false, - [1686897823.291179][12411:12411] CHIP:DMG: InteractionModelRevision = 1 - [1686897823.291181][12411:12411] CHIP:DMG: }, - disabled: true - - - label: "Step 3: DUT reads HourFormat attribute from TH" - PICS: LTIME.C.A0000 - verification: | - ./chip-tool timeformatlocalization read hour-format 1 0 - - Verify HourFormat attribute value is same as one that was set in the step 2 on the TH(all-clusters-app) Log: - - ReportDataMessage = - [1666853805.326001][20237:20237] CHIP:DMG: { - [1666853805.326004][20237:20237] CHIP:DMG: AttributeReportIBs = - [1666853805.326009][20237:20237] CHIP:DMG: [ - [1666853805.326012][20237:20237] CHIP:DMG: AttributeReportIB = - [1666853805.326016][20237:20237] CHIP:DMG: { - [1666853805.326020][20237:20237] CHIP:DMG: AttributeDataIB = - [1666853805.326023][20237:20237] CHIP:DMG: { - [1666853805.326026][20237:20237] CHIP:DMG: DataVersion = 0xbeb406dc, - [1666853805.326030][20237:20237] CHIP:DMG: AttributePathIB = - [1666853805.326034][20237:20237] CHIP:DMG: { - [1666853805.326040][20237:20237] CHIP:DMG: Endpoint = 0x0, - [1666853805.326044][20237:20237] CHIP:DMG: Cluster = 0x2c, - [1666853805.326049][20237:20237] CHIP:DMG: Attribute = 0x0000_0000, - [1666853805.326054][20237:20237] CHIP:DMG: } - [1666853805.326059][20237:20237] CHIP:DMG: - [1666853805.326062][20237:20237] CHIP:DMG: Data = 0, - [1666853805.326066][20237:20237] CHIP:DMG: }, - [1666853805.326070][20237:20237] CHIP:DMG: - [1666853805.326073][20237:20237] CHIP:DMG: }, - [1666853805.326076][20237:20237] CHIP:DMG: - [1666853805.326079][20237:20237] CHIP:DMG: ], - [1666853805.326085][20237:20237] CHIP:DMG: - [1666853805.326088][20237:20237] CHIP:DMG: SuppressResponse = true, - [1666853805.326090][20237:20237] CHIP:DMG: InteractionModelRevision = 1 - [1666853805.326093][20237:20237] CHIP:DMG: } - disabled: true - - - label: - "Step 4: If (LTIME.C.A0000.24HR) DUT writes 1 to HourFormat attribute - on TH" - PICS: LTIME.C.A0000.24HR - verification: | - ./chip-tool timeformatlocalization write hour-format 1 1 0 - - Verify TH receives HourFormat attribute write command and updates value to 1 on the TH(all-clusters-app) Log and below is the sample log provided for raspi platform: - - [1686897976.668257][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686897976.668269][12411:12411] CHIP:DMG: { - [1686897976.668279][12411:12411] CHIP:DMG: suppressResponse = false, - [1686897976.668291][12411:12411] CHIP:DMG: timedRequest = false, - [1686897976.668305][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686897976.668327][12411:12411] CHIP:DMG: [ - [1686897976.668341][12411:12411] CHIP:DMG: AttributeDataIB = - [1686897976.668360][12411:12411] CHIP:DMG: { - [1686897976.668369][12411:12411] CHIP:DMG: AttributePathIB = - [1686897976.668403][12411:12411] CHIP:DMG: { - [1686897976.668407][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686897976.668410][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686897976.668415][12411:12411] CHIP:DMG: Attribute = 0x0000_0000, - [1686897976.668419][12411:12411] CHIP:DMG: } - [1686897976.668424][12411:12411] CHIP:DMG: - [1686897976.668429][12411:12411] CHIP:DMG: Data = 1, - [1686897976.668432][12411:12411] CHIP:DMG: }, - [1686897976.668438][12411:12411] CHIP:DMG: - [1686897976.668442][12411:12411] CHIP:DMG: ], - [1686897976.668446][12411:12411] CHIP:DMG: - [1686897976.668449][12411:12411] CHIP:DMG: moreChunkedMessages = false, - [1686897976.668452][12411:12411] CHIP:DMG: InteractionModelRevision = 1 - [1686897976.668454][12411:12411] CHIP:DMG: }, - disabled: true - - - label: "Step 5: DUT reads HourFormat attribute on TH" - PICS: LTIME.C.A0000 - verification: | - ./chip-tool timeformatlocalization read hour-format 1 0 - - Verify HourFormat attribute value is same as one that was set in the step 5 on the TH(all-clusters-app) Log and below is the sample log provided for raspi platform: - - ReportDataMessage = - [1666853879.264685][20237:20237] CHIP:DMG: { - [1666853879.264688][20237:20237] CHIP:DMG: AttributeReportIBs = - [1666853879.264695][20237:20237] CHIP:DMG: [ - [1666853879.264698][20237:20237] CHIP:DMG: AttributeReportIB = - [1666853879.264706][20237:20237] CHIP:DMG: { - [1666853879.264709][20237:20237] CHIP:DMG: AttributeDataIB = - [1666853879.264713][20237:20237] CHIP:DMG: { - [1666853879.264717][20237:20237] CHIP:DMG: DataVersion = 0xbeb406dd, - [1666853879.264720][20237:20237] CHIP:DMG: AttributePathIB = - [1666853879.264724][20237:20237] CHIP:DMG: { - [1666853879.264727][20237:20237] CHIP:DMG: Endpoint = 0x0, - [1666853879.264730][20237:20237] CHIP:DMG: Cluster = 0x2c, - [1666853879.264734][20237:20237] CHIP:DMG: Attribute = 0x0000_0000, - [1666853879.264740][20237:20237] CHIP:DMG: } - [1666853879.264745][20237:20237] CHIP:DMG: - [1666853879.264749][20237:20237] CHIP:DMG: Data = 1, - [1666853879.264753][20237:20237] CHIP:DMG: }, - [1666853879.264759][20237:20237] CHIP:DMG: - [1666853879.264763][20237:20237] CHIP:DMG: }, - [1666853879.264769][20237:20237] CHIP:DMG: - [1666853879.264772][20237:20237] CHIP:DMG: ], - [1666853879.264779][20237:20237] CHIP:DMG: - [1666853879.264782][20237:20237] CHIP:DMG: SuppressResponse = true, - [1666853879.264785][20237:20237] CHIP:DMG: InteractionModelRevision = 1 - [1666853879.264788][20237:20237] CHIP:DMG: } - disabled: true - - - label: "Step 6: DUT reads ActiveCalendarType attribute on TH" - PICS: LTIME.C.A0001 - verification: | - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify active-calendar-type attribute read request is successful on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898051.422884][12411:12411] CHIP:DMG: ReadRequestMessage = - [1686898051.422888][12411:12411] CHIP:DMG: { - [1686898051.422890][12411:12411] CHIP:DMG: AttributePathIBs = - [1686898051.422893][12411:12411] CHIP:DMG: [ - [1686898051.422896][12411:12411] CHIP:DMG: AttributePathIB = - [1686898051.422900][12411:12411] CHIP:DMG: { - [1686898051.422903][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898051.422906][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898051.422909][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898051.422911][12411:12411] CHIP:DMG: } - [1686898051.422915][12411:12411] CHIP:DMG: - [1686898051.422917][12411:12411] CHIP:DMG: ], - [1686898051.422921][12411:12411] CHIP:DMG: - [1686898051.422924][12411:12411] CHIP:DMG: isFabricFiltered = true, - [1686898051.422926][12411:12411] CHIP:DMG: InteractionModelRevision = 1 - [1686898051.422929][12411:12411] CHIP:DMG: }, - disabled: true - - - label: "Step 7: DUT reads SupportedCalendarTypes attribute TH" - PICS: LTIME.C.A0002 - verification: | - ./chip-tool timeformatlocalization read supported-calendar-types 1 0 - - Verify SupportedCalendarTypes attribute read request is successful on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898103.035536][12411:12411] CHIP:DMG: ReadRequestMessage = - [1686898103.035540][12411:12411] CHIP:DMG: { - [1686898103.035542][12411:12411] CHIP:DMG: AttributePathIBs = - [1686898103.035546][12411:12411] CHIP:DMG: [ - [1686898103.035548][12411:12411] CHIP:DMG: AttributePathIB = - [1686898103.035551][12411:12411] CHIP:DMG: { - [1686898103.035554][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898103.035557][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898103.035560][12411:12411] CHIP:DMG: Attribute = 0x0000_0002, - [1686898103.035563][12411:12411] CHIP:DMG: } - [1686898103.035566][12411:12411] CHIP:DMG: - [1686898103.035568][12411:12411] CHIP:DMG: ], - [1686898103.035572][12411:12411] CHIP:DMG: - [1686898103.035575][12411:12411] CHIP:DMG: isFabricFiltered = true, - [1686898103.035579][12411:12411] CHIP:DMG: InteractionModelRevision = 1 - [1686898103.035581][12411:12411] CHIP:DMG: }, - disabled: true - - - label: - "Step 8: DUT writes value in PIXIT.LTIME.SCT to ActiveCalendarType - attribute on TH, followed by reading the ActiveCalendarType attribute - from TH" - PICS: LTIME.C.A0001 - verification: | - ./chip-tool timeformatlocalization write active-calendar-type 0 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 0 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898167.800454][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898167.800468][12411:12411] CHIP:DMG: { - [1686898167.800483][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898167.800501][12411:12411] CHIP:DMG: timedRequest = false, - [1686898167.800511][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898167.800529][12411:12411] CHIP:DMG: [ - [1686898167.800540][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898167.800552][12411:12411] CHIP:DMG: { - [1686898167.800563][12411:12411] CHIP:DMG: AttributePathIB = - [1686898167.800575][12411:12411] CHIP:DMG: { - [1686898167.800589][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898167.800604][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898167.800620][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898167.800630][12411:12411] CHIP:DMG: } - [1686898167.800649][12411:12411] CHIP:DMG: - [1686898167.800662][12411:12411] CHIP:DMG: Data = 0, - [1686898167.800672][12411:12411] CHIP:DMG: }, - [1686898167.800687][12411:12411] CHIP:DMG: - [1686898167.800696][12411:12411] CHIP:DMG: ], - [1686898167.800710][12411:12411] CHIP:DMG: - [1686898167.800721][12411:12411] CHIP:DMG: moreChunkedMessages = false, - [1686898167.800734][12411:12411] CHIP:DMG: InteractionModelRevision = 1 - [1686898167.800742][12411:12411] CHIP:DMG: }, - disabled: true - - - label: "Step 9: Repeat step 8 for all the values in PIXIT.LTIME.SCT" - PICS: LTIME.C.A0001 - verification: | - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is same as the value that was set before on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - ReportDataMessage = - [1666854060.848201][20237:20237] CHIP:DMG: { - [1666854060.848204][20237:20237] CHIP:DMG: AttributeReportIBs = - [1666854060.848211][20237:20237] CHIP:DMG: [ - [1666854060.848215][20237:20237] CHIP:DMG: AttributeReportIB = - [1666854060.848222][20237:20237] CHIP:DMG: { - [1666854060.848225][20237:20237] CHIP:DMG: AttributeDataIB = - [1666854060.848229][20237:20237] CHIP:DMG: { - [1666854060.848234][20237:20237] CHIP:DMG: DataVersion = 0xbeb406de, - [1666854060.848238][20237:20237] CHIP:DMG: AttributePathIB = - [1666854060.848244][20237:20237] CHIP:DMG: { - [1666854060.848248][20237:20237] CHIP:DMG: Endpoint = 0x0, - [1666854060.848253][20237:20237] CHIP:DMG: Cluster = 0x2c, - [1666854060.848257][20237:20237] CHIP:DMG: Attribute = 0x0000_0001, - [1666854060.848260][20237:20237] CHIP:DMG: } - [1666854060.848266][20237:20237] CHIP:DMG: - [1666854060.848269][20237:20237] CHIP:DMG: Data = 0, - [1666854060.848272][20237:20237] CHIP:DMG: }, - [1666854060.848276][20237:20237] CHIP:DMG: - [1666854060.848279][20237:20237] CHIP:DMG: }, - [1666854060.848284][20237:20237] CHIP:DMG: - [1666854060.848287][20237:20237] CHIP:DMG: ], - [1666854060.848294][20237:20237] CHIP:DMG: - [1666854060.848298][20237:20237] CHIP:DMG: SuppressResponse = true, - [1666854060.848301][20237:20237] CHIP:DMG: InteractionModelRevision = 1 - [1666854060.848304][20237:20237] CHIP:DMG: } - disabled: true - - - label: "Step 10: Repeat step 8 for all the values in PIXIT.LTIME.SCT" - PICS: LTIME.C.A0001 - verification: | - ./chip-tool timeformatlocalization write active-calendar-type 1 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 1 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898332.358543][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898332.358546][12411:12411] CHIP:DMG: { - [1686898332.358550][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898332.358555][12411:12411] CHIP:DMG: timedRequest = false, - [1686898332.358559][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898332.358567][12411:12411] CHIP:DMG: [ - [1686898332.358570][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898332.358577][12411:12411] CHIP:DMG: { - [1686898332.358579][12411:12411] CHIP:DMG: AttributePathIB = - [1686898332.358586][12411:12411] CHIP:DMG: { - [1686898332.358590][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898332.358595][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898332.358598][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898332.358600][12411:12411] CHIP:DMG: } - [1686898332.358604][12411:12411] CHIP:DMG: - [1686898332.358607][12411:12411] CHIP:DMG: Data = 1, - [1686898332.358609][12411:12411] CHIP:DMG: }, - [1686898332.358613][12411:12411] CHIP:DMG: - [1686898332.358615][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 1 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898454.639136][12687:12689] CHIP:DMG: ReportDataMessage = - [1686898454.639140][12687:12689] CHIP:DMG: { - [1686898454.639142][12687:12689] CHIP:DMG: AttributeReportIBs = - [1686898454.639148][12687:12689] CHIP:DMG: [ - [1686898454.639150][12687:12689] CHIP:DMG: AttributeReportIB = - [1686898454.639155][12687:12689] CHIP:DMG: { - [1686898454.639158][12687:12689] CHIP:DMG: AttributeDataIB = - [1686898454.639163][12687:12689] CHIP:DMG: { - [1686898454.639166][12687:12689] CHIP:DMG: DataVersion = 0x68385037, - [1686898454.639170][12687:12689] CHIP:DMG: AttributePathIB = - [1686898454.639174][12687:12689] CHIP:DMG: { - [1686898454.639177][12687:12689] CHIP:DMG: Endpoint = 0x0, - [1686898454.639180][12687:12689] CHIP:DMG: Cluster = 0x2c, - [1686898454.639183][12687:12689] CHIP:DMG: Attribute = 0x0000_0001, - [1686898454.639186][12687:12689] CHIP:DMG: } - [1686898454.639192][12687:12689] CHIP:DMG: - [1686898454.639196][12687:12689] CHIP:DMG: Data = 1, - [1686898454.639199][12687:12689] CHIP:DMG: }, - [1686898454.639203][12687:12689] CHIP:DMG: - [1686898454.639205][12687:12689] CHIP:DMG: }, - [1686898454.639210][12687:12689] CHIP:DMG: - [1686898454.639213][12687:12689] CHIP:DMG: ], - [1686898454.639217][12687:12689] CHIP:DMG: - [1686898454.639220][12687:12689] CHIP:DMG: SuppressResponse = true, - [1686898454.639223][12687:12689] CHIP:DMG: InteractionModelRevision = 1 - [1686898454.639225][12687:12689] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 2 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 2 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898499.368660][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898499.368664][12411:12411] CHIP:DMG: { - [1686898499.368667][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898499.368671][12411:12411] CHIP:DMG: timedRequest = false, - [1686898499.368675][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898499.368682][12411:12411] CHIP:DMG: [ - [1686898499.368684][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898499.368688][12411:12411] CHIP:DMG: { - [1686898499.368690][12411:12411] CHIP:DMG: AttributePathIB = - [1686898499.368694][12411:12411] CHIP:DMG: { - [1686898499.368697][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898499.368701][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898499.368704][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898499.368706][12411:12411] CHIP:DMG: } - [1686898499.368711][12411:12411] CHIP:DMG: - [1686898499.368716][12411:12411] CHIP:DMG: Data = 2, - [1686898499.368718][12411:12411] CHIP:DMG: }, - [1686898499.368722][12411:12411] CHIP:DMG: - [1686898499.368725][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 2 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898544.231876][12718:12720] CHIP:DMG: ReportDataMessage = - [1686898544.231879][12718:12720] CHIP:DMG: { - [1686898544.231881][12718:12720] CHIP:DMG: AttributeReportIBs = - [1686898544.231887][12718:12720] CHIP:DMG: [ - [1686898544.231889][12718:12720] CHIP:DMG: AttributeReportIB = - [1686898544.231895][12718:12720] CHIP:DMG: { - [1686898544.231898][12718:12720] CHIP:DMG: AttributeDataIB = - [1686898544.231901][12718:12720] CHIP:DMG: { - [1686898544.231905][12718:12720] CHIP:DMG: DataVersion = 0x68385038, - [1686898544.231908][12718:12720] CHIP:DMG: AttributePathIB = - [1686898544.231911][12718:12720] CHIP:DMG: { - [1686898544.231915][12718:12720] CHIP:DMG: Endpoint = 0x0, - [1686898544.231919][12718:12720] CHIP:DMG: Cluster = 0x2c, - [1686898544.231922][12718:12720] CHIP:DMG: Attribute = 0x0000_0001, - [1686898544.231925][12718:12720] CHIP:DMG: } - [1686898544.231928][12718:12720] CHIP:DMG: - [1686898544.231932][12718:12720] CHIP:DMG: Data = 2, - [1686898544.231935][12718:12720] CHIP:DMG: }, - [1686898544.231939][12718:12720] CHIP:DMG: - [1686898544.231942][12718:12720] CHIP:DMG: }, - [1686898544.231946][12718:12720] CHIP:DMG: - [1686898544.231949][12718:12720] CHIP:DMG: ], - [1686898544.231953][12718:12720] CHIP:DMG: - [1686898544.231956][12718:12720] CHIP:DMG: SuppressResponse = true, - [1686898544.231959][12718:12720] CHIP:DMG: InteractionModelRevision = 1 - [1686898544.231961][12718:12720] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 3 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 3 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898582.764639][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898582.764656][12411:12411] CHIP:DMG: { - [1686898582.764670][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898582.764687][12411:12411] CHIP:DMG: timedRequest = false, - [1686898582.764698][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898582.764716][12411:12411] CHIP:DMG: [ - [1686898582.764726][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898582.764738][12411:12411] CHIP:DMG: { - [1686898582.764748][12411:12411] CHIP:DMG: AttributePathIB = - [1686898582.764760][12411:12411] CHIP:DMG: { - [1686898582.764773][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898582.764785][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898582.764798][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898582.764809][12411:12411] CHIP:DMG: } - [1686898582.764823][12411:12411] CHIP:DMG: - [1686898582.764836][12411:12411] CHIP:DMG: Data = 3, - [1686898582.764846][12411:12411] CHIP:DMG: }, - [1686898582.764859][12411:12411] CHIP:DMG: - [1686898582.764868][12411:12411] CHIP:DMG: - - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 3 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898658.627985][12740:12742] CHIP:DMG: ReportDataMessage = - [1686898658.628004][12740:12742] CHIP:DMG: { - [1686898658.628017][12740:12742] CHIP:DMG: AttributeReportIBs = - [1686898658.628042][12740:12742] CHIP:DMG: [ - [1686898658.628051][12740:12742] CHIP:DMG: AttributeReportIB = - [1686898658.628072][12740:12742] CHIP:DMG: { - [1686898658.628082][12740:12742] CHIP:DMG: AttributeDataIB = - [1686898658.628094][12740:12742] CHIP:DMG: { - [1686898658.628107][12740:12742] CHIP:DMG: DataVersion = 0x68385039, - [1686898658.628121][12740:12742] CHIP:DMG: AttributePathIB = - [1686898658.628134][12740:12742] CHIP:DMG: { - [1686898658.628148][12740:12742] CHIP:DMG: Endpoint = 0x0, - [1686898658.628161][12740:12742] CHIP:DMG: Cluster = 0x2c, - [1686898658.628173][12740:12742] CHIP:DMG: Attribute = 0x0000_0001, - [1686898658.628183][12740:12742] CHIP:DMG: } - [1686898658.628198][12740:12742] CHIP:DMG: - [1686898658.628211][12740:12742] CHIP:DMG: Data = 3, - [1686898658.628226][12740:12742] CHIP:DMG: }, - [1686898658.628243][12740:12742] CHIP:DMG: - [1686898658.628252][12740:12742] CHIP:DMG: }, - [1686898658.628266][12740:12742] CHIP:DMG: - [1686898658.628275][12740:12742] CHIP:DMG: ], - [1686898658.628293][12740:12742] CHIP:DMG: - [1686898658.628304][12740:12742] CHIP:DMG: SuppressResponse = true, - [1686898658.628312][12740:12742] CHIP:DMG: InteractionModelRevision = 1 - [1686898658.628319][12740:12742] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 4 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 4 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898760.973271][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898760.973274][12411:12411] CHIP:DMG: { - [1686898760.973277][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898760.973282][12411:12411] CHIP:DMG: timedRequest = false, - [1686898760.973285][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898760.973291][12411:12411] CHIP:DMG: [ - [1686898760.973294][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898760.973299][12411:12411] CHIP:DMG: { - [1686898760.973301][12411:12411] CHIP:DMG: AttributePathIB = - [1686898760.973308][12411:12411] CHIP:DMG: { - [1686898760.973311][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898760.973315][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898760.973317][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898760.973320][12411:12411] CHIP:DMG: } - [1686898760.973326][12411:12411] CHIP:DMG: - [1686898760.973331][12411:12411] CHIP:DMG: Data = 4, - [1686898760.973335][12411:12411] CHIP:DMG: }, - [1686898760.973340][12411:12411] CHIP:DMG: - [1686898760.973342][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 4 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898820.179173][12799:12801] CHIP:DMG: ReportDataMessage = - [1686898820.179178][12799:12801] CHIP:DMG: { - [1686898820.179180][12799:12801] CHIP:DMG: AttributeReportIBs = - [1686898820.179185][12799:12801] CHIP:DMG: [ - [1686898820.179188][12799:12801] CHIP:DMG: AttributeReportIB = - [1686898820.179193][12799:12801] CHIP:DMG: { - [1686898820.179196][12799:12801] CHIP:DMG: AttributeDataIB = - [1686898820.179200][12799:12801] CHIP:DMG: { - [1686898820.179203][12799:12801] CHIP:DMG: DataVersion = 0x6838503a, - [1686898820.179206][12799:12801] CHIP:DMG: AttributePathIB = - [1686898820.179209][12799:12801] CHIP:DMG: { - [1686898820.179213][12799:12801] CHIP:DMG: Endpoint = 0x0, - [1686898820.179217][12799:12801] CHIP:DMG: Cluster = 0x2c, - [1686898820.179220][12799:12801] CHIP:DMG: Attribute = 0x0000_0001, - [1686898820.179223][12799:12801] CHIP:DMG: } - [1686898820.179226][12799:12801] CHIP:DMG: - [1686898820.179231][12799:12801] CHIP:DMG: Data = 4, - [1686898820.179235][12799:12801] CHIP:DMG: }, - [1686898820.179239][12799:12801] CHIP:DMG: - [1686898820.179241][12799:12801] CHIP:DMG: }, - [1686898820.179246][12799:12801] CHIP:DMG: - [1686898820.179248][12799:12801] CHIP:DMG: ], - [1686898820.179253][12799:12801] CHIP:DMG: - [1686898820.179255][12799:12801] CHIP:DMG: SuppressResponse = true, - [1686898820.179258][12799:12801] CHIP:DMG: InteractionModelRevision = 1 - [1686898820.179260][12799:12801] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 5 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 5 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898866.001997][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898866.002000][12411:12411] CHIP:DMG: { - [1686898866.002002][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898866.002004][12411:12411] CHIP:DMG: timedRequest = false, - [1686898866.002007][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898866.002012][12411:12411] CHIP:DMG: [ - [1686898866.002014][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898866.002018][12411:12411] CHIP:DMG: { - [1686898866.002021][12411:12411] CHIP:DMG: AttributePathIB = - [1686898866.002025][12411:12411] CHIP:DMG: { - [1686898866.002029][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898866.002032][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898866.002036][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898866.002039][12411:12411] CHIP:DMG: } - [1686898866.002042][12411:12411] CHIP:DMG: - [1686898866.002046][12411:12411] CHIP:DMG: Data = 5, - [1686898866.002048][12411:12411] CHIP:DMG: }, - [1686898866.002052][12411:12411] CHIP:DMG: - [1686898866.002055][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 5 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898936.936445][12826:12828] CHIP:DMG: ReportDataMessage = - [1686898936.936449][12826:12828] CHIP:DMG: { - [1686898936.936452][12826:12828] CHIP:DMG: AttributeReportIBs = - [1686898936.936458][12826:12828] CHIP:DMG: [ - [1686898936.936461][12826:12828] CHIP:DMG: AttributeReportIB = - [1686898936.936466][12826:12828] CHIP:DMG: { - [1686898936.936468][12826:12828] CHIP:DMG: AttributeDataIB = - [1686898936.936473][12826:12828] CHIP:DMG: { - [1686898936.936478][12826:12828] CHIP:DMG: DataVersion = 0x6838503b, - [1686898936.936482][12826:12828] CHIP:DMG: AttributePathIB = - [1686898936.936487][12826:12828] CHIP:DMG: { - [1686898936.936492][12826:12828] CHIP:DMG: Endpoint = 0x0, - [1686898936.936496][12826:12828] CHIP:DMG: Cluster = 0x2c, - [1686898936.936501][12826:12828] CHIP:DMG: Attribute = 0x0000_0001, - [1686898936.936505][12826:12828] CHIP:DMG: } - [1686898936.936510][12826:12828] CHIP:DMG: - [1686898936.936515][12826:12828] CHIP:DMG: Data = 5, - [1686898936.936518][12826:12828] CHIP:DMG: }, - [1686898936.936524][12826:12828] CHIP:DMG: - [1686898936.936528][12826:12828] CHIP:DMG: }, - [1686898936.936533][12826:12828] CHIP:DMG: - [1686898936.936536][12826:12828] CHIP:DMG: ], - [1686898936.936542][12826:12828] CHIP:DMG: - [1686898936.936546][12826:12828] CHIP:DMG: SuppressResponse = true, - [1686898936.936549][12826:12828] CHIP:DMG: InteractionModelRevision = 1 - [1686898936.936552][12826:12828] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 6 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 6 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686898992.461667][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686898992.461679][12411:12411] CHIP:DMG: { - [1686898992.461690][12411:12411] CHIP:DMG: suppressResponse = false, - [1686898992.461702][12411:12411] CHIP:DMG: timedRequest = false, - [1686898992.461716][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686898992.461733][12411:12411] CHIP:DMG: [ - [1686898992.461742][12411:12411] CHIP:DMG: AttributeDataIB = - [1686898992.461755][12411:12411] CHIP:DMG: { - [1686898992.461765][12411:12411] CHIP:DMG: AttributePathIB = - [1686898992.461778][12411:12411] CHIP:DMG: { - [1686898992.461794][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686898992.461806][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686898992.461825][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686898992.461835][12411:12411] CHIP:DMG: } - [1686898992.461849][12411:12411] CHIP:DMG: - [1686898992.461862][12411:12411] CHIP:DMG: Data = 6, - [1686898992.461872][12411:12411] CHIP:DMG: }, - [1686898992.461887][12411:12411] CHIP:DMG: - [1686898992.461896][12411:12411] CHIP:DMG: ], - - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 6 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899048.031912][12884:12886] CHIP:DMG: ReportDataMessage = - [1686899048.031916][12884:12886] CHIP:DMG: { - [1686899048.031918][12884:12886] CHIP:DMG: AttributeReportIBs = - [1686899048.031924][12884:12886] CHIP:DMG: [ - [1686899048.031927][12884:12886] CHIP:DMG: AttributeReportIB = - [1686899048.031932][12884:12886] CHIP:DMG: { - [1686899048.031934][12884:12886] CHIP:DMG: AttributeDataIB = - [1686899048.031940][12884:12886] CHIP:DMG: { - [1686899048.031943][12884:12886] CHIP:DMG: DataVersion = 0x6838503c, - [1686899048.031946][12884:12886] CHIP:DMG: AttributePathIB = - [1686899048.031950][12884:12886] CHIP:DMG: { - [1686899048.031953][12884:12886] CHIP:DMG: Endpoint = 0x0, - [1686899048.031957][12884:12886] CHIP:DMG: Cluster = 0x2c, - [1686899048.031961][12884:12886] CHIP:DMG: Attribute = 0x0000_0001, - [1686899048.031964][12884:12886] CHIP:DMG: } - [1686899048.031969][12884:12886] CHIP:DMG: - [1686899048.031975][12884:12886] CHIP:DMG: Data = 6, - [1686899048.031979][12884:12886] CHIP:DMG: }, - [1686899048.031983][12884:12886] CHIP:DMG: - [1686899048.031985][12884:12886] CHIP:DMG: }, - [1686899048.031989][12884:12886] CHIP:DMG: - [1686899048.031992][12884:12886] CHIP:DMG: ], - [1686899048.031996][12884:12886] CHIP:DMG: - [1686899048.031999][12884:12886] CHIP:DMG: SuppressResponse = true, - [1686899048.032002][12884:12886] CHIP:DMG: InteractionModelRevision = 1 - [1686899048.032004][12884:12886] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 7 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 7 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899076.211353][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686899076.211357][12411:12411] CHIP:DMG: { - [1686899076.211360][12411:12411] CHIP:DMG: suppressResponse = false, - [1686899076.211364][12411:12411] CHIP:DMG: timedRequest = false, - [1686899076.211368][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686899076.211374][12411:12411] CHIP:DMG: [ - [1686899076.211377][12411:12411] CHIP:DMG: AttributeDataIB = - [1686899076.211382][12411:12411] CHIP:DMG: { - [1686899076.211386][12411:12411] CHIP:DMG: AttributePathIB = - [1686899076.211391][12411:12411] CHIP:DMG: { - [1686899076.211396][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686899076.211400][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686899076.211405][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686899076.211409][12411:12411] CHIP:DMG: } - [1686899076.211417][12411:12411] CHIP:DMG: - [1686899076.211425][12411:12411] CHIP:DMG: Data = 7, - [1686899076.211430][12411:12411] CHIP:DMG: }, - [1686899076.211435][12411:12411] CHIP:DMG: - [1686899076.211438][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 7 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899229.897526][12933:12935] CHIP:DMG: ReportDataMessage = - [1686899229.897531][12933:12935] CHIP:DMG: { - [1686899229.897534][12933:12935] CHIP:DMG: AttributeReportIBs = - [1686899229.897542][12933:12935] CHIP:DMG: [ - [1686899229.897545][12933:12935] CHIP:DMG: AttributeReportIB = - [1686899229.897552][12933:12935] CHIP:DMG: { - [1686899229.897557][12933:12935] CHIP:DMG: AttributeDataIB = - [1686899229.897563][12933:12935] CHIP:DMG: { - [1686899229.897569][12933:12935] CHIP:DMG: DataVersion = 0x6838503e, - [1686899229.897574][12933:12935] CHIP:DMG: AttributePathIB = - [1686899229.897580][12933:12935] CHIP:DMG: { - [1686899229.897585][12933:12935] CHIP:DMG: Endpoint = 0x0, - [1686899229.897590][12933:12935] CHIP:DMG: Cluster = 0x2c, - [1686899229.897596][12933:12935] CHIP:DMG: Attribute = 0x0000_0001, - [1686899229.897600][12933:12935] CHIP:DMG: } - [1686899229.897606][12933:12935] CHIP:DMG: - [1686899229.897611][12933:12935] CHIP:DMG: Data = 7, - [1686899229.897615][12933:12935] CHIP:DMG: }, - [1686899229.897621][12933:12935] CHIP:DMG: - [1686899229.897624][12933:12935] CHIP:DMG: }, - [1686899229.897630][12933:12935] CHIP:DMG: - [1686899229.897634][12933:12935] CHIP:DMG: ], - [1686899229.897640][12933:12935] CHIP:DMG: - [1686899229.897644][12933:12935] CHIP:DMG: SuppressResponse = true, - [1686899229.897648][12933:12935] CHIP:DMG: InteractionModelRevision = 1 - [1686899229.897651][12933:12935] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 8 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 8 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899312.894890][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686899312.894893][12411:12411] CHIP:DMG: { - [1686899312.894896][12411:12411] CHIP:DMG: suppressResponse = false, - [1686899312.894898][12411:12411] CHIP:DMG: timedRequest = false, - [1686899312.894901][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686899312.894905][12411:12411] CHIP:DMG: [ - [1686899312.894908][12411:12411] CHIP:DMG: AttributeDataIB = - [1686899312.894911][12411:12411] CHIP:DMG: { - [1686899312.894914][12411:12411] CHIP:DMG: AttributePathIB = - [1686899312.894918][12411:12411] CHIP:DMG: { - [1686899312.894921][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686899312.894924][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686899312.894927][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686899312.894930][12411:12411] CHIP:DMG: } - [1686899312.894933][12411:12411] CHIP:DMG: - [1686899312.894938][12411:12411] CHIP:DMG: Data = 8, - [1686899312.894940][12411:12411] CHIP:DMG: }, - [1686899312.894944][12411:12411] CHIP:DMG: - [1686899312.894946][12411:12411] CHIP:DMG: ], - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 8 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899353.959365][12994:12996] CHIP:DMG: ReportDataMessage = - [1686899353.959370][12994:12996] CHIP:DMG: { - [1686899353.959374][12994:12996] CHIP:DMG: AttributeReportIBs = - [1686899353.959381][12994:12996] CHIP:DMG: [ - [1686899353.959384][12994:12996] CHIP:DMG: AttributeReportIB = - [1686899353.959391][12994:12996] CHIP:DMG: { - [1686899353.959395][12994:12996] CHIP:DMG: AttributeDataIB = - [1686899353.959400][12994:12996] CHIP:DMG: { - [1686899353.959404][12994:12996] CHIP:DMG: DataVersion = 0x6838503f, - [1686899353.959409][12994:12996] CHIP:DMG: AttributePathIB = - [1686899353.959413][12994:12996] CHIP:DMG: { - [1686899353.959418][12994:12996] CHIP:DMG: Endpoint = 0x0, - [1686899353.959423][12994:12996] CHIP:DMG: Cluster = 0x2c, - [1686899353.959428][12994:12996] CHIP:DMG: Attribute = 0x0000_0001, - [1686899353.959433][12994:12996] CHIP:DMG: } - [1686899353.959438][12994:12996] CHIP:DMG: - [1686899353.959443][12994:12996] CHIP:DMG: Data = 8, - [1686899353.959447][12994:12996] CHIP:DMG: }, - [1686899353.959455][12994:12996] CHIP:DMG: - [1686899353.959459][12994:12996] CHIP:DMG: }, - [1686899353.959465][12994:12996] CHIP:DMG: - [1686899353.959469][12994:12996] CHIP:DMG: ], - [1686899353.959476][12994:12996] CHIP:DMG: - [1686899353.959480][12994:12996] CHIP:DMG: SuppressResponse = true, - [1686899353.959484][12994:12996] CHIP:DMG: InteractionModelRevision = 1 - [1686899353.959488][12994:12996] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 9 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 9 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899403.683238][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686899403.683243][12411:12411] CHIP:DMG: { - [1686899403.683246][12411:12411] CHIP:DMG: suppressResponse = false, - [1686899403.683250][12411:12411] CHIP:DMG: timedRequest = false, - [1686899403.683254][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686899403.683258][12411:12411] CHIP:DMG: [ - [1686899403.683261][12411:12411] CHIP:DMG: AttributeDataIB = - [1686899403.683265][12411:12411] CHIP:DMG: { - [1686899403.683267][12411:12411] CHIP:DMG: AttributePathIB = - [1686899403.683271][12411:12411] CHIP:DMG: { - [1686899403.683274][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686899403.683277][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686899403.683281][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686899403.683283][12411:12411] CHIP:DMG: } - [1686899403.683287][12411:12411] CHIP:DMG: - [1686899403.683290][12411:12411] CHIP:DMG: Data = 9, - [1686899403.683293][12411:12411] CHIP:DMG: }, - [1686899403.683298][12411:12411] CHIP:DMG: - [1686899403.683300][12411:12411] CHIP:DMG: ], - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 9 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899465.353959][13019:13021] CHIP:DMG: ReportDataMessage = - [1686899465.353962][13019:13021] CHIP:DMG: { - [1686899465.353964][13019:13021] CHIP:DMG: AttributeReportIBs = - [1686899465.353970][13019:13021] CHIP:DMG: [ - [1686899465.353972][13019:13021] CHIP:DMG: AttributeReportIB = - [1686899465.353978][13019:13021] CHIP:DMG: { - [1686899465.353982][13019:13021] CHIP:DMG: AttributeDataIB = - [1686899465.353987][13019:13021] CHIP:DMG: { - [1686899465.353992][13019:13021] CHIP:DMG: DataVersion = 0x68385040, - [1686899465.353997][13019:13021] CHIP:DMG: AttributePathIB = - [1686899465.354001][13019:13021] CHIP:DMG: { - [1686899465.354006][13019:13021] CHIP:DMG: Endpoint = 0x0, - [1686899465.354011][13019:13021] CHIP:DMG: Cluster = 0x2c, - [1686899465.354014][13019:13021] CHIP:DMG: Attribute = 0x0000_0001, - [1686899465.354019][13019:13021] CHIP:DMG: } - [1686899465.354024][13019:13021] CHIP:DMG: - [1686899465.354030][13019:13021] CHIP:DMG: Data = 9, - [1686899465.354034][13019:13021] CHIP:DMG: }, - [1686899465.354039][13019:13021] CHIP:DMG: - [1686899465.354043][13019:13021] CHIP:DMG: }, - [1686899465.354049][13019:13021] CHIP:DMG: - [1686899465.354053][13019:13021] CHIP:DMG: ], - [1686899465.354059][13019:13021] CHIP:DMG: - [1686899465.354063][13019:13021] CHIP:DMG: SuppressResponse = true, - [1686899465.354066][13019:13021] CHIP:DMG: InteractionModelRevision = 1 - [1686899465.354069][13019:13021] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 10 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 10 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899526.841349][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686899526.841354][12411:12411] CHIP:DMG: { - [1686899526.841357][12411:12411] CHIP:DMG: suppressResponse = false, - [1686899526.841361][12411:12411] CHIP:DMG: timedRequest = false, - [1686899526.841364][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686899526.841370][12411:12411] CHIP:DMG: [ - [1686899526.841374][12411:12411] CHIP:DMG: AttributeDataIB = - [1686899526.841379][12411:12411] CHIP:DMG: { - [1686899526.841382][12411:12411] CHIP:DMG: AttributePathIB = - [1686899526.841387][12411:12411] CHIP:DMG: { - [1686899526.841392][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686899526.841396][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686899526.841401][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686899526.841405][12411:12411] CHIP:DMG: } - [1686899526.841410][12411:12411] CHIP:DMG: - [1686899526.841415][12411:12411] CHIP:DMG: Data = 10, - [1686899526.841419][12411:12411] CHIP:DMG: }, - [1686899526.841425][12411:12411] CHIP:DMG: - [1686899526.841429][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 10 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899615.016743][13059:13061] CHIP:DMG: ReportDataMessage = - [1686899615.016748][13059:13061] CHIP:DMG: { - [1686899615.016751][13059:13061] CHIP:DMG: AttributeReportIBs = - [1686899615.016759][13059:13061] CHIP:DMG: [ - [1686899615.016762][13059:13061] CHIP:DMG: AttributeReportIB = - [1686899615.016769][13059:13061] CHIP:DMG: { - [1686899615.016773][13059:13061] CHIP:DMG: AttributeDataIB = - [1686899615.016777][13059:13061] CHIP:DMG: { - [1686899615.016781][13059:13061] CHIP:DMG: DataVersion = 0x68385041, - [1686899615.016786][13059:13061] CHIP:DMG: AttributePathIB = - [1686899615.016791][13059:13061] CHIP:DMG: { - [1686899615.016796][13059:13061] CHIP:DMG: Endpoint = 0x0, - [1686899615.016801][13059:13061] CHIP:DMG: Cluster = 0x2c, - [1686899615.016806][13059:13061] CHIP:DMG: Attribute = 0x0000_0001, - [1686899615.016810][13059:13061] CHIP:DMG: } - [1686899615.016816][13059:13061] CHIP:DMG: - [1686899615.016821][13059:13061] CHIP:DMG: Data = 10, - [1686899615.016824][13059:13061] CHIP:DMG: }, - [1686899615.016830][13059:13061] CHIP:DMG: - [1686899615.016833][13059:13061] CHIP:DMG: }, - [1686899615.016839][13059:13061] CHIP:DMG: - [1686899615.016842][13059:13061] CHIP:DMG: ], - [1686899615.016848][13059:13061] CHIP:DMG: - [1686899615.016852][13059:13061] CHIP:DMG: SuppressResponse = true, - [1686899615.016856][13059:13061] CHIP:DMG: InteractionModelRevision = 1 - [1686899615.016859][13059:13061] CHIP:DMG: } - - ./chip-tool timeformatlocalization write active-calendar-type 11 1 0 - - Verify TH receives the ActiveCalendarType attribute write command and updates the value to 11 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899658.971405][12411:12411] CHIP:DMG: WriteRequestMessage = - [1686899658.971421][12411:12411] CHIP:DMG: { - [1686899658.971437][12411:12411] CHIP:DMG: suppressResponse = false, - [1686899658.971450][12411:12411] CHIP:DMG: timedRequest = false, - [1686899658.971459][12411:12411] CHIP:DMG: AttributeDataIBs = - [1686899658.971477][12411:12411] CHIP:DMG: [ - [1686899658.971493][12411:12411] CHIP:DMG: AttributeDataIB = - [1686899658.971510][12411:12411] CHIP:DMG: { - [1686899658.971520][12411:12411] CHIP:DMG: AttributePathIB = - [1686899658.971534][12411:12411] CHIP:DMG: { - [1686899658.971547][12411:12411] CHIP:DMG: Endpoint = 0x0, - [1686899658.971560][12411:12411] CHIP:DMG: Cluster = 0x2c, - [1686899658.971575][12411:12411] CHIP:DMG: Attribute = 0x0000_0001, - [1686899658.971586][12411:12411] CHIP:DMG: } - [1686899658.971600][12411:12411] CHIP:DMG: - [1686899658.971613][12411:12411] CHIP:DMG: Data = 11, - [1686899658.971624][12411:12411] CHIP:DMG: }, - [1686899658.971637][12411:12411] CHIP:DMG: - [1686899658.971646][12411:12411] CHIP:DMG: ], - - - ./chip-tool timeformatlocalization read active-calendar-type 1 0 - - Verify ActiveCalendarType attribute value is 11 on the TH(all-clusters-app) Log and and below is the sample log provided for raspi platform: - - [1686899707.460046][13108:13110] CHIP:DMG: ReportDataMessage = - [1686899707.460059][13108:13110] CHIP:DMG: { - [1686899707.460066][13108:13110] CHIP:DMG: AttributeReportIBs = - [1686899707.460087][13108:13110] CHIP:DMG: [ - [1686899707.460097][13108:13110] CHIP:DMG: AttributeReportIB = - [1686899707.460116][13108:13110] CHIP:DMG: { - [1686899707.460132][13108:13110] CHIP:DMG: AttributeDataIB = - [1686899707.460148][13108:13110] CHIP:DMG: { - [1686899707.460168][13108:13110] CHIP:DMG: DataVersion = 0x68385042, - [1686899707.460183][13108:13110] CHIP:DMG: AttributePathIB = - [1686899707.460202][13108:13110] CHIP:DMG: { - [1686899707.460221][13108:13110] CHIP:DMG: Endpoint = 0x0, - [1686899707.460239][13108:13110] CHIP:DMG: Cluster = 0x2c, - [1686899707.460259][13108:13110] CHIP:DMG: Attribute = 0x0000_0001, - [1686899707.460276][13108:13110] CHIP:DMG: } - [1686899707.460297][13108:13110] CHIP:DMG: - [1686899707.460318][13108:13110] CHIP:DMG: Data = 11, - [1686899707.460333][13108:13110] CHIP:DMG: }, - [1686899707.460352][13108:13110] CHIP:DMG: - [1686899707.460368][13108:13110] CHIP:DMG: }, - [1686899707.460391][13108:13110] CHIP:DMG: - [1686899707.460405][13108:13110] CHIP:DMG: ], - [1686899707.460434][13108:13110] CHIP:DMG: - [1686899707.460450][13108:13110] CHIP:DMG: SuppressResponse = true, - [1686899707.460467][13108:13110] CHIP:DMG: InteractionModelRevision = 1 - [1686899707.460480][13108:13110] CHIP:DMG: } - 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 deleted file mode 100644 index ee5159751bbf42..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LUNIT_1_1_Simulated.yaml +++ /dev/null @@ -1,54 +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: 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_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml deleted file mode 100644 index 9030404b43cc1c..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LUNIT_2_1_Simulated.yaml +++ /dev/null @@ -1,48 +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: - 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 2 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_LVL_8_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml deleted file mode 100644 index 7691c62dc07f7d..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml +++ /dev/null @@ -1,314 +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: 22.6.3. [TC-LVL-8.1] Verification of commands (DUT as Client) - -PICS: - - LVL.C - -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: - "Step 1: TH prompts the operator to make the DUT send one or more - supported commands from the Level Control cluster" - 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 levelcontrol move-to-level 125 10 0 0 1 1 - Verify DUT receives move-to-level command response on the TH(all-clusters-app) Log: - [1657915209.151256][3245:3245] CHIP:DMG: InvokeRequestMessage = - [1657915209.151306][3245:3245] CHIP:DMG: { - [1657915209.151348][3245:3245] CHIP:DMG: suppressResponse = false, - [1657915209.151397][3245:3245] CHIP:DMG: timedRequest = false, - [1657915209.151441][3245:3245] CHIP:DMG: InvokeRequests = - [1657915209.151498][3245:3245] CHIP:DMG: [ - [1657915209.151543][3245:3245] CHIP:DMG: CommandDataIB = - [1657915209.151594][3245:3245] CHIP:DMG: { - [1657915209.151642][3245:3245] CHIP:DMG: CommandPathIB = - [1657915209.151699][3245:3245] CHIP:DMG: { - [1657915209.151752][3245:3245] CHIP:DMG: EndpointId = 0x1, - [1657915209.151814][3245:3245] CHIP:DMG: ClusterId = 0x8, - [1657915209.151874][3245:3245] CHIP:DMG: CommandId = 0x0, - [1657915209.151929][3245:3245] CHIP:DMG: }, - [1657915209.151993][3245:3245] CHIP:DMG: - [1657915209.152041][3245:3245] CHIP:DMG: CommandFields = - [1657915209.152128][3245:3245] CHIP:DMG: { - [1657915209.152190][3245:3245] CHIP:DMG: 0x0 = 125, - [1657915209.152251][3245:3245] CHIP:DMG: 0x1 = 10, - [1657915209.152311][3245:3245] CHIP:DMG: 0x2 = 0, - [1657915209.152370][3245:3245] CHIP:DMG: 0x3 = 0, - [1657915209.152424][3245:3245] CHIP:DMG: }, - [1657915209.152474][3245:3245] CHIP:DMG: }, - [1657915209.152530][3245:3245] CHIP:DMG: - [1657915209.152574][3245:3245] CHIP:DMG: ], - [1657915209.152630][3245:3245] CHIP:DMG: - [1657915209.152674][3245:3245] CHIP:DMG: InteractionModelRevision = 1 - [1657915209.152717][3245:3245] CHIP:DMG: }, - - - ./chip-tool levelcontrol move 1 5 0 0 1 1 - Verify DUT receives move command response on the TH(all-clusters-app) Log: - [1657915236.437571][3245:3245] CHIP:DMG: InvokeRequestMessage = - [1657915236.437601][3245:3245] CHIP:DMG: { - [1657915236.437624][3245:3245] CHIP:DMG: suppressResponse = false, - [1657915236.437658][3245:3245] CHIP:DMG: timedRequest = false, - [1657915236.437684][3245:3245] CHIP:DMG: InvokeRequests = - [1657915236.437719][3245:3245] CHIP:DMG: [ - [1657915236.437747][3245:3245] CHIP:DMG: CommandDataIB = - [1657915236.437779][3245:3245] CHIP:DMG: { - [1657915236.437809][3245:3245] CHIP:DMG: CommandPathIB = - [1657915236.437842][3245:3245] CHIP:DMG: { - [1657915236.437876][3245:3245] CHIP:DMG: EndpointId = 0x1, - [1657915236.437909][3245:3245] CHIP:DMG: ClusterId = 0x8, - [1657915236.437942][3245:3245] CHIP:DMG: CommandId = 0x1, - [1657915236.437972][3245:3245] CHIP:DMG: }, - [1657915236.438005][3245:3245] CHIP:DMG: - [1657915236.438035][3245:3245] CHIP:DMG: CommandFields = - [1657915236.438066][3245:3245] CHIP:DMG: { - [1657915236.438099][3245:3245] CHIP:DMG: 0x0 = 1, - [1657915236.438133][3245:3245] CHIP:DMG: 0x1 = 5, - [1657915236.438167][3245:3245] CHIP:DMG: 0x2 = 0, - [1657915236.438199][3245:3245] CHIP:DMG: 0x3 = 0, - [1657915236.438232][3245:3245] CHIP:DMG: }, - [1657915236.438261][3245:3245] CHIP:DMG: }, - [1657915236.438295][3245:3245] CHIP:DMG: - [1657915236.438321][3245:3245] CHIP:DMG: ], - [1657915236.438352][3245:3245] CHIP:DMG: - [1657915236.438376][3245:3245] CHIP:DMG: InteractionModelRevision = 1 - [1657915236.438402][3245:3245] CHIP:DMG: }, - - - ./chip-tool levelcontrol step 1 10 0 0 0 1 1 - Verify DUT receives step command response on the TH(all-clusters-app) Log: - [1659607055.170850][3434:3434] CHIP:DMG: InvokeRequestMessage = - [1659607055.170877][3434:3434] CHIP:DMG: { - [1659607055.170900][3434:3434] CHIP:DMG: suppressResponse = false, - [1659607055.170927][3434:3434] CHIP:DMG: timedRequest = false, - [1659607055.170952][3434:3434] CHIP:DMG: InvokeRequests = - [1659607055.170983][3434:3434] CHIP:DMG: [ - [1659607055.171008][3434:3434] CHIP:DMG: CommandDataIB = - [1659607055.171035][3434:3434] CHIP:DMG: { - [1659607055.171061][3434:3434] CHIP:DMG: CommandPathIB = - [1659607055.171093][3434:3434] CHIP:DMG: { - [1659607055.171124][3434:3434] CHIP:DMG: EndpointId = 0x1, - [1659607055.171160][3434:3434] CHIP:DMG: ClusterId = 0x8, - [1659607055.171193][3434:3434] CHIP:DMG: CommandId = 0x2, - [1659607055.171219][3434:3434] CHIP:DMG: }, - [1659607055.171251][3434:3434] CHIP:DMG: - [1659607055.171277][3434:3434] CHIP:DMG: CommandFields = - [1659607055.171307][3434:3434] CHIP:DMG: { - [1659607055.171340][3434:3434] CHIP:DMG: 0x0 = 1, - [1659607055.171373][3434:3434] CHIP:DMG: 0x1 = 10, - [1659607055.171409][3434:3434] CHIP:DMG: 0x2 = 0, - [1659607055.171439][3434:3434] CHIP:DMG: 0x3 = 0, - [1659607055.171474][3434:3434] CHIP:DMG: 0x4 = 0, - [1659607055.171504][3434:3434] CHIP:DMG: }, - [1659607055.171532][3434:3434] CHIP:DMG: }, - [1659607055.171563][3434:3434] CHIP:DMG: - [1659607055.171586][3434:3434] CHIP:DMG: ], - [1659607055.171617][3434:3434] CHIP:DMG: - [1659607055.171641][3434:3434] CHIP:DMG: InteractionModelRevision = 1 - [1659607055.171665][3434:3434] CHIP:DMG: }, - [1659607055.171731][3434:3434] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0008 e=1 p=o - - - - ./chip-tool levelcontrol stop 0 0 1 1 - Verify DUT receives stop command response on the TH(all-clusters-app) Log: - [1657915273.417099][3245:3245] CHIP:DMG: InvokeRequestMessage = - [1657915273.417157][3245:3245] CHIP:DMG: { - [1657915273.417205][3245:3245] CHIP:DMG: suppressResponse = false, - [1657915273.417260][3245:3245] CHIP:DMG: timedRequest = false, - [1657915273.417311][3245:3245] CHIP:DMG: InvokeRequests = - [1657915273.417376][3245:3245] CHIP:DMG: [ - [1657915273.417428][3245:3245] CHIP:DMG: CommandDataIB = - [1657915273.417484][3245:3245] CHIP:DMG: { - [1657915273.417545][3245:3245] CHIP:DMG: CommandPathIB = - [1657915273.417605][3245:3245] CHIP:DMG: { - [1657915273.417669][3245:3245] CHIP:DMG: EndpointId = 0x1, - [1657915273.417739][3245:3245] CHIP:DMG: ClusterId = 0x8, - [1657915273.417806][3245:3245] CHIP:DMG: CommandId = 0x3, - [1657915273.417871][3245:3245] CHIP:DMG: }, - [1657915273.417934][3245:3245] CHIP:DMG: - [1657915273.417988][3245:3245] CHIP:DMG: CommandFields = - [1657915273.418051][3245:3245] CHIP:DMG: { - [1657915273.418117][3245:3245] CHIP:DMG: 0x0 = 0, - [1657915273.418185][3245:3245] CHIP:DMG: 0x1 = 0, - [1657915273.418246][3245:3245] CHIP:DMG: }, - [1657915273.418298][3245:3245] CHIP:DMG: }, - [1657915273.418327][3245:3245] CHIP:DMG: - [1657915273.418350][3245:3245] CHIP:DMG: ], - [1657915273.418380][3245:3245] CHIP:DMG: - [1657915273.418458][3245:3245] CHIP:DMG: InteractionModelRevision = 1 - [1657915273.418483][3245:3245] CHIP:DMG: }, - - - ./chip-tool levelcontrol move-to-level-with-on-off 1 0 0 0 1 1 - Verify DUT receives move-to-level-with-on-off command response on the TH(all-clusters-app) Log: - [1659607213.257973][3434:3434] CHIP:DMG: InvokeRequestMessage = - [1659607213.258015][3434:3434] CHIP:DMG: { - [1659607213.258039][3434:3434] CHIP:DMG: suppressResponse = false, - [1659607213.258066][3434:3434] CHIP:DMG: timedRequest = false, - [1659607213.258090][3434:3434] CHIP:DMG: InvokeRequests = - [1659607213.258132][3434:3434] CHIP:DMG: [ - [1659607213.258158][3434:3434] CHIP:DMG: CommandDataIB = - [1659607213.258219][3434:3434] CHIP:DMG: { - [1659607213.258254][3434:3434] CHIP:DMG: CommandPathIB = - [1659607213.258300][3434:3434] CHIP:DMG: { - [1659607213.258339][3434:3434] CHIP:DMG: EndpointId = 0x1, - [1659607213.258387][3434:3434] CHIP:DMG: ClusterId = 0x8, - [1659607213.258432][3434:3434] CHIP:DMG: CommandId = 0x4, - [1659607213.258467][3434:3434] CHIP:DMG: }, - [1659607213.258512][3434:3434] CHIP:DMG: - [1659607213.258550][3434:3434] CHIP:DMG: CommandFields = - [1659607213.258587][3434:3434] CHIP:DMG: { - [1659607213.258629][3434:3434] CHIP:DMG: 0x0 = 1, - [1659607213.258677][3434:3434] CHIP:DMG: 0x1 = 0, - [1659607213.258715][3434:3434] CHIP:DMG: 0x2 = 0, - [1659607213.258761][3434:3434] CHIP:DMG: 0x3 = 0, - [1659607213.258801][3434:3434] CHIP:DMG: }, - [1659607213.258834][3434:3434] CHIP:DMG: }, - [1659607213.258876][3434:3434] CHIP:DMG: - [1659607213.258909][3434:3434] CHIP:DMG: ], - [1659607213.258942][3434:3434] CHIP:DMG: - [1659607213.258974][3434:3434] CHIP:DMG: InteractionModelRevision = 1 - [1659607213.258999][3434:3434] CHIP:DMG: }, - [1659607213.259078][3434:3434] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0008 e=1 p=o - [1659607213.259117][3434:3434] CHIP:DMG: AccessControl: allowed - [1659607213.259146][3434:3434] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0008 Command=0x0000_0004 - [1659607213.259181][3434:3434] CHIP:ZCL: 0xaaaad3c4a860MOVE_TO_LEVEL_WITH_ON_OFF 1 0 - [1659607213.259217][3434:3434] CHIP:ZCL: Setting on/off to 0xaaaad3c4a800 due to level change - - - - ./chip-tool levelcontrol move-with-on-off 1 5 0 0 1 1 - Verify DUT receives move-with-on-off command response on the TH(all-clusters-app) Log: - [1659607307.208156][3434:3434] CHIP:DMG: InvokeRequestMessage = - [1659607307.208184][3434:3434] CHIP:DMG: { - [1659607307.208208][3434:3434] CHIP:DMG: suppressResponse = false, - [1659607307.208234][3434:3434] CHIP:DMG: timedRequest = false, - [1659607307.208258][3434:3434] CHIP:DMG: InvokeRequests = - [1659607307.208290][3434:3434] CHIP:DMG: [ - [1659607307.208315][3434:3434] CHIP:DMG: CommandDataIB = - [1659607307.208343][3434:3434] CHIP:DMG: { - [1659607307.208368][3434:3434] CHIP:DMG: CommandPathIB = - [1659607307.208420][3434:3434] CHIP:DMG: { - [1659607307.208457][3434:3434] CHIP:DMG: EndpointId = 0x1, - [1659607307.208496][3434:3434] CHIP:DMG: ClusterId = 0x8, - [1659607307.208533][3434:3434] CHIP:DMG: CommandId = 0x5, - [1659607307.208568][3434:3434] CHIP:DMG: }, - [1659607307.208601][3434:3434] CHIP:DMG: - [1659607307.208628][3434:3434] CHIP:DMG: CommandFields = - [1659607307.208659][3434:3434] CHIP:DMG: { - [1659607307.208694][3434:3434] CHIP:DMG: 0x0 = 1, - [1659607307.208731][3434:3434] CHIP:DMG: 0x1 = 5, - [1659607307.208769][3434:3434] CHIP:DMG: 0x2 = 0, - [1659607307.208806][3434:3434] CHIP:DMG: 0x3 = 0, - [1659607307.208842][3434:3434] CHIP:DMG: }, - [1659607307.208871][3434:3434] CHIP:DMG: }, - [1659607307.208902][3434:3434] CHIP:DMG: - [1659607307.208926][3434:3434] CHIP:DMG: ], - [1659607307.208956][3434:3434] CHIP:DMG: - [1659607307.208980][3434:3434] CHIP:DMG: InteractionModelRevision = 1 - [1659607307.209004][3434:3434] CHIP:DMG: }, - [1659607307.209073][3434:3434] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0008 e=1 p=o - [1659607307.209111][3434:3434] CHIP:DMG: AccessControl: allowed - [1659607307.209139][3434:3434] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0008 Command=0x0000_0005 - [1659607307.209176][3434:3434] CHIP:ZCL: 0xaaaad3c4a860MOVE_WITH_ON_OFF 1 5 - - - - ./chip-tool levelcontrol step-with-on-off 1 15 123 0 0 1 1 - Verify DUT receives step-with-on-off command response on the TH(all-clusters-app) Log: - [1659607424.990107][3434:3434] CHIP:DMG: InvokeRequestMessage = - [1659607424.990142][3434:3434] CHIP:DMG: { - [1659607424.990173][3434:3434] CHIP:DMG: suppressResponse = false, - [1659607424.990235][3434:3434] CHIP:DMG: timedRequest = false, - [1659607424.990282][3434:3434] CHIP:DMG: InvokeRequests = - [1659607424.990326][3434:3434] CHIP:DMG: [ - [1659607424.990360][3434:3434] CHIP:DMG: CommandDataIB = - [1659607424.990397][3434:3434] CHIP:DMG: { - [1659607424.990431][3434:3434] CHIP:DMG: CommandPathIB = - [1659607424.990470][3434:3434] CHIP:DMG: { - [1659607424.990512][3434:3434] CHIP:DMG: EndpointId = 0x1, - [1659607424.990557][3434:3434] CHIP:DMG: ClusterId = 0x8, - [1659607424.990602][3434:3434] CHIP:DMG: CommandId = 0x6, - [1659607424.990648][3434:3434] CHIP:DMG: }, - [1659607424.990692][3434:3434] CHIP:DMG: - [1659607424.990727][3434:3434] CHIP:DMG: CommandFields = - [1659607424.990773][3434:3434] CHIP:DMG: { - [1659607424.990816][3434:3434] CHIP:DMG: 0x0 = 1, - [1659607424.990862][3434:3434] CHIP:DMG: 0x1 = 15, - [1659607424.990910][3434:3434] CHIP:DMG: 0x2 = 123, - [1659607424.990951][3434:3434] CHIP:DMG: 0x3 = 0, - [1659607424.990996][3434:3434] CHIP:DMG: 0x4 = 0, - [1659607424.991035][3434:3434] CHIP:DMG: }, - [1659607424.991073][3434:3434] CHIP:DMG: }, - [1659607424.991118][3434:3434] CHIP:DMG: - [1659607424.991150][3434:3434] CHIP:DMG: ], - [1659607424.991192][3434:3434] CHIP:DMG: - [1659607424.991225][3434:3434] CHIP:DMG: InteractionModelRevision = 1 - [1659607424.991260][3434:3434] CHIP:DMG: }, - [1659607424.991350][3434:3434] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0008 e=1 p=o - [1659607424.991400][3434:3434] CHIP:DMG: AccessControl: allowed - [1659607424.991438][3434:3434] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0008 Command=0x0000_0006 - [1659607424.991490][3434:3434] CHIP:ZCL: 0xaaaad3c4a860STEP_WITH_ON_OFF 1 f 7b - - - ./chip-tool levelcontrol stop-with-on-off 0 0 1 1 - Verify DUT receives stop-with-on-off command response on the TH(all-clusters-app) Log: - Verify in TH all-clusters-app[1659607566.304117][3434:3434] CHIP:DMG: InvokeRequestMessage = - [1659607566.304146][3434:3434] CHIP:DMG: { - [1659607566.304169][3434:3434] CHIP:DMG: suppressResponse = false, - [1659607566.304196][3434:3434] CHIP:DMG: timedRequest = false, - [1659607566.304220][3434:3434] CHIP:DMG: InvokeRequests = - [1659607566.304252][3434:3434] CHIP:DMG: [ - [1659607566.304276][3434:3434] CHIP:DMG: CommandDataIB = - [1659607566.304303][3434:3434] CHIP:DMG: { - [1659607566.304328][3434:3434] CHIP:DMG: CommandPathIB = - [1659607566.304363][3434:3434] CHIP:DMG: { - [1659607566.304396][3434:3434] CHIP:DMG: EndpointId = 0x1, - [1659607566.304434][3434:3434] CHIP:DMG: ClusterId = 0x8, - [1659607566.304471][3434:3434] CHIP:DMG: CommandId = 0x7, - [1659607566.304506][3434:3434] CHIP:DMG: }, - [1659607566.304539][3434:3434] CHIP:DMG: - [1659607566.304565][3434:3434] CHIP:DMG: CommandFields = - [1659607566.304596][3434:3434] CHIP:DMG: { - [1659607566.304629][3434:3434] CHIP:DMG: 0x0 = 0, - [1659607566.304667][3434:3434] CHIP:DMG: 0x1 = 0, - [1659607566.304703][3434:3434] CHIP:DMG: }, - [1659607566.304733][3434:3434] CHIP:DMG: }, - [1659607566.304762][3434:3434] CHIP:DMG: - [1659607566.304786][3434:3434] CHIP:DMG: ], - [1659607566.304817][3434:3434] CHIP:DMG: - [1659607566.304841][3434:3434] CHIP:DMG: InteractionModelRevision = 1 - [1659607566.304865][3434:3434] CHIP:DMG: }, - [1659607566.304932][3434:3434] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0008 e=1 p=o - [1659607566.304970][3434:3434] CHIP:DMG: AccessControl: allowed - [1659607566.304999][3434:3434] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0008 Command=0x0000_0007 - [1659607566.305032][3434:3434] CHIP:ZCL: 0xaaaad3c4a860STOP_WITH_ON_OFF - [1659607566.305069][3434:3434] CHIP:DMG: Endpoint 1, Cluster 0x0000_0008 update version to 671abea5 - [1659607566.305110][3434:3434] CHIP:DMG: ICR moving to [ Preparing] - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LWM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LWM_1_1.yaml index 8d8d34d82f591b..e68e3f8ad88709 100644 --- a/src/app/tests/suites/certification/Test_TC_LWM_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LWM_1_1.yaml @@ -33,65 +33,75 @@ tests: - label: "Step 2: TH reads from the DUT the ClusterRevision attribute." verification: | - Verify that the DUT response contains the ClusterRevision attribute and has the value 1. + ./chip-tool laundrywashermode read cluster-revision 1 1 + + Verify the "ClusterRevision" value is of unit16 and reflects the highest revision number 1 on the TH(Chip-tool) and below is the sample log provided for the raspi platform: + + [1690184527.689706][15400:15402] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_FFFD DataVersion: 3075628268 + [1690184527.689762][15400:15402] CHIP:TOO: ClusterRevision: 1 disabled: true - label: "Step 3: TH reads from the DUT the FeatureMap attribute." verification: | - Verify that the DUT response contains the FeatureMap attribute and have the following bit set: + ./chip-tool laundrywashermode read feature-map 1 1 - bit 0: SHALL be 1 if and only if LWM.S.F00(DEPONOFF) + On the TH(Chip-tool) Log, Verify featureMap value is 1 If TCCM.S.F00(DEPONOFF) true, Otherwise 0, and below is the sample log provided for the raspi platform: + + [1690184539.350009][15403:15405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_FFFC DataVersion: 3075628268 + [1690184539.350062][15403:15405] CHIP:TOO: FeatureMap: 1 disabled: true - label: "Step 4: TH reads from the DUT the AttributeList attribute." verification: | - Verify that the DUT response contains the AttributeList attribute and have the list of supported attributes: - - The list SHALL include all the mandatory entries: - 0x0000, 0x0001, 0xfff8, 0xfff9, 0xfffa, 0xfffb, 0xfffc & 0xfffd. - - The list MAY include these optional entries: - - 0x0002: SHALL be included if and only if LWM.S.A0002(StartUpMode) - - The list include entries based on feature support: - - - 0x0003 SHALL be included if and only if LWM.S.F00(DEPONOFF) - - - and SHALL NOT be included otherwise. - - The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - 0x0000_4FFF) and (0x0000_F000 - 0x0000_FFFE) - + ./chip-tool laundrywashermode read attribute-list 1 1 + + Verify the "AttributeList " should include the mandatory attributes (values 0, 1), + - global attributes (value 65533, 65532, 65531, 65530, 65529 and 65528) and + - list may include optional attribute(value 0x0002), if MOD.S.A0004(StartUpMode) supports, + - list contains feature dependent attribute (values 0x0003), if MOD.S.F00(DEPONOFF) is true on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1690184549.210762][15408:15410] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_FFFB DataVersion: 3075628268 + [1690184549.210786][15408:15410] CHIP:TOO: AttributeList: 10 entries + [1690184549.210792][15408:15410] CHIP:TOO: [1]: 0 + [1690184549.210797][15408:15410] CHIP:TOO: [2]: 1 + [1690184549.210802][15408:15410] CHIP:TOO: [3]: 2 + [1690184549.210806][15408:15410] CHIP:TOO: [4]: 3 + [1690184549.210810][15408:15410] CHIP:TOO: [5]: 65528 + [1690184549.210815][15408:15410] CHIP:TOO: [6]: 65529 + [1690184549.210819][15408:15410] CHIP:TOO: [7]: 65530 + [1690184549.210823][15408:15410] CHIP:TOO: [8]: 65531 + [1690184549.210827][15408:15410] CHIP:TOO: [9]: 65532 + [1690184549.210831][15408:15410] CHIP:TOO: [10]: 65533 + disabled: true - The list MAY contain values in the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_4FFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. + - label: "Step 5: TH reads from the DUT the EventList attribute." + verification: | + ./chip-tool laundrywashermode read event-list 1 1 + Verify "EventList" contains a list of supported events, for this cluster the list is emty(0 entries) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - The list SHALL NOT contain any values in the Test Vendor or invalid range: (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1) + [1690184560.096147][15413:15415] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_FFFA DataVersion: 3075628268 + [1690184560.096165][15413:15415] CHIP:TOO: EventList: 0 entries disabled: true - - label: "Step 5: TH reads from the DUT the AcceptedCommandList attribute." + - label: "Step 6: TH reads from the DUT the AcceptedCommandList attribute." verification: | - Verify that the DUT response contains the AcceptedCommandList attribute and have the list of Accepted Command: - The list SHALL include all the mandatory entries: + ./chip-tool laundrywashermode read accepted-command-list 1 1 - 0x00 - The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - 0x0000_00FF) + Verify the "AcceptedCommandList" contains a list of mandatory commands (value 0) on the TH (Chip-tool) and below is the sample log provided for the raspi platform: - The list MAY contain values in the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. - - The list SHALL NOT contain any values in the Test Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1) + [1690184572.184880][15416:15418] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_FFF9 DataVersion: 3075628268 + [1690184572.184896][15416:15418] CHIP:TOO: AcceptedCommandList: 1 entries + [1690184572.184901][15416:15418] CHIP:TOO: [1]: 0 disabled: true - - label: "Step 6: TH reads from the DUT the GeneratedCommandList attribute." + - label: "Step 7: TH reads from the DUT the GeneratedCommandList attribute." verification: | - Verify that the DUT response contains the GeneratedCommandList attribute and have the list of Generated Command: - The list SHALL include all the mandatory entries: - - 0x01 - The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - 0x0000_00FF) + ./chip-tool laundrywashermode read generated-command-list 1 1 - The list MAY contain values in the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. + Verify " GeneratedCommandList" contains a list of mandatory commands (value 1) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - The list SHALL NOT contain any values in the Test Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1) + [1690184586.309954][15419:15421] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_FFF8 DataVersion: 3075628268 + [1690184586.310020][15419:15421] CHIP:TOO: GeneratedCommandList: 1 entries + [1690184586.310043][15419:15421] CHIP:TOO: [1]: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LWM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_LWM_1_2.yaml index 411340898b769b..d5ccf5a9d956ca 100644 --- a/src/app/tests/suites/certification/Test_TC_LWM_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_LWM_1_2.yaml @@ -34,42 +34,90 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: LWM.S.A0000 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has at least one entry - - Verify that each ModeOptionsStruct entry has a unique Mode field value - - Verify that each ModeOptionsStruct entry has a unique Label field value - - Verify that each ModeOptionsStruct entry’s ModeTags field, if not empty, has: - the values of the Value fields that are not larger than 16 bits - - for each Value field: Is the mode tag value a defined common tag value ( Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster derived tag value ( Normal, Heavy, {T_LIGHT}) or in the MfgTags (0x8000 to 0xBFFF) range - - if the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 - - - - Verify that at least one ModeOptionsStruct entry includes the Normal mode tag - - Save the Mode field values as supported_modes_dut + ./chip-tool laundrywashermode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries. + - Verify that list should contain at least one entry + - Verify that each ModeOptionsStruct entry has a unique Mode field value and Label field value + - ModeOptionsStruct entry’s ModeTags field is not empty, then Verify the values of the Value fields that are not larger than 16 bits, for each Value field: Is the semantic tag value a defined common tag value (Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster alias tag value (RapidCool, RapidFreeze) or in the MfgTags (0x8000 to 0xBFFF) range + - If the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 + - Verify that at least one ModeOptionsStruct entry includes either the RapidCool semantic tag or the RapidFreeze semantic tag in the SemanticTags field + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690184598.426478][15422:15424] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0000 DataVersion: 3075628268 + [1690184598.426516][15422:15424] CHIP:TOO: SupportedModes: 4 entries + [1690184598.426540][15422:15424] CHIP:TOO: [1]: { + [1690184598.426545][15422:15424] CHIP:TOO: Label: Normal + [1690184598.426552][15422:15424] CHIP:TOO: Mode: 0 + [1690184598.426558][15422:15424] CHIP:TOO: ModeTags: 1 entries + [1690184598.426565][15422:15424] CHIP:TOO: [1]: { + [1690184598.426569][15422:15424] CHIP:TOO: Value: 16384 + [1690184598.426572][15422:15424] CHIP:TOO: } + [1690184598.426576][15422:15424] CHIP:TOO: } + [1690184598.426585][15422:15424] CHIP:TOO: [2]: { + [1690184598.426589][15422:15424] CHIP:TOO: Label: Delicate + [1690184598.426593][15422:15424] CHIP:TOO: Mode: 1 + [1690184598.426599][15422:15424] CHIP:TOO: ModeTags: 3 entries + [1690184598.426605][15422:15424] CHIP:TOO: [1]: { + [1690184598.426609][15422:15424] CHIP:TOO: Value: 16385 + [1690184598.426612][15422:15424] CHIP:TOO: } + [1690184598.426617][15422:15424] CHIP:TOO: [2]: { + [1690184598.426621][15422:15424] CHIP:TOO: Value: 8 + [1690184598.426624][15422:15424] CHIP:TOO: } + [1690184598.426629][15422:15424] CHIP:TOO: [3]: { + [1690184598.426633][15422:15424] CHIP:TOO: Value: 2 + [1690184598.426637][15422:15424] CHIP:TOO: } + [1690184598.426640][15422:15424] CHIP:TOO: } + [1690184598.426648][15422:15424] CHIP:TOO: [3]: { + [1690184598.426652][15422:15424] CHIP:TOO: Label: Heavy + [1690184598.426655][15422:15424] CHIP:TOO: Mode: 2 + [1690184598.426661][15422:15424] CHIP:TOO: ModeTags: 2 entries + [1690184598.426666][15422:15424] CHIP:TOO: [1]: { + [1690184598.426669][15422:15424] CHIP:TOO: Value: 7 + [1690184598.426672][15422:15424] CHIP:TOO: } + [1690184598.426677][15422:15424] CHIP:TOO: [2]: { + [1690184598.426680][15422:15424] CHIP:TOO: Value: 16386 + [1690184598.426683][15422:15424] CHIP:TOO: } + [1690184598.426687][15422:15424] CHIP:TOO: } + [1690184598.426693][15422:15424] CHIP:TOO: [4]: { + [1690184598.426697][15422:15424] CHIP:TOO: Label: Whites + [1690184598.426700][15422:15424] CHIP:TOO: Mode: 3 + [1690184598.426705][15422:15424] CHIP:TOO: ModeTags: 1 entries + [1690184598.426710][15422:15424] CHIP:TOO: [1]: { + [1690184598.426713][15422:15424] CHIP:TOO: Value: 16387 + [1690184598.426716][15422:15424] CHIP:TOO: } + [1690184598.426720][15422:15424] CHIP:TOO: } disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer from supported_modes_dut + ./chip-tool laundrywashermode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + + [1690184642.211028][15428:15430] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628268 + [1690184642.211042][15428:15430] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the OnMode attribute." PICS: LWM.S.A0003 verification: | - Verify that the DUT response contains an integer from supported_modes_dut + ./chip-tool laundrywashermode read on-mode 1 1 + + Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null) , below is the sample log provided for the raspi platform, Here OnMode attribute value is Null + + [1690184668.519026][15432:15434] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0003 DataVersion: 3075628268 + [1690184668.519041][15432:15434] CHIP:TOO: OnMode: null disabled: true - label: "Step 5: TH reads from the DUT the StartUpMode attribute." PICS: LWM.S.A0002 verification: | - Verify that the DUT response contains an integer from supported_modes_dut + ./chip-tool laundrywashermode read start-up-mode 1 1 + + Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer(As per spec default value is null) and value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is Null + + [1690184690.235037][15436:15438] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0002 DataVersion: 3075628268 + [1690184690.235048][15436:15438] CHIP:TOO: StartUpMode: null disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LWM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LWM_2_1.yaml index f980951d223a86..6ae4fce0d5d6f5 100644 --- a/src/app/tests/suites/certification/Test_TC_LWM_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LWM_2_1.yaml @@ -34,107 +34,201 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: LWM.S.A0000 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut + ./chip-tool laundrywashermode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690184703.795207][15439:15441] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0000 DataVersion: 3075628268 + [1690184703.795262][15439:15441] CHIP:TOO: SupportedModes: 4 entries + [1690184703.795291][15439:15441] CHIP:TOO: [1]: { + [1690184703.795296][15439:15441] CHIP:TOO: Label: Normal + [1690184703.795309][15439:15441] CHIP:TOO: Mode: 0 + [1690184703.795314][15439:15441] CHIP:TOO: ModeTags: 1 entries + [1690184703.795331][15439:15441] CHIP:TOO: [1]: { + [1690184703.795335][15439:15441] CHIP:TOO: Value: 16384 + [1690184703.795338][15439:15441] CHIP:TOO: } + [1690184703.795342][15439:15441] CHIP:TOO: } + [1690184703.795350][15439:15441] CHIP:TOO: [2]: { + [1690184703.795353][15439:15441] CHIP:TOO: Label: Delicate + [1690184703.795355][15439:15441] CHIP:TOO: Mode: 1 + [1690184703.795360][15439:15441] CHIP:TOO: ModeTags: 3 entries + [1690184703.795364][15439:15441] CHIP:TOO: [1]: { + [1690184703.795366][15439:15441] CHIP:TOO: Value: 16385 + [1690184703.795369][15439:15441] CHIP:TOO: } + [1690184703.795373][15439:15441] CHIP:TOO: [2]: { + [1690184703.795376][15439:15441] CHIP:TOO: Value: 8 + [1690184703.795379][15439:15441] CHIP:TOO: } + [1690184703.795382][15439:15441] CHIP:TOO: [3]: { + [1690184703.795386][15439:15441] CHIP:TOO: Value: 2 + [1690184703.795389][15439:15441] CHIP:TOO: } + [1690184703.795391][15439:15441] CHIP:TOO: } + [1690184703.795397][15439:15441] CHIP:TOO: [3]: { + [1690184703.795399][15439:15441] CHIP:TOO: Label: Heavy + [1690184703.795402][15439:15441] CHIP:TOO: Mode: 2 + [1690184703.795406][15439:15441] CHIP:TOO: ModeTags: 2 entries + [1690184703.795410][15439:15441] CHIP:TOO: [1]: { + [1690184703.795412][15439:15441] CHIP:TOO: Value: 7 + [1690184703.795414][15439:15441] CHIP:TOO: } + [1690184703.795418][15439:15441] CHIP:TOO: [2]: { + [1690184703.795422][15439:15441] CHIP:TOO: Value: 16386 + [1690184703.795424][15439:15441] CHIP:TOO: } + [1690184703.795426][15439:15441] CHIP:TOO: } + [1690184703.795432][15439:15441] CHIP:TOO: [4]: { + [1690184703.795435][15439:15441] CHIP:TOO: Label: Whites + [1690184703.795437][15439:15441] CHIP:TOO: Mode: 3 + [1690184703.795441][15439:15441] CHIP:TOO: ModeTags: 1 entries + [1690184703.795444][15439:15441] CHIP:TOO: [1]: { + [1690184703.795447][15439:15441] CHIP:TOO: Value: 16387 + [1690184703.795449][15439:15441] CHIP:TOO: } + [1690184703.795452][15439:15441] CHIP:TOO: } disabled: true - - label: "Step 2: TH reads from the DUT the CurrentMode attribute." + - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read current-mode 1 1 - Save the value as old_current_mode_dut + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut + - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th + [1690184717.887506][15442:15444] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628268 + [1690184717.887558][15442:15444] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 3: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 4: TH sends a ChangeToMode command to the DUT with NewMode set to old_current_mode_dut" PICS: LWM.S.C00.Rsp verification: | - Verify that the DUT response contains a ChangeToModeResponse command w/ data fields: * Status, set to Success(0x00). + ./chip-tool laundrywashermode change-to-mode 0 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690184772.736083][15449:15451] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Command 0x0000_0001 + [1690184772.736098][15449:15451] CHIP:TOO: ChangeToModeResponse: { + [1690184772.736102][15449:15451] CHIP:TOO: status: 0 + [1690184772.736105][15449:15451] CHIP:TOO: } disabled: true - label: - "Step 4: Manually put the device in a state from which it will FAIL to + "Step 5: Manually put the device in a state from which it will FAIL to transition to PIXIT.LWM.MODE_CHANGE_FAIL" + PICS: PIXIT.LWM.CAN_TEST_MODE_FAILURE verification: | - + Manual operation required disabled: true - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + - label: "Step 6: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read current-mode 1 1 - Save the value as old_current_mode_dut + Verify on TH(chip-tool), Current modes attribute value is an integer value. + - Save the mode values for usage in steps 3 and below is the sample log provided for the raspi platform + + [1690184717.887506][15442:15444] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628268 + [1690184717.887558][15442:15444] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 6: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.LWM.MODE_CHANGE_FAIL" - PICS: LWM.S.C00.Rsp + PICS: PIXIT.LWM.CAN_TEST_MODE_FAILURE && LWM.S.C00.Rsp verification: | - Verify that the DUT responds with a ChangeToModeResponse command. + Note : Please skip this step as SDK is not enabled with this failure response - Verify that the Status field is set to GenericFailure(0x02) or in the MfgCodes (0x80 to 0xBF) range + ./chip-tool laundrywashermode change-to-mode 2 1 1 - Verify that the StatusText field has a length between 1 and 64 + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a GenericFailure(0x02) status response and below is the sample log provided for the raspi platform: + + [1690270057.274893][31185:31187] CHIP:DMG: Received Command Response Data, Endpoint=1 Cluster=0x0000_0051 Command=0x0000_0001 + [1690270057.274901][31185:31187] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Command 0x0000_0001 + [1690270057.274915][31185:31187] CHIP:TOO: ChangeToModeResponse: { + [1690270057.274921][31185:31187] CHIP:TOO: status: 0 + [1690270057.274924][31185:31187] CHIP:TOO: } disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value equal to old_current_mode_dut + ./chip-tool laundrywashermode read current-mode 1 1 + + Verify on TH(chip-tool), CurrentMode attribute value is an integer value and equal to old_current_mode_dut below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + + [1690184717.887506][15442:15444] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628268 + [1690184717.887558][15442:15444] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 8: Manually put the device in a state from which it will + "Step 9: Manually put the device in a state from which it will SUCCESSFULLY transition to PIXIT.LWM.MODE_CHANGE_OK" verification: | - + Manual operation required disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - Save the value as old_current_mode_dut + [1690184717.887506][15442:15444] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628268 + [1690184717.887558][15442:15444] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 10: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 11: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.LWM.MODE_CHANGE_OK" PICS: LWM.S.C00.Rsp verification: | - Verify that the DUT responds with a ChangeToModeResponse command. + ./chip-tool laundrywashermode change-to-mode 3 1 1 - Verify that the Status field is set to Success(0x00) + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690185119.954667][15519:15521] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Command 0x0000_0001 + [1690185119.954682][15519:15521] CHIP:TOO: ChangeToModeResponse: { + [1690185119.954686][15519:15521] CHIP:TOO: status: 0 + [1690185119.954689][15519:15521] CHIP:TOO: } disabled: true - - label: "Step 11: TH reads from the DUT the CurrentMode attribute." + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value equal to PIXIT.LWM.MODE_CHANGE_OK + ./chip-tool laundrywashermode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 11, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 3 + + [1690185143.611836][15523:15525] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628273 + [1690185143.611850][15523:15525] CHIP:TOO: CurrentMode: 3 disabled: true - label: - "Step 12: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 13: TH sends a ChangeToMode command to the DUT with NewMode set to invalid_mode_th" PICS: LWM.S.C00.Rsp verification: | - Verify that the DUT responds with a ChangeToModeResponse command. + ./chip-tool laundrywashermode change-to-mode 5 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a UnsupportedMode(0x01) status response and below is the sample log provided for the raspi platform: - Verify that the Status field is set to UnsupportedMode(0x01). + [1690185176.658256][15528:15530] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Command 0x0000_0001 + [1690185176.658275][15528:15530] CHIP:TOO: ChangeToModeResponse: { + [1690185176.658280][15528:15530] CHIP:TOO: status: 1 + [1690185176.658284][15528:15530] CHIP:TOO: } disabled: true - - label: "Step 13: TH reads from the DUT the CurrentMode attribute." + - label: "Step 14: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value equal to PIXIT.LWM.MODE_CHANGE_OK + ./chip-tool laundrywashermode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 12, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 3 + + [1690185143.611836][15523:15525] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3075628273 + [1690185143.611850][15523:15525] CHIP:TOO: CurrentMode: 3 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml index 08a2b191a6ec85..7ce1d6da60ce93 100644 --- a/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LWM_3_1.yaml @@ -24,6 +24,27 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To execute this test case set onmode to any integer value because as default it value has null. + + ./chip-tool laundrywashermode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690185319.728749][15566:15568] CHIP:DMG: StatusIB = + [1690185319.728752][15566:15568] CHIP:DMG: { + [1690185319.728755][15566:15568] CHIP:DMG: status = 0x00 (SUCCESS), + [1690185319.728758][15566:15568] CHIP:DMG: }, + disabled: true + + - label: "Precondition" + verification: | + 1. Laundry Washer Mode and OnOff clusters are available on the same endpoint + + 2. The OnMode attribute is set to a non-NULL value from the mode values indicated by the SupportedModes attribute. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,31 +55,82 @@ tests: - label: "Step 2: TH reads from the DUT the OnMode attribute." PICS: LWM.S.A0003 && LWM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read on-mode 1 1 + + On TH(chip-tool), Verify that OnMode attribute value is an integer or Null + Save the value as on_mode_dut and below is the sample log provided for the raspi platform, here OnMode value is 0 - Save the value as on_mode_dut + [1690185340.696395][15570:15572] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0003 DataVersion: 3936986762 + [1690185340.696410][15570:15572] CHIP:TOO: OnMode: 0 disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 && LWM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read current-mode 1 1 - Save the value as old_current_mode_dut + On TH(chip-tool), Verify that CurrentMode attribute is an integer. + Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 - If on_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + NOTE: If on_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + + [1690185351.764944][15576:15578] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3936986762 + [1690185351.764982][15576:15578] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the SupportedModes attribute." PICS: LWM.S.A0000 && LWM.S.F00 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th. + ./chip-tool laundrywashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690185380.248193][15579:15581] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0000 DataVersion: 3936986762 + [1690185380.248223][15579:15581] CHIP:TOO: SupportedModes: 4 entries + [1690185380.248237][15579:15581] CHIP:TOO: [1]: { + [1690185380.248240][15579:15581] CHIP:TOO: Label: Normal + [1690185380.248246][15579:15581] CHIP:TOO: Mode: 0 + [1690185380.248250][15579:15581] CHIP:TOO: ModeTags: 1 entries + [1690185380.248255][15579:15581] CHIP:TOO: [1]: { + [1690185380.248258][15579:15581] CHIP:TOO: Value: 16384 + [1690185380.248261][15579:15581] CHIP:TOO: } + [1690185380.248264][15579:15581] CHIP:TOO: } + [1690185380.248271][15579:15581] CHIP:TOO: [2]: { + [1690185380.248273][15579:15581] CHIP:TOO: Label: Delicate + [1690185380.248276][15579:15581] CHIP:TOO: Mode: 1 + [1690185380.248281][15579:15581] CHIP:TOO: ModeTags: 3 entries + [1690185380.248285][15579:15581] CHIP:TOO: [1]: { + [1690185380.248288][15579:15581] CHIP:TOO: Value: 16385 + [1690185380.248290][15579:15581] CHIP:TOO: } + [1690185380.248294][15579:15581] CHIP:TOO: [2]: { + [1690185380.248296][15579:15581] CHIP:TOO: Value: 8 + [1690185380.248299][15579:15581] CHIP:TOO: } + [1690185380.248302][15579:15581] CHIP:TOO: [3]: { + [1690185380.248305][15579:15581] CHIP:TOO: Value: 2 + [1690185380.248307][15579:15581] CHIP:TOO: } + [1690185380.248310][15579:15581] CHIP:TOO: } + [1690185380.248315][15579:15581] CHIP:TOO: [3]: { + [1690185380.248318][15579:15581] CHIP:TOO: Label: Heavy + [1690185380.248320][15579:15581] CHIP:TOO: Mode: 2 + [1690185380.248324][15579:15581] CHIP:TOO: ModeTags: 2 entries + [1690185380.248328][15579:15581] CHIP:TOO: [1]: { + [1690185380.248330][15579:15581] CHIP:TOO: Value: 7 + [1690185380.248333][15579:15581] CHIP:TOO: } + [1690185380.248336][15579:15581] CHIP:TOO: [2]: { + [1690185380.248339][15579:15581] CHIP:TOO: Value: 16386 + [1690185380.248341][15579:15581] CHIP:TOO: } + [1690185380.248344][15579:15581] CHIP:TOO: } + [1690185380.248349][15579:15581] CHIP:TOO: [4]: { + [1690185380.248351][15579:15581] CHIP:TOO: Label: Whites + [1690185380.248354][15579:15581] CHIP:TOO: Mode: 3 + [1690185380.248357][15579:15581] CHIP:TOO: ModeTags: 1 entries + [1690185380.248361][15579:15581] CHIP:TOO: [1]: { + [1690185380.248363][15579:15581] CHIP:TOO: Value: 16387 + [1690185380.248366][15579:15581] CHIP:TOO: } + [1690185380.248368][15579:15581] CHIP:TOO: } disabled: true - label: @@ -66,25 +138,51 @@ tests: to new_mode_th" PICS: LWM.S.C00.Rsp && LWM.S.F00 verification: | - Verify that the DUT response contains a ChangeToModeResponse command w/ data fields: * Status, set to Success(0x00). + ./chip-tool laundrywashermode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1684931013.571019][20667:20669] CHIP:DMG: + [1684931013.571021][20667:20669] CHIP:DMG: StatusIB = + [1684931013.571024][20667:20669] CHIP:DMG: { + [1684931013.571027][20667:20669] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931013.571030][20667:20669] CHIP:DMG: }, + [1684931013.571034][20667:20669] CHIP:DMG: disabled: true - label: "Step 6: TH sends a Off command to the DUT" PICS: OO.S.C00.Rsp && LWM.S.F00 verification: | - Verify DUT responds w/ status SUCCESS(0x00) + ./chip-tool onoff off 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1684931101.118656][20709:20711] CHIP:DMG: StatusIB = + [1684931101.118659][20709:20711] CHIP:DMG: { + [1684931101.118663][20709:20711] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931101.118665][20709:20711] CHIP:DMG: }, disabled: true - label: "Step 7: TH sends a On command to the DUT" PICS: OO.S.C01.Rsp && LWM.S.F00 verification: | - Verify DUT responds w/ status SUCCESS(0x00) + ./chip-tool onoff on 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1684931217.055514][20729:20731] CHIP:DMG: StatusIB = + [1684931217.055517][20729:20731] CHIP:DMG: { + [1684931217.055520][20729:20731] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931217.055523][20729:20731] CHIP:DMG: }, disabled: true - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 && LWM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to on_mode_dut, below is the sample log provided for the raspi platform, here CurrentMode attribute value is 0 - The value is equal to on_mode_dut + [1690185481.653384][15610:15612] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 3936986766 + [1690185481.653431][15610:15612] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml index a57017a25562df..2359c29402a4ff 100644 --- a/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_LWM_3_2.yaml @@ -24,6 +24,19 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To Execute the TC-LWM-3.2 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,50 +47,193 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: LWM.S.A0002 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer or null + - Save the value as startup_mode_dut and below is the sample log provided for the raspi platform, Here StartUpMode value is null - Save the value as startup_mode_dut + [1690185689.626227][15652:15654] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0002 DataVersion: 869931348 + [1690185689.626269][15652:15654] CHIP:TOO: StartUpMode: null disabled: true - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: LWM.S.A0001 + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: LWM.S.A0000 + verification: | + ./chip-tool laundrywashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690185724.484514][15658:15660] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0000 DataVersion: 869931348 + [1690185724.484543][15658:15660] CHIP:TOO: SupportedModes: 4 entries + [1690185724.484552][15658:15660] CHIP:TOO: [1]: { + [1690185724.484555][15658:15660] CHIP:TOO: Label: Normal + [1690185724.484561][15658:15660] CHIP:TOO: Mode: 0 + [1690185724.484565][15658:15660] CHIP:TOO: ModeTags: 1 entries + [1690185724.484570][15658:15660] CHIP:TOO: [1]: { + [1690185724.484573][15658:15660] CHIP:TOO: Value: 16384 + [1690185724.484576][15658:15660] CHIP:TOO: } + [1690185724.484579][15658:15660] CHIP:TOO: } + [1690185724.484585][15658:15660] CHIP:TOO: [2]: { + [1690185724.484588][15658:15660] CHIP:TOO: Label: Delicate + [1690185724.484590][15658:15660] CHIP:TOO: Mode: 1 + [1690185724.484595][15658:15660] CHIP:TOO: ModeTags: 3 entries + [1690185724.484598][15658:15660] CHIP:TOO: [1]: { + [1690185724.484601][15658:15660] CHIP:TOO: Value: 16385 + [1690185724.484603][15658:15660] CHIP:TOO: } + [1690185724.484607][15658:15660] CHIP:TOO: [2]: { + [1690185724.484609][15658:15660] CHIP:TOO: Value: 8 + [1690185724.484612][15658:15660] CHIP:TOO: } + [1690185724.484615][15658:15660] CHIP:TOO: [3]: { + [1690185724.484617][15658:15660] CHIP:TOO: Value: 2 + [1690185724.484620][15658:15660] CHIP:TOO: } + [1690185724.484622][15658:15660] CHIP:TOO: } + [1690185724.484627][15658:15660] CHIP:TOO: [3]: { + [1690185724.484630][15658:15660] CHIP:TOO: Label: Heavy + [1690185724.484632][15658:15660] CHIP:TOO: Mode: 2 + [1690185724.484636][15658:15660] CHIP:TOO: ModeTags: 2 entries + [1690185724.484639][15658:15660] CHIP:TOO: [1]: { + [1690185724.484642][15658:15660] CHIP:TOO: Value: 7 + [1690185724.484644][15658:15660] CHIP:TOO: } + [1690185724.484647][15658:15660] CHIP:TOO: [2]: { + [1690185724.484649][15658:15660] CHIP:TOO: Value: 16386 + [1690185724.484652][15658:15660] CHIP:TOO: } + [1690185724.484654][15658:15660] CHIP:TOO: } + [1690185724.484659][15658:15660] CHIP:TOO: [4]: { + [1690185724.484662][15658:15660] CHIP:TOO: Label: Whites + [1690185724.484664][15658:15660] CHIP:TOO: Mode: 3 + [1690185724.484667][15658:15660] CHIP:TOO: ModeTags: 1 entries + [1690185724.484670][15658:15660] CHIP:TOO: [1]: { + [1690185724.484673][15658:15660] CHIP:TOO: Value: 16387 + [1690185724.484675][15658:15660] CHIP:TOO: } + [1690185724.484678][15658:15660] CHIP:TOO: } + disabled: true + + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: LWM.S.A0002 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode write start-up-mode 0 1 1 - Save the value as old_current_mode_dut + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + [1690185636.156858][15647:15649] CHIP:DMG: StatusIB = + [1690185636.156870][15647:15649] CHIP:DMG: { + [1690185636.156881][15647:15649] CHIP:DMG: status = 0x00 (SUCCESS), + [1690185636.156892][15647:15649] CHIP:DMG: }, disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: LWM.S.A0000 + - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries + ./chip-tool laundrywashermode read current-mode 1 1 - Verify that the list has two or more entries + On TH(chip-tool), Verify CurrentMode attribute value is an integer, + - Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: - Save the Mode field values as supported_modes_dut + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 6. Else proceed to step 8. - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th. + [1690185713.364316][15655:15657] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 869931348 + [1690185713.364364][15655:15657] CHIP:TOO: CurrentMode: 0 + disabled: true + + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." + PICS: LWM.S.A0000 + verification: | + ./chip-tool laundrywashermode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690185724.484514][15658:15660] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0000 DataVersion: 869931348 + [1690185724.484543][15658:15660] CHIP:TOO: SupportedModes: 4 entries + [1690185724.484552][15658:15660] CHIP:TOO: [1]: { + [1690185724.484555][15658:15660] CHIP:TOO: Label: Normal + [1690185724.484561][15658:15660] CHIP:TOO: Mode: 0 + [1690185724.484565][15658:15660] CHIP:TOO: ModeTags: 1 entries + [1690185724.484570][15658:15660] CHIP:TOO: [1]: { + [1690185724.484573][15658:15660] CHIP:TOO: Value: 16384 + [1690185724.484576][15658:15660] CHIP:TOO: } + [1690185724.484579][15658:15660] CHIP:TOO: } + [1690185724.484585][15658:15660] CHIP:TOO: [2]: { + [1690185724.484588][15658:15660] CHIP:TOO: Label: Delicate + [1690185724.484590][15658:15660] CHIP:TOO: Mode: 1 + [1690185724.484595][15658:15660] CHIP:TOO: ModeTags: 3 entries + [1690185724.484598][15658:15660] CHIP:TOO: [1]: { + [1690185724.484601][15658:15660] CHIP:TOO: Value: 16385 + [1690185724.484603][15658:15660] CHIP:TOO: } + [1690185724.484607][15658:15660] CHIP:TOO: [2]: { + [1690185724.484609][15658:15660] CHIP:TOO: Value: 8 + [1690185724.484612][15658:15660] CHIP:TOO: } + [1690185724.484615][15658:15660] CHIP:TOO: [3]: { + [1690185724.484617][15658:15660] CHIP:TOO: Value: 2 + [1690185724.484620][15658:15660] CHIP:TOO: } + [1690185724.484622][15658:15660] CHIP:TOO: } + [1690185724.484627][15658:15660] CHIP:TOO: [3]: { + [1690185724.484630][15658:15660] CHIP:TOO: Label: Heavy + [1690185724.484632][15658:15660] CHIP:TOO: Mode: 2 + [1690185724.484636][15658:15660] CHIP:TOO: ModeTags: 2 entries + [1690185724.484639][15658:15660] CHIP:TOO: [1]: { + [1690185724.484642][15658:15660] CHIP:TOO: Value: 7 + [1690185724.484644][15658:15660] CHIP:TOO: } + [1690185724.484647][15658:15660] CHIP:TOO: [2]: { + [1690185724.484649][15658:15660] CHIP:TOO: Value: 16386 + [1690185724.484652][15658:15660] CHIP:TOO: } + [1690185724.484654][15658:15660] CHIP:TOO: } + [1690185724.484659][15658:15660] CHIP:TOO: [4]: { + [1690185724.484662][15658:15660] CHIP:TOO: Label: Whites + [1690185724.484664][15658:15660] CHIP:TOO: Mode: 3 + [1690185724.484667][15658:15660] CHIP:TOO: ModeTags: 1 entries + [1690185724.484670][15658:15660] CHIP:TOO: [1]: { + [1690185724.484673][15658:15660] CHIP:TOO: Value: 16387 + [1690185724.484675][15658:15660] CHIP:TOO: } + [1690185724.484678][15658:15660] CHIP:TOO: } disabled: true - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to new_mode_th" PICS: LWM.S.C00.Rsp verification: | - Verify that the DUT response contains a ChangeToModeResponse command w/ data fields: * Status, set to Success(0x00). + ./chip-tool laundrywashermode change-to-mode 1 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690185742.384243][15661:15663] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Command 0x0000_0001 + [1690185742.384257][15661:15663] CHIP:TOO: ChangeToModeResponse: { + [1690185742.384264][15661:15663] CHIP:TOO: status: 0 + [1690185742.384267][15661:15663] CHIP:TOO: } + disabled: true + + - label: "Step 8: Physically power cycle the device" + verification: | + Physically power cycle the device disabled: true - - label: "Step 6: Physically power cycle the device" + - label: "Step 9: TH reads from the DUT the StartUpMode attribute." + PICS: LWM.S.A0002 verification: | + ./chip-tool laundrywashermode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer value + - Save the value as new_start_up_mode_dut and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode value is 0 + [1690185689.626227][15652:15654] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0002 DataVersion: 869931348 + [1690185689.626269][15652:15654] CHIP:TOO: StartUpMode: 0 disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: LWM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool laundrywashermode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_start_up_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - The value is equal to startup_mode_dut + [1690185777.021610][15671:15673] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0051 Attribute 0x0000_0001 DataVersion: 2000229067 + [1690185777.021664][15671:15673] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_NDOCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_NDOCONC_1_1.yaml index af7a3a19f81f3d..7b50bfd9a06f9b 100644 --- a/src/app/tests/suites/certification/Test_TC_NDOCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_NDOCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: NDOCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !NDOCONC.S.F00 && !NDOCONC.S.F01 && !NDOCONC.S.F02 && !NDOCONC.S.F03 + && !NDOCONC.S.F04 && !NDOCONC.S.F05" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given NDOCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && NDOCONC.S.F00 + PICS: NDOCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && !NDOCONC.S.F00 + PICS: " !NDOCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && NDOCONC.S.F01 + PICS: NDOCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && !NDOCONC.S.F01 + PICS: " !NDOCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && NDOCONC.S.F02 + PICS: NDOCONC.S.F02 && NDOCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && !NDOCONC.S.F02 + PICS: " !NDOCONC.S.F02 && !NDOCONC.S.F01 " response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && NDOCONC.S.F03 + PICS: NDOCONC.S.F03 && NDOCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && !NDOCONC.S.F03 + PICS: " !NDOCONC.S.F03 && !NDOCONC.S.F01 " response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && NDOCONC.S.F04 + PICS: NDOCONC.S.F04 && NDOCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && !NDOCONC.S.F04 + PICS: " !NDOCONC.S.F04 && NDOCONC.S.F00 " response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && NDOCONC.S.F05 + PICS: NDOCONC.S.F05 && NDOCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: NDOCONC.S.Afffc && !NDOCONC.S.F05 + PICS: " !NDOCONC.S.F05 && !NDOCONC.S.F00" response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && NDOCONC.S.A0007 && NDOCONC.S.F00 + PICS: NDOCONC.S.A0007 && NDOCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when NDOCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && !NDOCONC.S.A0007 + PICS: " !NDOCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && NDOCONC.S.F00 + PICS: NDOCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when NDOCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && !NDOCONC.S.F00 + PICS: " !NDOCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && NDOCONC.S.F04 + PICS: NDOCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when NDOCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && !NDOCONC.S.F04 + PICS: " !NDOCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && NDOCONC.S.F05 + PICS: NDOCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: NDOCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && !NDOCONC.S.F05 + PICS: " !NDOCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && NDOCONC.S.F01 + PICS: NDOCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: NDOCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: NDOCONC.S.Afffb && !NDOCONC.S.F01 + PICS: " !NDOCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: NDOCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: NDOCONC.S.Afff8 response: value: [] constraints: 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 deleted file mode 100644 index 92d62439f7e8f0..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_2_Simulated.yaml +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 28.2.2. [TC-OCC-2.2] Attributes with client 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: "OccupancySensorType" - - - label: - "DUT reads from the TH the (0x0002) OccupancySensorTypeBitmap - attribute" - PICS: OCC.C.A0002 - wait: "readAttribute" - attribute: "OccupancySensorTypeBitmap" - - - label: - "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay - optional attribute" - PICS: OCC.C.A0010 - wait: "readAttribute" - attribute: "PIROccupiedToUnoccupiedDelay" - - - label: - "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay - optional attribute" - PICS: OCC.C.A0011 - wait: "readAttribute" - attribute: "PIRUnoccupiedToOccupiedDelay" - - - label: - "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold - optional attribute" - PICS: OCC.C.A0012 - wait: "readAttribute" - attribute: "PIRUnoccupiedToOccupiedThreshold" - - - label: - "DUT reads from the TH the (0x0020) - UltrasonicOccupiedToUnoccupiedDelay optional attribute" - PICS: OCC.C.A0020 - wait: "readAttribute" - attribute: "UltrasonicOccupiedToUnoccupiedDelay" - - - label: - "DUT reads from the TH the (0x0021) - UltrasonicUnoccupiedToOccupiedDelay optional attribute" - PICS: OCC.C.A0021 - wait: "readAttribute" - attribute: "UltrasonicUnoccupiedToOccupiedDelay" - - - label: - "DUT reads from the TH the (0x0022) - UltrasonicUnoccupiedToOccupiedThreshold optional attribute" - PICS: OCC.C.A0022 - wait: "readAttribute" - attribute: "UltrasonicUnoccupiedToOccupiedThreshold" - - - label: - "DUT reads from the TH the (0x0030) - PhysicalContactOccupiedToUnoccupiedDelay optional attribute" - PICS: OCC.C.A0030 - wait: "readAttribute" - attribute: "PhysicalContactOccupiedToUnoccupiedDelay" - - - label: - "DUT reads from the TH the (0x0031) - PhysicalContactUnoccupiedToOccupiedDelay optional attribute" - PICS: OCC.C.A0031 - wait: "readAttribute" - attribute: "PhysicalContactUnoccupiedToOccupiedDelay" - - - label: - "DUT reads from the TH the (0x0032) - PhysicalContactUnoccupiedToOccupiedThreshold optional attribute" - PICS: OCC.C.A0032 - wait: "readAttribute" - attribute: "PhysicalContactUnoccupiedToOccupiedThreshold" 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 index 3417f29ea9fe32..03d37bcd79bff2 100644 --- 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 @@ -22,7 +22,7 @@ PICS: config: nodeId: 0x12344321 cluster: "Occupancy Sensing" - endpoint: 0 + endpoint: 1 tests: #- label: "Wait for the device to be commissioned" diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_1_Simulated.yaml deleted file mode 100644 index e57e5b424496a8..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_OO_3_1_Simulated.yaml +++ /dev/null @@ -1,374 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 3.3.1. [TC-OO-3.1] Attributes with client as DUT - -PICS: - - OO.C - - OO.C.AM-READ - - OO.C.AO-READ - - OO.C.AM-WRITE - - OO.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "On/Off" - endpoint: 1 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute OnOff" - wait: "readAttribute" - attribute: "OnOff" - - - label: "Read attribute GlobalSceneControl" - wait: "readAttribute" - attribute: "GlobalSceneControl" - - - label: "Read attribute OnTime" - wait: "readAttribute" - attribute: "OnTime" - - - label: "Read attribute OffWaitTime" - wait: "readAttribute" - attribute: "OffWaitTime" - - - label: "Read attribute StartUpOnOff" - wait: "readAttribute" - attribute: "StartUpOnOff" - - - label: "Write attribute OnTime" - wait: "writeAttribute" - attribute: "OnTime" - arguments: - value: - - - label: "Write attribute OffWaitTime" - wait: "writeAttribute" - attribute: "OffWaitTime" - arguments: - value: - - - label: "Write attribute StartUpOnOff" - wait: "writeAttribute" - attribute: "StartUpOnOff" - arguments: - value: - - - 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: | - 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 onoff read attribute-list 1 1 - - Verify the " attribute-list response" on the TH (all-cluster-minimal-app) log: - - [1676891564.236044][13681:13681] CHIP:DMG: } - [1676891564.236047][13681:13681] CHIP:DMG: - [1676891564.236099][13681:13681] CHIP:DMG: ReportDataMessage = - [1676891564.236103][13681:13681] CHIP:DMG: { - [1676891564.236105][13681:13681] CHIP:DMG: AttributeReportIBs = - [1676891564.236111][13681:13681] CHIP:DMG: [ - [1676891564.236114][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236120][13681:13681] CHIP:DMG: { - [1676891564.236123][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236127][13681:13681] CHIP:DMG: { - [1676891564.236131][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236135][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236139][13681:13681] CHIP:DMG: { - [1676891564.236144][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236148][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236153][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236157][13681:13681] CHIP:DMG: } - [1676891564.236162][13681:13681] CHIP:DMG: - [1676891564.236166][13681:13681] CHIP:DMG: Data = [ - [1676891564.236170][13681:13681] CHIP:DMG: - [1676891564.236175][13681:13681] CHIP:DMG: ], - [1676891564.236179][13681:13681] CHIP:DMG: }, - [1676891564.236184][13681:13681] CHIP:DMG: - [1676891564.236188][13681:13681] CHIP:DMG: }, - [1676891564.236195][13681:13681] CHIP:DMG: - [1676891564.236199][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236205][13681:13681] CHIP:DMG: { - [1676891564.236208][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236212][13681:13681] CHIP:DMG: { - [1676891564.236216][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236220][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236225][13681:13681] CHIP:DMG: { - [1676891564.236229][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236233][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236238][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236243][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236247][13681:13681] CHIP:DMG: } - [1676891564.236252][13681:13681] CHIP:DMG: - [1676891564.236257][13681:13681] CHIP:DMG: Data = 0, - [1676891564.236260][13681:13681] CHIP:DMG: }, - [1676891564.236266][13681:13681] CHIP:DMG: - [1676891564.236269][13681:13681] CHIP:DMG: }, - [1676891564.236277][13681:13681] CHIP:DMG: - [1676891564.236280][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236286][13681:13681] CHIP:DMG: { - [1676891564.236290][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236294][13681:13681] CHIP:DMG: { - [1676891564.236299][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236306][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236314][13681:13681] CHIP:DMG: { - [1676891564.236321][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236330][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236337][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236344][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236348][13681:13681] CHIP:DMG: } - [1676891564.236354][13681:13681] CHIP:DMG: - [1676891564.236358][13681:13681] CHIP:DMG: Data = 65528, - [1676891564.236362][13681:13681] CHIP:DMG: }, - [1676891564.236367][13681:13681] CHIP:DMG: - [1676891564.236372][13681:13681] CHIP:DMG: }, - [1676891564.236380][13681:13681] CHIP:DMG: - [1676891564.236384][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236389][13681:13681] CHIP:DMG: { - [1676891564.236393][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236400][13681:13681] CHIP:DMG: { - [1676891564.236407][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236414][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236421][13681:13681] CHIP:DMG: { - [1676891564.236427][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236433][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236439][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236445][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236450][13681:13681] CHIP:DMG: } - [1676891564.236457][13681:13681] CHIP:DMG: - [1676891564.236463][13681:13681] CHIP:DMG: Data = 65529, - [1676891564.236468][13681:13681] CHIP:DMG: }, - [1676891564.236475][13681:13681] CHIP:DMG: - [1676891564.236480][13681:13681] CHIP:DMG: }, - [1676891564.236491][13681:13681] CHIP:DMG: - [1676891564.236495][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236503][13681:13681] CHIP:DMG: { - [1676891564.236507][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236513][13681:13681] CHIP:DMG: { - [1676891564.236518][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236523][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236529][13681:13681] CHIP:DMG: { - [1676891564.236534][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236540][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236546][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236551][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236557][13681:13681] CHIP:DMG: } - [1676891564.236563][13681:13681] CHIP:DMG: - [1676891564.236569][13681:13681] CHIP:DMG: Data = 65530, - [1676891564.236574][13681:13681] CHIP:DMG: }, - [1676891564.236581][13681:13681] CHIP:DMG: - [1676891564.236586][13681:13681] CHIP:DMG: }, - [1676891564.236596][13681:13681] CHIP:DMG: - [1676891564.236601][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236609][13681:13681] CHIP:DMG: { - [1676891564.236614][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236619][13681:13681] CHIP:DMG: { - [1676891564.236624][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236629][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236635][13681:13681] CHIP:DMG: { - [1676891564.236640][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236646][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236652][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236658][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236663][13681:13681] CHIP:DMG: } - [1676891564.236670][13681:13681] CHIP:DMG: - [1676891564.236675][13681:13681] CHIP:DMG: Data = 65531, - [1676891564.236681][13681:13681] CHIP:DMG: }, - [1676891564.236688][13681:13681] CHIP:DMG: - [1676891564.236693][13681:13681] CHIP:DMG: }, - [1676891564.236706][13681:13681] CHIP:DMG: - [1676891564.236711][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236720][13681:13681] CHIP:DMG: { - [1676891564.236728][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236736][13681:13681] CHIP:DMG: { - [1676891564.236743][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236749][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236757][13681:13681] CHIP:DMG: { - [1676891564.236765][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236772][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236780][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236787][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236793][13681:13681] CHIP:DMG: } - [1676891564.236802][13681:13681] CHIP:DMG: - [1676891564.236810][13681:13681] CHIP:DMG: Data = 65532, - [1676891564.236816][13681:13681] CHIP:DMG: }, - [1676891564.236825][13681:13681] CHIP:DMG: - [1676891564.236832][13681:13681] CHIP:DMG: }, - [1676891564.236846][13681:13681] CHIP:DMG: - [1676891564.236851][13681:13681] CHIP:DMG: AttributeReportIB = - [1676891564.236858][13681:13681] CHIP:DMG: { - [1676891564.236863][13681:13681] CHIP:DMG: AttributeDataIB = - [1676891564.236868][13681:13681] CHIP:DMG: { - [1676891564.236875][13681:13681] CHIP:DMG: DataVersion = 0x1b431685, - [1676891564.236883][13681:13681] CHIP:DMG: AttributePathIB = - [1676891564.236890][13681:13681] CHIP:DMG: { - [1676891564.236897][13681:13681] CHIP:DMG: Endpoint = 0x1, - [1676891564.236903][13681:13681] CHIP:DMG: Cluster = 0x6, - [1676891564.236911][13681:13681] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676891564.236918][13681:13681] CHIP:DMG: ListIndex = Null, - [1676891564.236926][13681:13681] CHIP:DMG: } - [1676891564.236936][13681:13681] CHIP:DMG: - [1676891564.236942][13681:13681] CHIP:DMG: Data = 65533, - [1676891564.236947][13681:13681] CHIP:DMG: }, - [1676891564.236955][13681:13681] CHIP:DMG: - [1676891564.236959][13681:13681] CHIP:DMG: }, - [1676891564.236967][13681:13681] CHIP:DMG: - [1676891564.236971][13681:13681] CHIP:DMG: ], - [1676891564.236999][13681:13681] CHIP:DMG: - [1676891564.237003][13681:13681] CHIP:DMG: SuppressResponse = true, - [1676891564.237008][13681:13681] CHIP:DMG: InteractionModelRevision = 1 - [1676891564.237012][13681:13681] CHIP:DMG: } - - - - ./chip-tool onoff read feature-map 1 1 - - Verify the " feature-map response" on the TH (all-cluster-minimal-app) log: - - [1666943673.928358][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943673.928360][12769:12769] CHIP:DMG: { - [1666943673.928362][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943673.928367][12769:12769] CHIP:DMG: [ - [1666943673.928369][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943673.928374][12769:12769] CHIP:DMG: { - [1666943673.928376][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943673.928379][12769:12769] CHIP:DMG: { - [1666943673.928382][12769:12769] CHIP:DMG: DataVersion = 0xfcb17157, - [1666943673.928385][12769:12769] CHIP:DMG: AttributePathIB = - [1666943673.928388][12769:12769] CHIP:DMG: { - [1666943673.928392][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943673.928395][12769:12769] CHIP:DMG: Cluster = 0x6, - [1666943673.928398][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666943673.928401][12769:12769] CHIP:DMG: } - [1666943673.928404][12769:12769] CHIP:DMG: - [1666943673.928407][12769:12769] CHIP:DMG: Data = 0, - [1666943673.928410][12769:12769] CHIP:DMG: }, - [1666943673.928413][12769:12769] CHIP:DMG: - [1666943673.928416][12769:12769] CHIP:DMG: }, - [1666943673.928419][12769:12769] CHIP:DMG: - [1666943673.928422][12769:12769] CHIP:DMG: ], - [1666943673.928425][12769:12769] CHIP:DMG: - [1666943673.928428][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943673.928430][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943673.928432][12769:12769] CHIP:DMG: } - - - ./chip-tool onoff read on-off 1 1 - - Verify the " on-off response" on the TH (all-cluster-minimal-app) log: - - [1666943688.655282][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943688.655285][12769:12769] CHIP:DMG: { - [1666943688.655286][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943688.655290][12769:12769] CHIP:DMG: [ - [1666943688.655291][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943688.655294][12769:12769] CHIP:DMG: { - [1666943688.655296][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943688.655299][12769:12769] CHIP:DMG: { - [1666943688.655301][12769:12769] CHIP:DMG: DataVersion = 0xfcb17157, - [1666943688.655303][12769:12769] CHIP:DMG: AttributePathIB = - [1666943688.655305][12769:12769] CHIP:DMG: { - [1666943688.655307][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943688.655309][12769:12769] CHIP:DMG: Cluster = 0x6, - [1666943688.655312][12769:12769] CHIP:DMG: Attribute = 0x0000_0000, - [1666943688.655314][12769:12769] CHIP:DMG: } - [1666943688.655316][12769:12769] CHIP:DMG: - [1666943688.655319][12769:12769] CHIP:DMG: Data = false, - [1666943688.655321][12769:12769] CHIP:DMG: }, - [1666943688.655323][12769:12769] CHIP:DMG: - [1666943688.655325][12769:12769] CHIP:DMG: }, - [1666943688.655328][12769:12769] CHIP:DMG: - [1666943688.655330][12769:12769] CHIP:DMG: ], - [1666943688.655333][12769:12769] CHIP:DMG: - [1666943688.655335][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943688.655336][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943688.655338][12769:12769] CHIP:DMG: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - verification: | - ./chip-tool onoff read global-scene-control 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool onoff read on-time 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool onoff read off-wait-time 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool onoff read start-up-on-off 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT writes a suitable value to all supported optional attributes on - the TH one at a time in a manufacturer specific order" - verification: | - ./chip-tool onoff write on-time 1 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool onoff write off-wait-time 22 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool onoff write start-up-on-off 2 1 1 - - on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_1.yaml b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_1.yaml index 576f0c51f504dc..efe99c934acb11 100644 --- a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verifications: | + While verifying below test case we will get 0 and null value for few attributes, as per spec 0 and null value is default for those attributes. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)" diff --git a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_2.yaml b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_2.yaml index 0eec0cd3ec0763..fb0fc296d816cc 100644 --- a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verifications: | + This is a simulated example log for instructional purposes only. In real scenarios, the actual log may vary depending on the feature implementation in Reference App. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)" diff --git a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_3.yaml b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_3.yaml index a4fd1a62876684..d0e4cf49ff83b8 100644 --- a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_3.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verifications: | + This is a simulated example log for instructional purposes only. In real scenarios, the actual log may vary depending on the feature implementation in Reference App. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)" diff --git a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_4.yaml b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_4.yaml index 039d0bfbf8556b..7e225c5f789109 100644 --- a/src/app/tests/suites/certification/Test_TC_OPSTATE_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPSTATE_2_4.yaml @@ -32,7 +32,7 @@ tests: - label: "Step 2: Set up a subscription to the OperationalError event" PICS: OPSTATE.S.E00 verification: | - + ./chip-tool operationalstate subscribe operational-error 5 15 1 1 disabled: true - label: @@ -40,15 +40,18 @@ tests: OperationalError event" PICS: OPSTATE.S.E00 verification: | - Receive an Notify event containing an ErrorState struct populated as follows: - An ErrorStateID that shall contain an enum 8. Verify the ErrorStateID is a defined error (NoError(0x00), UnableToStartOrResume(0x01), UnableToCompleteOperation(0x02), CommandInvalidInState(0x03)) or in the range 0x8000 to 0xBFFF. - If the ErrorStateID is in the range 0x8000 to 0xBFFF, then an ErrorStateLabel that is a human readable string. - If the ErrorStateId is not in the range 0x8000 to 0xBFFF then no ErrorStateLabel shall be present. - Optionally an ErrorStateDetails. If present, this shall be a human readable string. + After the subscription interval via the TH (chip-tool) verify: + - reception of an OperationalError Event + - ErrorStateID is a defined error + - If the ErrorStateID is manufacturer specific, inclusion of an ErrorStateLabel, not present otherwise + - Optionally an ErrorStateDetails disabled: true - label: "Step 4: TH reads from the DUT the OperationalState attribute" PICS: OPSTATE.S.A0004 verification: | - Verify that the DUT response contains an enum8 set to Error(0x03). + ./chip-tool operationalstate read operational-state 1 1 + + Via the TH (chip-tool), verify: + - the response has an OperationalStateID field that is set to 0x03 (Error) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_OZCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_OZCONC_1_1.yaml index ea9734d4ef9a4c..3cc04f15d736cf 100644 --- a/src/app/tests/suites/certification/Test_TC_OZCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_OZCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: OZCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !OZCONC.S.F00 && !OZCONC.S.F01 && !OZCONC.S.F02 && !OZCONC.S.F03 && + !OZCONC.S.F04 && !OZCONC.S.F05" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given OZCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && OZCONC.S.F00 + PICS: OZCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && !OZCONC.S.F00 + PICS: " !OZCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && OZCONC.S.F01 + PICS: OZCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && !OZCONC.S.F01 + PICS: " !OZCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && OZCONC.S.F02 + PICS: OZCONC.S.F02 && OZCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && !OZCONC.S.F02 + PICS: " !OZCONC.S.F02 && !OZCONC.S.F01" response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && OZCONC.S.F03 + PICS: OZCONC.S.F03 && OZCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && !OZCONC.S.F03 + PICS: " !OZCONC.S.F03 && !OZCONC.S.F01 " response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && OZCONC.S.F04 + PICS: OZCONC.S.F04 && OZCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && !OZCONC.S.F04 + PICS: " !OZCONC.S.F04 && !OZCONC.S.F00" response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && OZCONC.S.F05 + PICS: OZCONC.S.F05 && OZCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: OZCONC.S.Afffc && !OZCONC.S.F05 + PICS: " !OZCONC.S.F05 && !OZCONC.S.F00 " response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && OZCONC.S.A0007 && OZCONC.S.F00 + PICS: OZCONC.S.A0007 && OZCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when OZCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && !OZCONC.S.A0007 + PICS: " !OZCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && OZCONC.S.F00 + PICS: OZCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when OZCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && !OZCONC.S.F00 + PICS: " !OZCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && OZCONC.S.F04 + PICS: OZCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when OZCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && !OZCONC.S.F04 + PICS: " !OZCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && OZCONC.S.F05 + PICS: OZCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: OZCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && !OZCONC.S.F05 + PICS: " !OZCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && OZCONC.S.F01 + PICS: OZCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: OZCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: OZCONC.S.Afffb && !OZCONC.S.F01 + PICS: " !OZCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: OZCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: OZCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_PCC_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PCC_3_1_Simulated.yaml deleted file mode 100644 index 3eb8f82c0146ff..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_PCC_3_1_Simulated.yaml +++ /dev/null @@ -1,494 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 15.1.1. [TC-PCC-3.1] Global attributes with server as DUT - -PICS: - - PCC.C - - PCC.C.AM-READ - - PCC.C.AO-READ - - PCC.C.AM-WRITE - - PCC.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Pump Configuration and Control" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - #Read Mandatory attributes - - label: "Read attribute MaxPressure" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "MaxPressure" - - - label: "Read attribute MaxSpeed" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "MaxSpeed" - - - label: "Read attribute MaxFlow" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "MaxFlow" - - - label: "Read attribute EffectiveOperationMode" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "EffectiveOperationMode" - - - label: "Read attribute EffectiveControlMode" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "EffectiveControlMode" - - - label: "Read attribute Capacity" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "Capacity" - - - label: "Read attribute OperationMode" - PICS: PCC.C.AM-READ - wait: "readAttribute" - attribute: "OperationMode" - - #Read Optional attributes - - label: "Read attribute MinConstPressure" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MinConstPressure" - - - label: "Read attribute MaxConstPressure" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MaxConstPressure" - - - label: "Read attribute MinCompPressure" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MinCompPressure" - - - label: "Read attribute MaxCompPressure" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MaxCompPressure" - - - label: "Read attribute MinConstSpeed" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MinConstSpeed" - - - label: "Read attribute MaxConstSpeed" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MaxConstSpeed" - - - label: "Read attribute MinConstFlow" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MinConstFlow" - - - label: "Read attribute MaxConstFlow" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MaxConstFlow" - - - label: "Read attribute MinConstTemp" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MinConstTemp" - - - label: "Read attribute MaxConstTemp" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "MaxConstTemp" - - - label: "Read attribute PumpStatus" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "PumpStatus" - - - label: "Read attribute Speed" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "Speed" - - - label: "Read attribute LifetimeRunningHours" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "LifetimeRunningHours" - - - label: "Read attribute Power" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "Power" - - - label: "Read attribute LifetimeEnergyConsumed" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "LifetimeEnergyConsumed" - - - label: "Read attribute ControlMode" - PICS: PCC.C.AO-READ - wait: "readAttribute" - attribute: "ControlMode" - - #Write attributes - - label: "Write attribute LifetimeRunningHours" - PICS: PCC.C.AO-WRITE - wait: "writeAttribute" - attribute: "LifetimeRunningHours" - arguments: - value: - - - label: "Write attribute LifetimeEnergyConsumed" - PICS: PCC.C.AO-WRITE - wait: "writeAttribute" - attribute: "LifetimeEnergyConsumed" - arguments: - value: - - - label: "Write attribute OperationMode" - PICS: PCC.C.AO-WRITE - wait: "writeAttribute" - attribute: "OperationMode" - arguments: - value: - - - label: "Write attribute ControlMode" - PICS: PCC.C.AO-WRITE - wait: "writeAttribute" - attribute: "ControlMode" - arguments: - value: - - - 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: | - 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 pumpconfigurationandcontrol read attribute-list 1 1 - - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1660745892.540246][3657:3657] CHIP:IM: Received Read request - [1660745892.540323][3657:3657] CHIP:DMG: ReadRequestMessage = - [1660745892.540346][3657:3657] CHIP:DMG: { - [1660745892.540364][3657:3657] CHIP:DMG: AttributePathIBs = - [1660745892.540401][3657:3657] CHIP:DMG: [ - [1660745892.540422][3657:3657] CHIP:DMG: AttributePathIB = - [1660745892.540452][3657:3657] CHIP:DMG: { - [1660745892.540487][3657:3657] CHIP:DMG: Endpoint = 0x1, - [1660745892.540517][3657:3657] CHIP:DMG: Cluster = 0x200, - [1660745892.540556][3657:3657] CHIP:DMG: Attribute = 0x0000_FFFB, - [1660745892.540582][3657:3657] CHIP:DMG: } - [1660745892.540616][3657:3657] CHIP:DMG: - [1660745892.540638][3657:3657] CHIP:DMG: ], - [1660745892.540673][3657:3657] CHIP:DMG: - [1660745892.540696][3657:3657] CHIP:DMG: isFabricFiltered = true, - [1660745892.540726][3657:3657] CHIP:DMG: InteractionModelRevision = 1 - [1660745892.540747][3657:3657] CHIP:DMG: }, - [1660745892.540821][3657:3657] CHIP:DMG: IM RH moving to [GeneratingReports] - [1660745892.540929][3657:3657] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1660745892.540954][3657:3657] CHIP:DMG: Cluster 200, Attribute fffb is dirty - [1660745892.540982][3657:3657] CHIP:DMG: Reading attribute: Cluster=0x0000_0200 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) - - ./chip-tool pumpconfigurationandcontrol read feature-map 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1660745929.334567][3657:3657] CHIP:IM: Received Read request - [1660745929.334641][3657:3657] CHIP:DMG: ReadRequestMessage = - [1660745929.334677][3657:3657] CHIP:DMG: { - [1660745929.334696][3657:3657] CHIP:DMG: AttributePathIBs = - [1660745929.334728][3657:3657] CHIP:DMG: [ - [1660745929.334750][3657:3657] CHIP:DMG: AttributePathIB = - [1660745929.334778][3657:3657] CHIP:DMG: { - [1660745929.334814][3657:3657] CHIP:DMG: Endpoint = 0x1, - [1660745929.334853][3657:3657] CHIP:DMG: Cluster = 0x200, - [1660745929.334884][3657:3657] CHIP:DMG: Attribute = 0x0000_FFFC, - [1660745929.334920][3657:3657] CHIP:DMG: } - [1660745929.334947][3657:3657] CHIP:DMG: - [1660745929.334978][3657:3657] CHIP:DMG: ], - [1660745929.335006][3657:3657] CHIP:DMG: - [1660745929.335037][3657:3657] CHIP:DMG: isFabricFiltered = true, - [1660745929.335059][3657:3657] CHIP:DMG: InteractionModelRevision = 1 - [1660745929.335079][3657:3657] CHIP:DMG: }, - [1660745929.335155][3657:3657] CHIP:DMG: IM RH moving to [GeneratingReports] - [1660745929.335256][3657:3657] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1660745929.335291][3657:3657] CHIP:DMG: Cluster 200, Attribute fffc is dirty - [1660745929.335311][3657:3657] CHIP:DMG: Reading attribute: Cluster=0x0000_0200 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - - - - ./chip-tool pumpconfigurationandcontrol read max-pressure 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1651148412.273866][2336:2336] CHIP:IM: Received Read request - [1651148412.273922][2336:2336] CHIP:DMG: ReadRequestMessage = - [1651148412.273950][2336:2336] CHIP:DMG: { - [1651148412.273972][2336:2336] CHIP:DMG: AttributePathIBs = - [1651148412.273999][2336:2336] CHIP:DMG: [ - [1651148412.274024][2336:2336] CHIP:DMG: AttributePathIB = - [1651148412.274063][2336:2336] CHIP:DMG: { - [1651148412.274093][2336:2336] CHIP:DMG: Endpoint = 0x1, - [1651148412.274126][2336:2336] CHIP:DMG: Cluster = 0x200, - [1651148412.274156][2336:2336] CHIP:DMG: Attribute = 0x0000_0000, - [1651148412.274186][2336:2336] CHIP:DMG: } - [1651148412.274216][2336:2336] CHIP:DMG: - [1651148412.274242][2336:2336] CHIP:DMG: ], - [1651148412.274271][2336:2336] CHIP:DMG: - [1651148412.274298][2336:2336] CHIP:DMG: isFabricFiltered = true, - [1651148412.274325][2336:2336] CHIP:DMG: InteractionModelRevision = 1 - [1651148412.274349][2336:2336] CHIP:DMG: }, - [1651148412.274424][2336:2336] CHIP:DMG: IM RH moving to [GeneratingReports] - - ./chip-tool pumpconfigurationandcontrol read max-speed 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1651148440.471321][2336:2336] CHIP:IM: Received Read request - [1651148440.471389][2336:2336] CHIP:DMG: ReadRequestMessage = - [1651148440.471416][2336:2336] CHIP:DMG: { - [1651148440.471438][2336:2336] CHIP:DMG: AttributePathIBs = - [1651148440.471481][2336:2336] CHIP:DMG: [ - [1651148440.471507][2336:2336] CHIP:DMG: AttributePathIB = - [1651148440.471546][2336:2336] CHIP:DMG: { - [1651148440.471571][2336:2336] CHIP:DMG: Endpoint = 0x1, - [1651148440.471609][2336:2336] CHIP:DMG: Cluster = 0x200, - [1651148440.471642][2336:2336] CHIP:DMG: Attribute = 0x0000_0001, - [1651148440.471681][2336:2336] CHIP:DMG: } - [1651148440.471719][2336:2336] CHIP:DMG: - [1651148440.471745][2336:2336] CHIP:DMG: ], - [1651148440.471770][2336:2336] CHIP:DMG: - [1651148440.471806][2336:2336] CHIP:DMG: isFabricFiltered = true, - [1651148440.471831][2336:2336] CHIP:DMG: InteractionModelRevision = 1 - [1651148440.471867][2336:2336] CHIP:DMG: }, - [1651148440.471947][2336:2336] CHIP:DMG: IM RH moving to [GeneratingReports] - [1651148440.472042][2336:2336] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - - ./chip-tool pumpconfigurationandcontrol read max-flow 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1651148472.518933][2336:2336] CHIP:IM: Received Read request - [1651148472.518993][2336:2336] CHIP:DMG: ReadRequestMessage = - [1651148472.519023][2336:2336] CHIP:DMG: { - [1651148472.519071][2336:2336] CHIP:DMG: AttributePathIBs = - [1651148472.519104][2336:2336] CHIP:DMG: [ - [1651148472.519163][2336:2336] CHIP:DMG: AttributePathIB = - [1651148472.519218][2336:2336] CHIP:DMG: { - [1651148472.519286][2336:2336] CHIP:DMG: Endpoint = 0x1, - [1651148472.519328][2336:2336] CHIP:DMG: Cluster = 0x200, - [1651148472.519364][2336:2336] CHIP:DMG: Attribute = 0x0000_0002, - [1651148472.519400][2336:2336] CHIP:DMG: } - [1651148472.519459][2336:2336] CHIP:DMG: - [1651148472.519521][2336:2336] CHIP:DMG: ], - [1651148472.519555][2336:2336] CHIP:DMG: - [1651148472.519584][2336:2336] CHIP:DMG: isFabricFiltered = true, - [1651148472.519666][2336:2336] CHIP:DMG: InteractionModelRevision = 1 - [1651148472.519695][2336:2336] CHIP:DMG: }, - [1651148472.519802][2336:2336] CHIP:DMG: IM RH moving to [GeneratingReports] - [1651148472.519971][2336:2336] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - - ./chip-tool pumpconfigurationandcontrol read effective-operation-mode 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - - [1651570515.206834][9246:9246] CHIP:IM: Received Read request - [1651570515.206917][9246:9246] CHIP:DMG: ReadRequestMessage = - [1651570515.206966][9246:9246] CHIP:DMG: { - [1651570515.207006][9246:9246] CHIP:DMG: AttributePathIBs = - [1651570515.207053][9246:9246] CHIP:DMG: [ - [1651570515.207098][9246:9246] CHIP:DMG: AttributePathIB = - [1651570515.207154][9246:9246] CHIP:DMG: { - [1651570515.207210][9246:9246] CHIP:DMG: Endpoint = 0x1, - [1651570515.207265][9246:9246] CHIP:DMG: Cluster = 0x200, - [1651570515.207322][9246:9246] CHIP:DMG: Attribute = 0x0000_0011, - [1651570515.207381][9246:9246] CHIP:DMG: } - [1651570515.207436][9246:9246] CHIP:DMG: - [1651570515.207483][9246:9246] CHIP:DMG: ], - [1651570515.207535][9246:9246] CHIP:DMG: - [1651570515.207587][9246:9246] CHIP:DMG: isFabricFiltered = true, - [1651570515.207634][9246:9246] CHIP:DMG: InteractionModelRevision = 1 - [1651570515.207677][9246:9246] CHIP:DMG: } - - ./chip-tool pumpconfigurationandcontrol read effective-control-mode 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1651570975.559213][9246:9246] CHIP:IM: Received Read request - [1651570975.559268][9246:9246] CHIP:DMG: ReadRequestMessage = - [1651570975.559295][9246:9246] CHIP:DMG: { - [1651570975.559317][9246:9246] CHIP:DMG: AttributePathIBs = - [1651570975.559343][9246:9246] CHIP:DMG: [ - [1651570975.559367][9246:9246] CHIP:DMG: AttributePathIB = - [1651570975.559400][9246:9246] CHIP:DMG: { - [1651570975.559428][9246:9246] CHIP:DMG: Endpoint = 0x1, - [1651570975.559465][9246:9246] CHIP:DMG: Cluster = 0x200, - [1651570975.559602][9246:9246] CHIP:DMG: Attribute = 0x0000_0012, - [1651570975.559626][9246:9246] CHIP:DMG: } - [1651570975.559655][9246:9246] CHIP:DMG: - [1651570975.559681][9246:9246] CHIP:DMG: ], - [1651570975.559710][9246:9246] CHIP:DMG: - - ./chip-tool pumpconfigurationandcontrol read capacity 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1651571009.295069][9246:9246] CHIP:IM: Received Read request - [1651571009.295158][9246:9246] CHIP:DMG: ReadRequestMessage = - [1651571009.295203][9246:9246] CHIP:DMG: { - [1651571009.295244][9246:9246] CHIP:DMG: AttributePathIBs = - [1651571009.295293][9246:9246] CHIP:DMG: [ - [1651571009.295339][9246:9246] CHIP:DMG: AttributePathIB = - [1651571009.295387][9246:9246] CHIP:DMG: { - [1651571009.295438][9246:9246] CHIP:DMG: Endpoint = 0x1, - [1651571009.295493][9246:9246] CHIP:DMG: Cluster = 0x200, - [1651571009.295548][9246:9246] CHIP:DMG: Attribute = 0x0000_0013, - [1651571009.295597][9246:9246] CHIP:DMG: } - [1651571009.295649][9246:9246] CHIP:DMG: - [1651571009.295696][9246:9246] CHIP:DMG: ], - [1651571009.295747][9246:9246] CHIP:DMG: - - ./chip-tool pumpconfigurationandcontrol read operation-mode 1 1 - - verify on TH all-cluster-app receives the right ReadRequest for the data sent in the above command - - [1651571334.617100][9337:9337] CHIP:IM: Received Read request - [1651571334.617155][9337:9337] CHIP:DMG: ReadRequestMessage = - [1651571334.617181][9337:9337] CHIP:DMG: { - [1651571334.617213][9337:9337] CHIP:DMG: AttributePathIBs = - [1651571334.617250][9337:9337] CHIP:DMG: [ - [1651571334.617291][9337:9337] CHIP:DMG: AttributePathIB = - [1651571334.617338][9337:9337] CHIP:DMG: { - [1651571334.617368][9337:9337] CHIP:DMG: Endpoint = 0x1, - [1651571334.617404][9337:9337] CHIP:DMG: Cluster = 0x200, - [1651571334.617433][9337:9337] CHIP:DMG: Attribute = 0x0000_0020, - [1651571334.617467][9337:9337] CHIP:DMG: } - [1651571334.617499][9337:9337] CHIP:DMG: - [1651571334.617537][9337:9337] CHIP:DMG: ], - [1651571334.617567][9337:9337] CHIP:DMG: " - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - 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 pumpconfigurationandcontrol read min-const-pressure 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read max-const-pressure 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read min-comp-pressure 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read max-comp-pressure 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read min-const-speed 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read max-const-speed 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read min-const-flow 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool pumpconfigurationandcontrol read min-const-flow 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read max-const-flow 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read min-const-temp 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read max-const-temp 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read pump-status 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read speed 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read lifetime-running-hours 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read power 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read lifetime-energy-consumed 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol read control-mode 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT writes a suitable value to all supported optional attributes on - the TH one at a time in a manufacturer specific order" - 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 pumpconfigurationandcontrol write control-mode 0 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol write lifetime-running-hours 1 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool pumpconfigurationandcontrol write lifetime-energy-consumed 1 1 1 - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_PMHCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_PMHCONC_1_1.yaml index 11d21ffafccd24..e514d3e4a5ffc3 100644 --- a/src/app/tests/suites/certification/Test_TC_PMHCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PMHCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: PMHCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !PMHCONC.S.F00 && !PMHCONC.S.F01 && !PMHCONC.S.F02 && !PMHCONC.S.F03 + && !PMHCONC.S.F04 && !PMHCONC.S.F05" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given PMHCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && PMHCONC.S.F00 + PICS: PMHCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && !PMHCONC.S.F00 + PICS: " !PMHCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && PMHCONC.S.F01 + PICS: PMHCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && !PMHCONC.S.F01 + PICS: " !PMHCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && PMHCONC.S.F02 + PICS: PMHCONC.S.F02 && PMHCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && !PMHCONC.S.F02 + PICS: " !PMHCONC.S.F02 && !PMHCONC.S.F01" response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && PMHCONC.S.F03 + PICS: PMHCONC.S.F03 && PMHCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && !PMHCONC.S.F03 + PICS: " !PMHCONC.S.F03 && !PMHCONC.S.F01 " response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && PMHCONC.S.F04 + PICS: PMHCONC.S.F04 && PMHCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && !PMHCONC.S.F04 + PICS: " !PMHCONC.S.F04 && PMHCONC.S.F00 " response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && PMHCONC.S.F05 + PICS: PMHCONC.S.F05 && PMHCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMHCONC.S.Afffc && !PMHCONC.S.F05 + PICS: " !PMHCONC.S.F05 && !PMHCONC.S.F00" response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && PMHCONC.S.A0007 && PMHCONC.S.F00 + PICS: PMHCONC.S.A0007 && PMHCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when PMHCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && !PMHCONC.S.A0007 + PICS: " !PMHCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && PMHCONC.S.F00 + PICS: PMHCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when PMHCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && !PMHCONC.S.F00 + PICS: " !PMHCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && PMHCONC.S.F04 + PICS: PMHCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when PMHCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && !PMHCONC.S.F04 + PICS: " !PMHCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && PMHCONC.S.F05 + PICS: PMHCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: PMHCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && !PMHCONC.S.F05 + PICS: " !PMHCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && PMHCONC.S.F01 + PICS: PMHCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: PMHCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMHCONC.S.Afffb && !PMHCONC.S.F01 + PICS: " !PMHCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: PMHCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: PMHCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_PMICONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_PMICONC_1_1.yaml index 1f453a6665ff74..7e1a627a869fde 100644 --- a/src/app/tests/suites/certification/Test_TC_PMICONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PMICONC_1_1.yaml @@ -34,7 +34,6 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: PMICONC.S.Afffd response: value: 3 constraints: @@ -44,21 +43,22 @@ tests: - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !PMICONC.S.F00 && !PMICONC.S.F01 && !PMICONC.S.F02 && !PMICONC.S.F03 + && !PMICONC.S.F04 && !PMICONC.S.F05 " command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given PMICONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && PMICONC.S.F00 + PICS: PMICONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +69,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && !PMICONC.S.F00 + PICS: " !PMICONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +80,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && PMICONC.S.F01 + PICS: PMICONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +91,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && !PMICONC.S.F01 + PICS: " !PMICONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +102,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && PMICONC.S.F02 + PICS: PMICONC.S.F02 && PMICONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +113,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && !PMICONC.S.F02 + PICS: " !PMICONC.S.F02 && !PMICONC.S.F01" response: constraints: type: bitmap32 @@ -124,7 +124,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && PMICONC.S.F03 + PICS: PMICONC.S.F03 && PMICONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +135,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && !PMICONC.S.F03 + PICS: " !PMICONC.S.F03 && !PMICONC.S.F01" response: constraints: type: bitmap32 @@ -146,7 +146,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && PMICONC.S.F04 + PICS: PMICONC.S.F04 && PMICONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +157,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && !PMICONC.S.F04 + PICS: " !PMICONC.S.F04 && !PMICONC.S.F00 " response: constraints: type: bitmap32 @@ -168,7 +168,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && PMICONC.S.F05 + PICS: PMICONC.S.F05 && PMICONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +179,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMICONC.S.Afffc && !PMICONC.S.F05 + PICS: " !PMICONC.S.F05 && !PMICONC.S.F00" response: constraints: type: bitmap32 @@ -188,7 +188,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +197,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +206,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && PMICONC.S.A0007 && PMICONC.S.F00 + PICS: PMICONC.S.A0007 && PMICONC.S.F00 response: constraints: type: list @@ -217,7 +217,7 @@ tests: AttributeList when PMICONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && !PMICONC.S.A0007 + PICS: " !PMICONC.S.A0007 " response: constraints: type: list @@ -229,7 +229,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && PMICONC.S.F00 + PICS: PMICONC.S.F00 response: constraints: type: list @@ -241,7 +241,7 @@ tests: AttributeList when PMICONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && !PMICONC.S.F00 + PICS: " !PMICONC.S.F00 " response: constraints: type: list @@ -252,7 +252,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && PMICONC.S.F04 + PICS: PMICONC.S.F04 response: constraints: type: list @@ -263,7 +263,7 @@ tests: excluded from AttributeList when PMICONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && !PMICONC.S.F04 + PICS: " !PMICONC.S.F04 " response: constraints: type: list @@ -274,7 +274,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && PMICONC.S.F05 + PICS: PMICONC.S.F05 response: constraints: type: list @@ -286,7 +286,7 @@ tests: PMICONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && !PMICONC.S.F05 + PICS: " !PMICONC.S.F05 " response: constraints: type: list @@ -297,7 +297,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && PMICONC.S.F01 + PICS: PMICONC.S.F01 response: constraints: type: list @@ -308,7 +308,7 @@ tests: PMICONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMICONC.S.Afffb && !PMICONC.S.F01 + PICS: " !PMICONC.S.F01 " response: constraints: type: list @@ -317,7 +317,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +326,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: PMICONC.S.Afff9 response: value: [] constraints: @@ -335,7 +334,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: PMICONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_PMKCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_PMKCONC_1_1.yaml index cb6e896865502e..6c3ebb0be05870 100644 --- a/src/app/tests/suites/certification/Test_TC_PMKCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PMKCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: PMKCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !PMKCONC.S.F00 && !PMKCONC.S.F01 && !PMKCONC.S.F02 && !PMKCONC.S.F03 + && !PMKCONC.S.F04 && !PMKCONC.S.F05 " command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given PMKCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && PMKCONC.S.F00 + PICS: PMKCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && !PMKCONC.S.F00 + PICS: " !PMKCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && PMKCONC.S.F01 + PICS: PMKCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && !PMKCONC.S.F01 + PICS: " !PMKCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && PMKCONC.S.F02 + PICS: PMKCONC.S.F02 && PMKCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && !PMKCONC.S.F02 + PICS: " !PMKCONC.S.F02 && !PMKCONC.S.F01 " response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && PMKCONC.S.F03 + PICS: PMKCONC.S.F03 && PMKCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && !PMKCONC.S.F03 + PICS: " !PMKCONC.S.F03 && !PMKCONC.S.F01" response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && PMKCONC.S.F04 + PICS: PMKCONC.S.F04 && PMKCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && !PMKCONC.S.F04 + PICS: " !PMKCONC.S.F04 && !PMKCONC.S.F00 " response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && PMKCONC.S.F05 + PICS: PMKCONC.S.F05 && PMKCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: PMKCONC.S.Afffc && !PMKCONC.S.F05 + PICS: " !PMKCONC.S.F05 && !PMKCONC.S.F00" response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && PMKCONC.S.A0007 && PMKCONC.S.F00 + PICS: PMKCONC.S.A0007 && PMKCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when PMKCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && !PMKCONC.S.A0007 + PICS: " !PMKCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && PMKCONC.S.F00 + PICS: PMKCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when PMKCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && !PMKCONC.S.F00 + PICS: " !PMKCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && PMKCONC.S.F04 + PICS: PMKCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when PMKCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && !PMKCONC.S.F04 + PICS: " !PMKCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && PMKCONC.S.F05 + PICS: PMKCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: PMKCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && !PMKCONC.S.F05 + PICS: " !PMKCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && PMKCONC.S.F01 + PICS: PMKCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: PMKCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: PMKCONC.S.Afffb && !PMKCONC.S.F01 + PICS: " !PMKCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: PMKCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: PMKCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml deleted file mode 100644 index 776359626600fa..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml +++ /dev/null @@ -1,264 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 34.3.1. [TC-PRS-3.1] Attributes with Client as DUT - -PICS: - - PRS.C - - PRS.C.AM-READ - - PRS.C.AO-READ - - PRS.C.AM-WRITE - - PRS.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Pressure Measurement" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: MeasuredValue" - PICS: PRS.C.AM-READ - wait: "readAttribute" - attribute: "MeasuredValue" - - - label: "Read attribute: MinMeasuredValue" - PICS: PRS.C.AM-READ - wait: "readAttribute" - attribute: "MinMeasuredValue" - - - label: "Read attribute: MaxMeasuredValue" - PICS: PRS.C.AM-READ - wait: "readAttribute" - attribute: "MaxMeasuredValue" - - - label: "Read attribute: Tolerance" - PICS: PRS.C.AO-READ - wait: "readAttribute" - attribute: "Tolerance" - - - label: "Read attribute: ScaledValue" - PICS: PRS.C.AO-READ - wait: "readAttribute" - attribute: "ScaledValue" - - - label: "Read attribute: MinScaledValue" - PICS: PRS.C.AO-READ - wait: "readAttribute" - attribute: "MinScaledValue" - - - label: "Read attribute: MaxScaledValue" - PICS: PRS.C.AO-READ - wait: "readAttribute" - attribute: "MaxScaledValue" - - - label: "Read attribute: ScaledTolerance" - PICS: PRS.C.AO-READ - wait: "readAttribute" - attribute: "ScaledTolerance" - - - label: "Read attribute: Scale" - PICS: PRS.C.AO-READ - wait: "readAttribute" - attribute: "Scale" - - - 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: | - 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) - - - TH receives the read command and knows this attribute for this cluster and provides a plausable value, DUT processes the values and operates normally - - ./chip-tool pressuremeasurement read feature-map 1 1 - - verify the " feature-map response" on the TH (all-cluster-minimal-app) log: - - [1678873303.474810][348369:348369] CHIP:EM: Handling via exchange: 59017r, Delegate: 0x55713c07aca8 - [1678873303.474829][348369:348369] CHIP:IM: Received Read request - [1678873303.474872][348369:348369] CHIP:DMG: ReadRequestMessage = - [1678873303.474880][348369:348369] CHIP:DMG: { - [1678873303.474885][348369:348369] CHIP:DMG: AttributePathIBs = - [1678873303.474894][348369:348369] CHIP:DMG: [ - [1678873303.474900][348369:348369] CHIP:DMG: AttributePathIB = - [1678873303.474908][348369:348369] CHIP:DMG: { - [1678873303.474915][348369:348369] CHIP:DMG: Endpoint = 0x1, - [1678873303.474922][348369:348369] CHIP:DMG: Cluster = 0x403, - [1678873303.474930][348369:348369] CHIP:DMG: Attribute = 0x0000_FFFC, - [1678873303.474936][348369:348369] CHIP:DMG: } - [1678873303.474944][348369:348369] CHIP:DMG: - [1678873303.474950][348369:348369] CHIP:DMG: ], - [1678873303.474959][348369:348369] CHIP:DMG: - [1678873303.474966][348369:348369] CHIP:DMG: isFabricFiltered = true, - [1678873303.474972][348369:348369] CHIP:DMG: InteractionModelRevision = 1 - [1678873303.474978][348369:348369] CHIP:DMG: }, - [1678873303.475012][348369:348369] CHIP:DMG: IM RH moving to [GeneratingReports] - [1678873303.475045][348369:348369] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1678873303.475054][348369:348369] CHIP:DMG: Cluster 403, Attribute fffc is dirty - - ./chip-tool pressuremeasurement read attribute-list 1 1 - - verify the " attribute-list response" on the TH (all-cluster-minimal-app) log: - - [1659606175.282588][7312:7312] CHIP:EM: Handling via exchange: 12368r, Delegate: 0xaaaaad2c4f68 - [1659606175.282635][7312:7312] CHIP:IM: Received Read request - [1659606175.282718][7312:7312] CHIP:DMG: ReadRequestMessage = - [1659606175.282746][7312:7312] CHIP:DMG: { - [1659606175.282768][7312:7312] CHIP:DMG: AttributePathIBs = - [1659606175.282794][7312:7312] CHIP:DMG: [ - [1659606175.282818][7312:7312] CHIP:DMG: AttributePathIB = - [1659606175.282846][7312:7312] CHIP:DMG: { - [1659606175.282874][7312:7312] CHIP:DMG: Endpoint = 0x1, - [1659606175.282910][7312:7312] CHIP:DMG: Cluster = 0x403, - [1659606175.282946][7312:7312] CHIP:DMG: Attribute = 0x0000_FFFB, - [1659606175.282975][7312:7312] CHIP:DMG: } - [1659606175.283004][7312:7312] CHIP:DMG: - [1659606175.283029][7312:7312] CHIP:DMG: ], - [1659606175.283056][7312:7312] CHIP:DMG: - [1659606175.283083][7312:7312] CHIP:DMG: isFabricFiltered = true, - [1659606175.283108][7312:7312] CHIP:DMG: InteractionModelRevision = 1 - [1659606175.283132][7312:7312] CHIP:DMG: }, - [1659606175.283211][7312:7312] CHIP:DMG: IM RH moving to [GeneratingReports] - [1659606175.283312][7312:7312] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1659606175.283343][7312:7312] CHIP:DMG: Cluster 403, Attribute fffb is dirty - [1659606175.283364][7312:7312] CHIP:DMG: Reading attribute: Cluster=0x0000_0403 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) - - - - - ./chip-tool pressuremeasurement read measured-value 1 1 - - verify the " measured-value response" on the TH (all-cluster-minimal-app) log: - - [1653992317.047323][2347:2347] CHIP:IM: Received Read request - [1653992317.047382][2347:2347] CHIP:DMG: ReadRequestMessage = - [1653992317.047457][2347:2347] CHIP:DMG: { - [1653992317.047480][2347:2347] CHIP:DMG: AttributePathIBs = - [1653992317.047507][2347:2347] CHIP:DMG: [ - [1653992317.047531][2347:2347] CHIP:DMG: AttributePathIB = - [1653992317.047563][2347:2347] CHIP:DMG: { - [1653992317.047592][2347:2347] CHIP:DMG: Endpoint = 0x1, - [1653992317.047657][2347:2347] CHIP:DMG: Cluster = 0x403, - [1653992317.047695][2347:2347] CHIP:DMG: Attribute = 0x0000_0000, - [1653992317.047725][2347:2347] CHIP:DMG: } - [1653992317.047774][2347:2347] CHIP:DMG: - [1653992317.047803][2347:2347] CHIP:DMG: ], - [1653992317.047831][2347:2347] CHIP:DMG: - [1653992317.047859][2347:2347] CHIP:DMG: isFabricFiltered = true, - [1653992317.047884][2347:2347] CHIP:DMG: InteractionModelRevision = 1 - [1653992317.047908][2347:2347] CHIP:DMG: }, - [1653992317.047995][2347:2347] CHIP:DMG: IM RH moving to [GeneratingReports] - - ./chip-tool pressuremeasurement read min-measured-value 1 1 - - verify the " min-measured-value response" on the TH (all-cluster-minimal-app) log: - - [1653992385.759474][2347:2347] CHIP:IM: Received Read request - [1653992385.759533][2347:2347] CHIP:DMG: ReadRequestMessage = - [1653992385.759561][2347:2347] CHIP:DMG: { - [1653992385.759584][2347:2347] CHIP:DMG: AttributePathIBs = - [1653992385.759618][2347:2347] CHIP:DMG: [ - [1653992385.759647][2347:2347] CHIP:DMG: AttributePathIB = - [1653992385.759678][2347:2347] CHIP:DMG: { - [1653992385.759745][2347:2347] CHIP:DMG: Endpoint = 0x1, - [1653992385.759781][2347:2347] CHIP:DMG: Cluster = 0x403, - [1653992385.759859][2347:2347] CHIP:DMG: Attribute = 0x0000_0001, - [1653992385.759918][2347:2347] CHIP:DMG: } - [1653992385.759971][2347:2347] CHIP:DMG: - [1653992385.760000][2347:2347] CHIP:DMG: ], - [1653992385.760049][2347:2347] CHIP:DMG: - [1653992385.760100][2347:2347] CHIP:DMG: isFabricFiltered = true, - [1653992385.760125][2347:2347] CHIP:DMG: InteractionModelRevision = 1 - [1653992385.760168][2347:2347] CHIP:DMG: }, - - - ./chip-tool pressuremeasurement read max-measured-value 1 1 - - verify the " max-measured-value response" on the TH (all-cluster-minimal-app) log: - - [1653992415.580348][2347:2347] CHIP:IM: Received Read request - [1653992415.580414][2347:2347] CHIP:DMG: ReadRequestMessage = - [1653992415.580442][2347:2347] CHIP:DMG: { - [1653992415.580473][2347:2347] CHIP:DMG: AttributePathIBs = - [1653992415.580501][2347:2347] CHIP:DMG: [ - [1653992415.580534][2347:2347] CHIP:DMG: AttributePathIB = - [1653992415.580563][2347:2347] CHIP:DMG: { - [1653992415.580602][2347:2347] CHIP:DMG: Endpoint = 0x1, - [1653992415.580674][2347:2347] CHIP:DMG: Cluster = 0x403, - [1653992415.580713][2347:2347] CHIP:DMG: Attribute = 0x0000_0002, - [1653992415.580746][2347:2347] CHIP:DMG: } - [1653992415.580786][2347:2347] CHIP:DMG: - [1653992415.580812][2347:2347] CHIP:DMG: ], - [1653992415.580852][2347:2347] CHIP:DMG: - [1653992415.580879][2347:2347] CHIP:DMG: isFabricFiltered = true, - [1653992415.580913][2347:2347] CHIP:DMG: InteractionModelRevision = 1 - [1653992415.580936][2347:2347] CHIP:DMG: }," - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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, if implemted we will get "General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" as output when we read following attributes. - - - 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) - - - TH receives the read command and knows this attribute for this cluster and provides a plausable value, DUT processes the values and operates normally - - ./chip-tool pressuremeasurement read tolerance 1 1 - ./chip-tool pressuremeasurement read scaled-value 1 1 - ./chip-tool pressuremeasurement read min-scaled-value 1 1 - ./chip-tool pressuremeasurement read max-scaled-value 1 1 - ./chip-tool pressuremeasurement read scaled-tolerance 1 1 - ./chip-tool pressuremeasurement read scale 1 1 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && PRS.C.AO-READ - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml b/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml index 87c749fe3fc8c7..d64c29714436f8 100644 --- a/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PS_3_1.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Project CHIP Authors +# Copyright (c) 2023 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. @@ -13,14 +13,10 @@ # 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: 62.3.1. [TC-PS-3.1] Attributes with client as DUT +name: 63.2.3. [TC-PS-3.1] Endpoint composition and EndpointList PICS: - - PS.C - - PS.C.AM-READ - - PS.C.AO-READ - - PS.C.AM-WRITE - - PS.C.AO-WRITE + - PS.S config: nodeId: 0x12344321 @@ -28,678 +24,62 @@ config: endpoint: 0 tests: - - label: "Note" - verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - - label: - "Step 1: DUT reads all supported mandatory attributes from TH one at a - time in a manufacturer specific order" - PICS: PS.C.AM-READ - 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 powersource read status 1 1 - Verify that TH recieves "status" attribute with value 0 on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - [1686318196.431501][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318196.431509][108731:108731] CHIP:DMG: { - [1686318196.431516][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318196.431531][108731:108731] CHIP:DMG: [ - [1686318196.431538][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318196.431552][108731:108731] CHIP:DMG: { - [1686318196.431560][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318196.431570][108731:108731] CHIP:DMG: { - [1686318196.431580][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318196.431590][108731:108731] CHIP:DMG: AttributePathIB = - [1686318196.431600][108731:108731] CHIP:DMG: { - [1686318196.431611][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318196.431621][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318196.431632][108731:108731] CHIP:DMG: Attribute = 0x0000_0000, - [1686318196.431641][108731:108731] CHIP:DMG: } - [1686318196.431653][108731:108731] CHIP:DMG: - [1686318196.431664][108731:108731] CHIP:DMG: Data = 0, - [1686318196.431672][108731:108731] CHIP:DMG: }, - [1686318196.431685][108731:108731] CHIP:DMG: - [1686318196.431693][108731:108731] CHIP:DMG: }, - [1686318196.431707][108731:108731] CHIP:DMG: - [1686318196.431713][108731:108731] CHIP:DMG: ], - [1686318196.431728][108731:108731] CHIP:DMG: - [1686318196.431736][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318196.431745][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318196.431752][108731:108731] CHIP:DMG: } - [1686318196.431761][108731:108731] CHIP:DMG: - [1686318196.431820][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318196.431829][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - ./chip-tool powersource read order 1 1 - Verify that TH recieves "order" attribute with value 2 on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - [1686318245.206127][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318245.206130][108731:108731] CHIP:DMG: { - [1686318245.206132][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318245.206137][108731:108731] CHIP:DMG: [ - [1686318245.206139][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318245.206145][108731:108731] CHIP:DMG: { - [1686318245.206147][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318245.206151][108731:108731] CHIP:DMG: { - [1686318245.206154][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318245.206157][108731:108731] CHIP:DMG: AttributePathIB = - [1686318245.206160][108731:108731] CHIP:DMG: { - [1686318245.206164][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318245.206167][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318245.206172][108731:108731] CHIP:DMG: Attribute = 0x0000_0001, - [1686318245.206175][108731:108731] CHIP:DMG: } - [1686318245.206178][108731:108731] CHIP:DMG: - [1686318245.206182][108731:108731] CHIP:DMG: Data = 2, - [1686318245.206185][108731:108731] CHIP:DMG: }, - [1686318245.206189][108731:108731] CHIP:DMG: - [1686318245.206192][108731:108731] CHIP:DMG: }, - [1686318245.206196][108731:108731] CHIP:DMG: - [1686318245.206199][108731:108731] CHIP:DMG: ], - [1686318245.206203][108731:108731] CHIP:DMG: - [1686318245.206206][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318245.206209][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318245.206211][108731:108731] CHIP:DMG: } - [1686318245.206214][108731:108731] CHIP:DMG: - [1686318245.206239][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318245.206243][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - - ./chip-tool powersource read description 1 1 - Verify that TH recieves "description" attribute with value B2 on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - [1686318263.400126][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318263.400128][108731:108731] CHIP:DMG: { - [1686318263.400129][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318263.400133][108731:108731] CHIP:DMG: [ - [1686318263.400134][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318263.400137][108731:108731] CHIP:DMG: { - [1686318263.400139][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318263.400142][108731:108731] CHIP:DMG: { - [1686318263.400144][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318263.400146][108731:108731] CHIP:DMG: AttributePathIB = - [1686318263.400148][108731:108731] CHIP:DMG: { - [1686318263.400150][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318263.400153][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318263.400155][108731:108731] CHIP:DMG: Attribute = 0x0000_0002, - [1686318263.400157][108731:108731] CHIP:DMG: } - [1686318263.400159][108731:108731] CHIP:DMG: - [1686318263.400162][108731:108731] CHIP:DMG: Data = "B2" (2 chars), - [1686318263.400164][108731:108731] CHIP:DMG: }, - [1686318263.400167][108731:108731] CHIP:DMG: - [1686318263.400169][108731:108731] CHIP:DMG: }, - [1686318263.400172][108731:108731] CHIP:DMG: - [1686318263.400173][108731:108731] CHIP:DMG: ], - [1686318263.400176][108731:108731] CHIP:DMG: - [1686318263.400178][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318263.400180][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318263.400182][108731:108731] CHIP:DMG: } - [1686318263.400183][108731:108731] CHIP:DMG: - [1686318263.400206][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318263.400209][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - ./chip-tool powersource read bat-charge-level 1 1 - Verify that TH recieves "bat-charge-level" attribute with value 0 on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - [1686318283.452914][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318283.452916][108731:108731] CHIP:DMG: { - [1686318283.452918][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318283.452921][108731:108731] CHIP:DMG: [ - [1686318283.452923][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318283.452926][108731:108731] CHIP:DMG: { - [1686318283.452928][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318283.452930][108731:108731] CHIP:DMG: { - [1686318283.452932][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318283.452934][108731:108731] CHIP:DMG: AttributePathIB = - [1686318283.452936][108731:108731] CHIP:DMG: { - [1686318283.452939][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318283.452941][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318283.452943][108731:108731] CHIP:DMG: Attribute = 0x0000_000E, - [1686318283.452945][108731:108731] CHIP:DMG: } - [1686318283.452948][108731:108731] CHIP:DMG: - [1686318283.452950][108731:108731] CHIP:DMG: Data = 0, - [1686318283.452952][108731:108731] CHIP:DMG: }, - [1686318283.452955][108731:108731] CHIP:DMG: - [1686318283.452957][108731:108731] CHIP:DMG: }, - [1686318283.452959][108731:108731] CHIP:DMG: - [1686318283.452961][108731:108731] CHIP:DMG: ], - [1686318283.452964][108731:108731] CHIP:DMG: - [1686318283.452966][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318283.452968][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318283.452969][108731:108731] CHIP:DMG: } - [1686318283.452971][108731:108731] CHIP:DMG: - [1686318283.452997][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318283.452999][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - ./chip-tool powersource read bat-replacement-needed 1 1 - Verify that TH recieves "bat-replacement-needed" attribute with value false on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - [1686318298.844920][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318298.844922][108731:108731] CHIP:DMG: { - [1686318298.844924][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318298.844927][108731:108731] CHIP:DMG: [ - [1686318298.844929][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318298.844932][108731:108731] CHIP:DMG: { - [1686318298.844934][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318298.844936][108731:108731] CHIP:DMG: { - [1686318298.844938][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318298.844940][108731:108731] CHIP:DMG: AttributePathIB = - [1686318298.844942][108731:108731] CHIP:DMG: { - [1686318298.844945][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318298.844947][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318298.844949][108731:108731] CHIP:DMG: Attribute = 0x0000_000F, - [1686318298.844951][108731:108731] CHIP:DMG: } - [1686318298.844954][108731:108731] CHIP:DMG: - [1686318298.844957][108731:108731] CHIP:DMG: Data = false, - [1686318298.844958][108731:108731] CHIP:DMG: }, - [1686318298.844961][108731:108731] CHIP:DMG: - [1686318298.844963][108731:108731] CHIP:DMG: }, - [1686318298.844966][108731:108731] CHIP:DMG: - [1686318298.844967][108731:108731] CHIP:DMG: ], - [1686318298.844970][108731:108731] CHIP:DMG: - [1686318298.844972][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318298.844974][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318298.844975][108731:108731] CHIP:DMG: } - [1686318298.844977][108731:108731] CHIP:DMG: - [1686318298.845011][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318298.845014][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686318298.845016][108731:108731] CHIP:DMG: IM RH moving to [AwaitingDestruction] - - - - ./chip-tool powersource read bat-replaceability 1 1 - Verify that TH recieves "bat-replaceability" attribute with value 0 on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - [1686318315.534100][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318315.534102][108731:108731] CHIP:DMG: { - [1686318315.534104][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318315.534107][108731:108731] CHIP:DMG: [ - [1686318315.534108][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318315.534112][108731:108731] CHIP:DMG: { - [1686318315.534113][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318315.534116][108731:108731] CHIP:DMG: { - [1686318315.534118][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318315.534120][108731:108731] CHIP:DMG: AttributePathIB = - [1686318315.534122][108731:108731] CHIP:DMG: { - [1686318315.534124][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318315.534126][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318315.534129][108731:108731] CHIP:DMG: Attribute = 0x0000_0010, - [1686318315.534131][108731:108731] CHIP:DMG: } - [1686318315.534133][108731:108731] CHIP:DMG: - [1686318315.534136][108731:108731] CHIP:DMG: Data = 0, - [1686318315.534138][108731:108731] CHIP:DMG: }, - [1686318315.534141][108731:108731] CHIP:DMG: - [1686318315.534142][108731:108731] CHIP:DMG: }, - [1686318315.534145][108731:108731] CHIP:DMG: - [1686318315.534147][108731:108731] CHIP:DMG: ], - [1686318315.534150][108731:108731] CHIP:DMG: - [1686318315.534152][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318315.534153][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318315.534155][108731:108731] CHIP:DMG: } - [1686318315.534157][108731:108731] CHIP:DMG: - [1686318315.534179][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318315.534181][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - disabled: true - - - label: - "Step 2: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order" - PICS: PS.C.AO-READ - verification: | - OPTIONAL ATTRIBUTES ARE NOT IMPLEMENTED IN SDK, If Implemented we will get the expected outcome that is value of below attributes as per Spec - - - ./chip-tool powersource read wired-assessed-input-voltage 1 1 - - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool powersource read wired-assessed-input-frequency 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read wired-current-type 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read wired-assessed-current 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read wired-nominal-voltage 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read wired-maximum-current 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read wired-present 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read active-wired-faults 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-voltage 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-percent-remaining 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-time-remaining 1 1 - - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-present 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read active-bat-faults 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-replacement-description 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-common-designation 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-ansidesignation 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-iecdesignation 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-approved-chemistry 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-capacity 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool powersource read bat-quantity 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-charge-state 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-time-to-full-charge 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-functional-while-charging 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read bat-charging-current 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - ./chip-tool powersource read active-bat-charge-faults 1 1 - Verify that TH recieves the above attribute read command and provides a plausible value on the TH (all-cluster-app) log and below is the sample log provided for the raspi platform: - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true - - label: - "Step 3: DUT writes a suitable value to all supported mandatory - attributes on the TH one at a time in a manufacturer specific order" - PICS: PS.C.AM-WRITE + "Step 1: TH performs a wildcard read of all attributes and endpoints" verification: | - This cluster doesn't have any writable attributes + TH(chip-tool) sends the wildcard read command to read all attributes and endpoints from DUT(Reference app/all-clusters-app) + ./chip-tool any read-by-id 0xFFFFFFFF 0xFFFFFFFF 1 0xFFFF disabled: true - label: - "Step 4: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order" - PICS: PS.C.AO-WRITE + "Step 2: For each power source cluster with a non-empty EndpointsList + attribute, verify that the endpoint exists on the device; also verify + that the EndpointsList attribute includes the endpoint on which the + cluster is located" verification: | - This cluster doesn't have any writable attributes + TH(chip-tool) sends the wildcard read command to read all attributes and endpoints from DUT(Reference app/all-clusters-app) + + ./chip-tool any read-by-id 0xFFFFFFFF 0xFFFFFFFF 1 0xFFFF + + [1690195509.133521][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_000F DataVersion: 2929707991 + [1690195509.133523][44004:44006] CHIP:TOO: BatReplacementNeeded: FALSE + [1690195509.133531][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_0010 DataVersion: 2929707991 + [1690195509.133534][44004:44006] CHIP:TOO: BatReplaceability: 0 + [1690195509.133549][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_001F DataVersion: 2929707991 + [1690195509.133556][44004:44006] CHIP:TOO: EndpointList: 0 entries + [1690195509.133558][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_FFFC DataVersion: 2929707991 + [1690195509.133560][44004:44006] CHIP:TOO: FeatureMap: 2 + + [1690195509.203569][44004:44006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_0010 DataVersion: 1378119001 + [1690195509.203572][44004:44006] CHIP:TOO: BatReplaceability: 0 + [1690195509.203587][44004:44006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_001F DataVersion: 1378119001 + [1690195509.203592][44004:44006] CHIP:TOO: EndpointList: 0 entries + [1690195509.203595][44004:44006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_FFFC DataVersion: 1378119001 + [1690195509.203597][44004:44006] CHIP:TOO: FeatureMap: 2 + + + [1690195509.133531][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_0010 DataVersion: 2929707991 + [1690195509.133534][44004:44006] CHIP:TOO: BatReplaceability: 0 + [1690195509.133549][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_001F DataVersion: 2929707991 + [1690195509.133556][44004:44006] CHIP:TOO: EndpointList: 0 entries + [1690195509.133558][44004:44006] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_FFFC DataVersion: 2929707991 + [1690195509.133560][44004:44006] CHIP:TOO: FeatureMap: 2 disabled: true - label: - "Step 5: 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" + "Step 3: For each power source cluster on an endpoint with the Bridged + Node device type, ensure the EndpointList in the Power Source cluster + includes all the endpoints listed in the PartsList of the Descriptor + cluster as well as its own endpoint id." 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 powersource read feature-map 1 1 - Verify that TH recieves "featuremap" attribute with value 0 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - [1686319169.359277][108977:108977] CHIP:DMG: ReportDataMessage = - [1686319169.359279][108977:108977] CHIP:DMG: { - [1686319169.359280][108977:108977] CHIP:DMG: AttributeReportIBs = - [1686319169.359283][108977:108977] CHIP:DMG: [ - [1686319169.359285][108977:108977] CHIP:DMG: AttributeReportIB = - [1686319169.359288][108977:108977] CHIP:DMG: { - [1686319169.359290][108977:108977] CHIP:DMG: AttributeDataIB = - [1686319169.359292][108977:108977] CHIP:DMG: { - [1686319169.359295][108977:108977] CHIP:DMG: DataVersion = 0xb60028fe, - [1686319169.359297][108977:108977] CHIP:DMG: AttributePathIB = - [1686319169.359299][108977:108977] CHIP:DMG: { - [1686319169.359301][108977:108977] CHIP:DMG: Endpoint = 0x1, - [1686319169.359303][108977:108977] CHIP:DMG: Cluster = 0x2f, - [1686319169.359306][108977:108977] CHIP:DMG: Attribute = 0x0000_FFFC, - [1686319169.359308][108977:108977] CHIP:DMG: } - [1686319169.359310][108977:108977] CHIP:DMG: - [1686319169.359313][108977:108977] CHIP:DMG: Data = 0, - [1686319169.359315][108977:108977] CHIP:DMG: }, - [1686319169.359318][108977:108977] CHIP:DMG: - [1686319169.359319][108977:108977] CHIP:DMG: }, - [1686319169.359322][108977:108977] CHIP:DMG: - [1686319169.359324][108977:108977] CHIP:DMG: ], - [1686319169.359327][108977:108977] CHIP:DMG: - [1686319169.359329][108977:108977] CHIP:DMG: SuppressResponse = true, - [1686319169.359331][108977:108977] CHIP:DMG: InteractionModelRevision = 1 - [1686319169.359332][108977:108977] CHIP:DMG: } - [1686319169.359334][108977:108977] CHIP:DMG: - [1686319169.359357][108977:108977] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686319169.359360][108977:108977] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - ./chip-tool powersource read attribute-list 1 1 - Verify that TH recieves "attribute list" attribute with value 0, 1, 2, 65528, 65529, 65530, 65531, 65532, 65533 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - [1686319262.503993][108977:108977] CHIP:DMG: ReportDataMessage = - [1686319262.503995][108977:108977] CHIP:DMG: { - [1686319262.503996][108977:108977] CHIP:DMG: AttributeReportIBs = - [1686319262.504001][108977:108977] CHIP:DMG: [ - [1686319262.504003][108977:108977] CHIP:DMG: AttributeReportIB = - [1686319262.504006][108977:108977] CHIP:DMG: { - [1686319262.504009][108977:108977] CHIP:DMG: AttributeDataIB = - [1686319262.504011][108977:108977] CHIP:DMG: { - [1686319262.504013][108977:108977] CHIP:DMG: DataVersion = 0xb60028fe, - [1686319262.504015][108977:108977] CHIP:DMG: AttributePathIB = - [1686319262.504017][108977:108977] CHIP:DMG: { - [1686319262.504019][108977:108977] CHIP:DMG: Endpoint = 0x1, - [1686319262.504022][108977:108977] CHIP:DMG: Cluster = 0x2f, - [1686319262.504024][108977:108977] CHIP:DMG: Attribute = 0x0000_FFFB, - [1686319262.504026][108977:108977] CHIP:DMG: } - [1686319262.504028][108977:108977] CHIP:DMG: - [1686319262.504031][108977:108977] CHIP:DMG: Data = [ - [1686319262.504036][108977:108977] CHIP:DMG: 0, 1, 2, 65528, 65529, 65530, 65531, 65532, 65533, - [1686319262.504038][108977:108977] CHIP:DMG: ], - [1686319262.504040][108977:108977] CHIP:DMG: }, - [1686319262.504043][108977:108977] CHIP:DMG: - [1686319262.504045][108977:108977] CHIP:DMG: }, - [1686319262.504049][108977:108977] CHIP:DMG: - [1686319262.504050][108977:108977] CHIP:DMG: ], - [1686319262.504054][108977:108977] CHIP:DMG: - [1686319262.504056][108977:108977] CHIP:DMG: SuppressResponse = true, - [1686319262.504058][108977:108977] CHIP:DMG: InteractionModelRevision = 1 - [1686319262.504060][108977:108977] CHIP:DMG: } - [1686319262.504061][108977:108977] CHIP:DMG: - [1686319262.504089][108977:108977] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686319262.504091][108977:108977] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - ./chip-tool powersource read status 1 1 - Verify that TH recieves "status" attribute with value 0 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - - [1686318196.431501][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318196.431509][108731:108731] CHIP:DMG: { - [1686318196.431516][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318196.431531][108731:108731] CHIP:DMG: [ - [1686318196.431538][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318196.431552][108731:108731] CHIP:DMG: { - [1686318196.431560][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318196.431570][108731:108731] CHIP:DMG: { - [1686318196.431580][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318196.431590][108731:108731] CHIP:DMG: AttributePathIB = - [1686318196.431600][108731:108731] CHIP:DMG: { - [1686318196.431611][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318196.431621][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318196.431632][108731:108731] CHIP:DMG: Attribute = 0x0000_0000, - [1686318196.431641][108731:108731] CHIP:DMG: } - [1686318196.431653][108731:108731] CHIP:DMG: - [1686318196.431664][108731:108731] CHIP:DMG: Data = 0, - [1686318196.431672][108731:108731] CHIP:DMG: }, - [1686318196.431685][108731:108731] CHIP:DMG: - [1686318196.431693][108731:108731] CHIP:DMG: }, - [1686318196.431707][108731:108731] CHIP:DMG: - [1686318196.431713][108731:108731] CHIP:DMG: ], - [1686318196.431728][108731:108731] CHIP:DMG: - [1686318196.431736][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318196.431745][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318196.431752][108731:108731] CHIP:DMG: } - [1686318196.431761][108731:108731] CHIP:DMG: - [1686318196.431820][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318196.431829][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - ./chip-tool powersource read order 1 1 - Verify that TH recieves "order" attribute with value 2 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - - [1686318245.206127][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318245.206130][108731:108731] CHIP:DMG: { - [1686318245.206132][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318245.206137][108731:108731] CHIP:DMG: [ - [1686318245.206139][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318245.206145][108731:108731] CHIP:DMG: { - [1686318245.206147][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318245.206151][108731:108731] CHIP:DMG: { - [1686318245.206154][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318245.206157][108731:108731] CHIP:DMG: AttributePathIB = - [1686318245.206160][108731:108731] CHIP:DMG: { - [1686318245.206164][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318245.206167][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318245.206172][108731:108731] CHIP:DMG: Attribute = 0x0000_0001, - [1686318245.206175][108731:108731] CHIP:DMG: } - [1686318245.206178][108731:108731] CHIP:DMG: - [1686318245.206182][108731:108731] CHIP:DMG: Data = 2, - [1686318245.206185][108731:108731] CHIP:DMG: }, - [1686318245.206189][108731:108731] CHIP:DMG: - [1686318245.206192][108731:108731] CHIP:DMG: }, - [1686318245.206196][108731:108731] CHIP:DMG: - [1686318245.206199][108731:108731] CHIP:DMG: ], - [1686318245.206203][108731:108731] CHIP:DMG: - [1686318245.206206][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318245.206209][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318245.206211][108731:108731] CHIP:DMG: } - [1686318245.206214][108731:108731] CHIP:DMG: - [1686318245.206239][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318245.206243][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - - ./chip-tool powersource read description 1 1 - Verify that TH recieves "description" attribute with value B2 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - [1686318263.400126][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318263.400128][108731:108731] CHIP:DMG: { - [1686318263.400129][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318263.400133][108731:108731] CHIP:DMG: [ - [1686318263.400134][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318263.400137][108731:108731] CHIP:DMG: { - [1686318263.400139][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318263.400142][108731:108731] CHIP:DMG: { - [1686318263.400144][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318263.400146][108731:108731] CHIP:DMG: AttributePathIB = - [1686318263.400148][108731:108731] CHIP:DMG: { - [1686318263.400150][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318263.400153][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318263.400155][108731:108731] CHIP:DMG: Attribute = 0x0000_0002, - [1686318263.400157][108731:108731] CHIP:DMG: } - [1686318263.400159][108731:108731] CHIP:DMG: - [1686318263.400162][108731:108731] CHIP:DMG: Data = "B2" (2 chars), - [1686318263.400164][108731:108731] CHIP:DMG: }, - [1686318263.400167][108731:108731] CHIP:DMG: - [1686318263.400169][108731:108731] CHIP:DMG: }, - [1686318263.400172][108731:108731] CHIP:DMG: - [1686318263.400173][108731:108731] CHIP:DMG: ], - [1686318263.400176][108731:108731] CHIP:DMG: - [1686318263.400178][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318263.400180][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318263.400182][108731:108731] CHIP:DMG: } - [1686318263.400183][108731:108731] CHIP:DMG: - [1686318263.400206][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318263.400209][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - - ./chip-tool powersource read bat-charge-level 1 1 - Verify that TH recieves "bat-charge-level" attribute with value 0 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - - [1686318283.452914][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318283.452916][108731:108731] CHIP:DMG: { - [1686318283.452918][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318283.452921][108731:108731] CHIP:DMG: [ - [1686318283.452923][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318283.452926][108731:108731] CHIP:DMG: { - [1686318283.452928][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318283.452930][108731:108731] CHIP:DMG: { - [1686318283.452932][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318283.452934][108731:108731] CHIP:DMG: AttributePathIB = - [1686318283.452936][108731:108731] CHIP:DMG: { - [1686318283.452939][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318283.452941][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318283.452943][108731:108731] CHIP:DMG: Attribute = 0x0000_000E, - [1686318283.452945][108731:108731] CHIP:DMG: } - [1686318283.452948][108731:108731] CHIP:DMG: - [1686318283.452950][108731:108731] CHIP:DMG: Data = 0, - [1686318283.452952][108731:108731] CHIP:DMG: }, - [1686318283.452955][108731:108731] CHIP:DMG: - [1686318283.452957][108731:108731] CHIP:DMG: }, - [1686318283.452959][108731:108731] CHIP:DMG: - [1686318283.452961][108731:108731] CHIP:DMG: ], - [1686318283.452964][108731:108731] CHIP:DMG: - [1686318283.452966][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318283.452968][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318283.452969][108731:108731] CHIP:DMG: } - [1686318283.452971][108731:108731] CHIP:DMG: - [1686318283.452997][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318283.452999][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - - - ./chip-tool powersource read bat-replacement-needed 1 1 - Verify that TH recieves "bat-replacement-needed" attribute with value false on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - - [1686318298.844920][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318298.844922][108731:108731] CHIP:DMG: { - [1686318298.844924][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318298.844927][108731:108731] CHIP:DMG: [ - [1686318298.844929][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318298.844932][108731:108731] CHIP:DMG: { - [1686318298.844934][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318298.844936][108731:108731] CHIP:DMG: { - [1686318298.844938][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318298.844940][108731:108731] CHIP:DMG: AttributePathIB = - [1686318298.844942][108731:108731] CHIP:DMG: { - [1686318298.844945][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318298.844947][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318298.844949][108731:108731] CHIP:DMG: Attribute = 0x0000_000F, - [1686318298.844951][108731:108731] CHIP:DMG: } - [1686318298.844954][108731:108731] CHIP:DMG: - [1686318298.844957][108731:108731] CHIP:DMG: Data = false, - [1686318298.844958][108731:108731] CHIP:DMG: }, - [1686318298.844961][108731:108731] CHIP:DMG: - [1686318298.844963][108731:108731] CHIP:DMG: }, - [1686318298.844966][108731:108731] CHIP:DMG: - [1686318298.844967][108731:108731] CHIP:DMG: ], - [1686318298.844970][108731:108731] CHIP:DMG: - [1686318298.844972][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318298.844974][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318298.844975][108731:108731] CHIP:DMG: } - [1686318298.844977][108731:108731] CHIP:DMG: - [1686318298.845011][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318298.845014][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1686318298.845016][108731:108731] CHIP:DMG: IM RH moving to [AwaitingDestruction] - - - - ./chip-tool powersource read bat-replaceability 1 1 - Verify that TH recieves "bat-replaceability" attribute with value 0 on the TH (all-clusters-minimal-app) log and below is the sample log provided for the raspi platform: - - [1686318315.534100][108731:108731] CHIP:DMG: ReportDataMessage = - [1686318315.534102][108731:108731] CHIP:DMG: { - [1686318315.534104][108731:108731] CHIP:DMG: AttributeReportIBs = - [1686318315.534107][108731:108731] CHIP:DMG: [ - [1686318315.534108][108731:108731] CHIP:DMG: AttributeReportIB = - [1686318315.534112][108731:108731] CHIP:DMG: { - [1686318315.534113][108731:108731] CHIP:DMG: AttributeDataIB = - [1686318315.534116][108731:108731] CHIP:DMG: { - [1686318315.534118][108731:108731] CHIP:DMG: DataVersion = 0x9b8b1ef2, - [1686318315.534120][108731:108731] CHIP:DMG: AttributePathIB = - [1686318315.534122][108731:108731] CHIP:DMG: { - [1686318315.534124][108731:108731] CHIP:DMG: Endpoint = 0x1, - [1686318315.534126][108731:108731] CHIP:DMG: Cluster = 0x2f, - [1686318315.534129][108731:108731] CHIP:DMG: Attribute = 0x0000_0010, - [1686318315.534131][108731:108731] CHIP:DMG: } - [1686318315.534133][108731:108731] CHIP:DMG: - [1686318315.534136][108731:108731] CHIP:DMG: Data = 0, - [1686318315.534138][108731:108731] CHIP:DMG: }, - [1686318315.534141][108731:108731] CHIP:DMG: - [1686318315.534142][108731:108731] CHIP:DMG: }, - [1686318315.534145][108731:108731] CHIP:DMG: - [1686318315.534147][108731:108731] CHIP:DMG: ], - [1686318315.534150][108731:108731] CHIP:DMG: - [1686318315.534152][108731:108731] CHIP:DMG: SuppressResponse = true, - [1686318315.534153][108731:108731] CHIP:DMG: InteractionModelRevision = 1 - [1686318315.534155][108731:108731] CHIP:DMG: } - [1686318315.534157][108731:108731] CHIP:DMG: - [1686318315.534179][108731:108731] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1686318315.534181][108731:108731] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages disabled: true - label: - "Step 6: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order" - PICS: PS.C.AO-READ + "Step 4: For each power source cluster on an endpoint that is a child + endpoint of an endpoint with a Bridged Node device type, ensure the + EndpointList in the Power Source cluster contains a list with one + entry that lists its own endpoint id" 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) - - - Verify TH(all-clusters-minimal-app) receives the read command, and responds that this attribute is not available and also DUT is aware that the optional attributes are not available, and does not issue read requests for the attributes which it did read in step 2 - - - ./chip-tool powersource read bat-charge-level 1 1 - - on TH all-clusters-minimal-app verify status response as UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool powersource read bat-replacement-needed 1 1 - - on TH all-clusters-minimal-app verify status response as UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - - - ./chip-tool powersource read bat-replaceability 1 1 - - on TH all-clusters-minimal-app verify status response as UNSUPPORTED_ATTRIBUTE - General error: 0x86 (UNSUPPORTED_ATTRIBUTE) - disabled: true - - - label: - "Step 7: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order" - PICS: PS.C.AO-WRITE - verification: | - This cluster doesn't have any writable attributes disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RH_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_RH_3_1_Simulated.yaml deleted file mode 100644 index e098e12f326d93..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_RH_3_1_Simulated.yaml +++ /dev/null @@ -1,399 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 10.3.1. [TC-RH-3.1] Attributes with Client as DUT - -PICS: - - RH.C - - RH.C.AM-READ - - RH.C.AO-READ - - RH.C.AM-WRITE - - RH.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Relative Humidity Measurement" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute MeasuredValue" - wait: "readAttribute" - attribute: "MeasuredValue" - - - label: "Read attribute MinMeasuredValue" - wait: "readAttribute" - attribute: "MinMeasuredValue" - - - label: "Read attribute MaxMeasuredValue" - wait: "readAttribute" - attribute: "MaxMeasuredValue" - - - label: "Read attribute Tolerance" - wait: "readAttribute" - attribute: "Tolerance" - - - 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 relativehumiditymeasurement read feature-map 1 1 - - verify TH recieves "feature-map response" on the TH (all-cluster-minimal-app) log: - - [1666943749.218050][12769:12769] CHIP:DMG: - [1666943749.218060][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943749.218062][12769:12769] CHIP:DMG: { - [1666943749.218064][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943749.218067][12769:12769] CHIP:DMG: [ - [1666943749.218069][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943749.218074][12769:12769] CHIP:DMG: { - [1666943749.218076][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943749.218078][12769:12769] CHIP:DMG: { - [1666943749.218081][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943749.218083][12769:12769] CHIP:DMG: AttributePathIB = - [1666943749.218086][12769:12769] CHIP:DMG: { - [1666943749.218088][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943749.218091][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943749.218093][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666943749.218095][12769:12769] CHIP:DMG: } - [1666943749.218098][12769:12769] CHIP:DMG: - [1666943749.218101][12769:12769] CHIP:DMG: Data = 0, - [1666943749.218103][12769:12769] CHIP:DMG: }, - [1666943749.218106][12769:12769] CHIP:DMG: - [1666943749.218108][12769:12769] CHIP:DMG: }, - [1666943749.218112][12769:12769] CHIP:DMG: - [1666943749.218114][12769:12769] CHIP:DMG: ], - [1666943749.218117][12769:12769] CHIP:DMG: - - - ./chip-tool relativehumiditymeasurement read attribute-list 1 1 - - verify TH recieves "attribute-list response" on the TH (all-cluster-minimal-app) log: - - [1666943792.254338][12769:12769] CHIP:DMG: - [1666943792.254369][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943792.254372][12769:12769] CHIP:DMG: { - [1666943792.254374][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943792.254378][12769:12769] CHIP:DMG: [ - [1666943792.254381][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254385][12769:12769] CHIP:DMG: { - [1666943792.254388][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254392][12769:12769] CHIP:DMG: { - [1666943792.254395][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254397][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254399][12769:12769] CHIP:DMG: { - [1666943792.254402][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254404][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254406][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254409][12769:12769] CHIP:DMG: } - [1666943792.254411][12769:12769] CHIP:DMG: - [1666943792.254414][12769:12769] CHIP:DMG: Data = [ - [1666943792.254418][12769:12769] CHIP:DMG: - [1666943792.254422][12769:12769] CHIP:DMG: ], - [1666943792.254424][12769:12769] CHIP:DMG: }, - [1666943792.254427][12769:12769] CHIP:DMG: - [1666943792.254430][12769:12769] CHIP:DMG: }, - [1666943792.254435][12769:12769] CHIP:DMG: - [1666943792.254437][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254441][12769:12769] CHIP:DMG: { - [1666943792.254443][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254446][12769:12769] CHIP:DMG: { - [1666943792.254449][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254453][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254456][12769:12769] CHIP:DMG: { - [1666943792.254459][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254463][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254465][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254470][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254473][12769:12769] CHIP:DMG: } - [1666943792.254477][12769:12769] CHIP:DMG: - [1666943792.254480][12769:12769] CHIP:DMG: Data = 0, - [1666943792.254483][12769:12769] CHIP:DMG: }, - [1666943792.254487][12769:12769] CHIP:DMG: - [1666943792.254489][12769:12769] CHIP:DMG: }, - [1666943792.254495][12769:12769] CHIP:DMG: - [1666943792.254497][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254501][12769:12769] CHIP:DMG: { - [1666943792.254504][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254506][12769:12769] CHIP:DMG: { - [1666943792.254509][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254513][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254516][12769:12769] CHIP:DMG: { - [1666943792.254519][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254522][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254525][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254527][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254530][12769:12769] CHIP:DMG: } - [1666943792.254534][12769:12769] CHIP:DMG: - [1666943792.254538][12769:12769] CHIP:DMG: Data = 1, - [1666943792.254540][12769:12769] CHIP:DMG: }, - [1666943792.254544][12769:12769] CHIP:DMG: - [1666943792.254546][12769:12769] CHIP:DMG: }, - [1666943792.254551][12769:12769] CHIP:DMG: - [1666943792.254553][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254557][12769:12769] CHIP:DMG: { - [1666943792.254559][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254562][12769:12769] CHIP:DMG: { - [1666943792.254565][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254569][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254571][12769:12769] CHIP:DMG: { - [1666943792.254573][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254576][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254578][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254580][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254582][12769:12769] CHIP:DMG: } - [1666943792.254586][12769:12769] CHIP:DMG: - [1666943792.254589][12769:12769] CHIP:DMG: Data = 2, - [1666943792.254592][12769:12769] CHIP:DMG: }, - [1666943792.254596][12769:12769] CHIP:DMG: - [1666943792.254598][12769:12769] CHIP:DMG: }, - [1666943792.254604][12769:12769] CHIP:DMG: - [1666943792.254606][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254610][12769:12769] CHIP:DMG: { - [1666943792.254612][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254615][12769:12769] CHIP:DMG: { - [1666943792.254618][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254621][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254624][12769:12769] CHIP:DMG: { - [1666943792.254627][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254630][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254633][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254635][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254638][12769:12769] CHIP:DMG: } - [1666943792.254642][12769:12769] CHIP:DMG: - [1666943792.254645][12769:12769] CHIP:DMG: Data = 65528, - [1666943792.254647][12769:12769] CHIP:DMG: }, - [1666943792.254651][12769:12769] CHIP:DMG: - [1666943792.254653][12769:12769] CHIP:DMG: }, - [1666943792.254658][12769:12769] CHIP:DMG: - [1666943792.254660][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254664][12769:12769] CHIP:DMG: { - [1666943792.254666][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254669][12769:12769] CHIP:DMG: { - [1666943792.254672][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254674][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254677][12769:12769] CHIP:DMG: { - [1666943792.254680][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254683][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254686][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254689][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254691][12769:12769] CHIP:DMG: } - [1666943792.254695][12769:12769] CHIP:DMG: - [1666943792.254698][12769:12769] CHIP:DMG: Data = 65529, - [1666943792.254700][12769:12769] CHIP:DMG: }, - [1666943792.254704][12769:12769] CHIP:DMG: - [1666943792.254707][12769:12769] CHIP:DMG: }, - [1666943792.254712][12769:12769] CHIP:DMG: - [1666943792.254714][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254718][12769:12769] CHIP:DMG: { - [1666943792.254720][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254723][12769:12769] CHIP:DMG: { - [1666943792.254726][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254729][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254732][12769:12769] CHIP:DMG: { - [1666943792.254735][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254738][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254740][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254743][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254746][12769:12769] CHIP:DMG: } - [1666943792.254750][12769:12769] CHIP:DMG: - [1666943792.254753][12769:12769] CHIP:DMG: Data = 65531, - [1666943792.254756][12769:12769] CHIP:DMG: }, - [1666943792.254759][12769:12769] CHIP:DMG: - [1666943792.254762][12769:12769] CHIP:DMG: }, - [1666943792.254767][12769:12769] CHIP:DMG: - [1666943792.254769][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254773][12769:12769] CHIP:DMG: { - [1666943792.254775][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254778][12769:12769] CHIP:DMG: { - [1666943792.254780][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254783][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254786][12769:12769] CHIP:DMG: { - [1666943792.254789][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254792][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254797][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254799][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254802][12769:12769] CHIP:DMG: } - [1666943792.254804][12769:12769] CHIP:DMG: - [1666943792.254807][12769:12769] CHIP:DMG: Data = 65532, - [1666943792.254809][12769:12769] CHIP:DMG: }, - [1666943792.254811][12769:12769] CHIP:DMG: - [1666943792.254813][12769:12769] CHIP:DMG: }, - [1666943792.254820][12769:12769] CHIP:DMG: - [1666943792.254822][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943792.254826][12769:12769] CHIP:DMG: { - [1666943792.254828][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943792.254831][12769:12769] CHIP:DMG: { - [1666943792.254833][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943792.254835][12769:12769] CHIP:DMG: AttributePathIB = - [1666943792.254837][12769:12769] CHIP:DMG: { - [1666943792.254842][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943792.254845][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943792.254849][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666943792.254851][12769:12769] CHIP:DMG: ListIndex = Null, - [1666943792.254853][12769:12769] CHIP:DMG: } - [1666943792.254856][12769:12769] CHIP:DMG: - [1666943792.254859][12769:12769] CHIP:DMG: Data = 65533, - [1666943792.254861][12769:12769] CHIP:DMG: }, - [1666943792.254865][12769:12769] CHIP:DMG: - [1666943792.254867][12769:12769] CHIP:DMG: }, - [1666943792.254872][12769:12769] CHIP:DMG: - [1666943792.254874][12769:12769] CHIP:DMG: ], - [1666943792.254884][12769:12769] CHIP:DMG: - [1666943792.254886][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943792.254889][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666943792.254891][12769:12769] CHIP:DMG: } - [1666943792.254894][12769:12769] CHIP:DMG: - - ./chip-tool relativehumiditymeasurement read measured-value 1 1 - - verify TH recieves "measured-value response" on the TH (all-cluster-minimal-app) log: - [1666943851.649935][12769:12769] CHIP:DMG: - [1666943851.649947][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943851.649950][12769:12769] CHIP:DMG: { - [1666943851.649952][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943851.649956][12769:12769] CHIP:DMG: [ - [1666943851.649958][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943851.649962][12769:12769] CHIP:DMG: { - [1666943851.649965][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943851.649967][12769:12769] CHIP:DMG: { - [1666943851.649970][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943851.649973][12769:12769] CHIP:DMG: AttributePathIB = - [1666943851.649975][12769:12769] CHIP:DMG: { - [1666943851.649978][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943851.649981][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943851.649984][12769:12769] CHIP:DMG: Attribute = 0x0000_0000, - [1666943851.649987][12769:12769] CHIP:DMG: } - [1666943851.649990][12769:12769] CHIP:DMG: - [1666943851.649994][12769:12769] CHIP:DMG: Data = 0, - [1666943851.649997][12769:12769] CHIP:DMG: }, - [1666943851.650001][12769:12769] CHIP:DMG: - [1666943851.650003][12769:12769] CHIP:DMG: }, - [1666943851.650007][12769:12769] CHIP:DMG: - [1666943851.650009][12769:12769] CHIP:DMG: ], - [1666943851.650013][12769:12769] CHIP:DMG: - [1666943851.650015][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943851.650017][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool relativehumiditymeasurement read min-measured-value 1 1 - - verify TH recieves "min-measured-value response" on the TH (all-cluster-minimal-app) log: - - 1651147834.075387][2336:2336] CHIP:IM: Received Read request - - [1666943887.048829][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943887.048832][12769:12769] CHIP:DMG: { - [1666943887.048835][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943887.048840][12769:12769] CHIP:DMG: [ - [1666943887.048842][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943887.048846][12769:12769] CHIP:DMG: { - [1666943887.048848][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943887.048851][12769:12769] CHIP:DMG: { - [1666943887.048853][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943887.048855][12769:12769] CHIP:DMG: AttributePathIB = - [1666943887.048857][12769:12769] CHIP:DMG: { - [1666943887.048859][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943887.048862][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943887.048865][12769:12769] CHIP:DMG: Attribute = 0x0000_0001, - [1666943887.048868][12769:12769] CHIP:DMG: } - [1666943887.048871][12769:12769] CHIP:DMG: - [1666943887.048874][12769:12769] CHIP:DMG: Data = 0, - [1666943887.048877][12769:12769] CHIP:DMG: }, - [1666943887.048881][12769:12769] CHIP:DMG: - [1666943887.048883][12769:12769] CHIP:DMG: }, - [1666943887.048887][12769:12769] CHIP:DMG: - [1666943887.048889][12769:12769] CHIP:DMG: ], - [1666943887.048893][12769:12769] CHIP:DMG: - [1666943887.048894][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943887.048897][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - - - ./chip-tool relativehumiditymeasurement read max-measured-value 1 1 - - verify TH recieves "max-measured-value response" on the TH (all-cluster-minimal-app) log: - - [1666943902.417737][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943902.417740][12769:12769] CHIP:DMG: { - [1666943902.417742][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943902.417747][12769:12769] CHIP:DMG: [ - [1666943902.417749][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943902.417755][12769:12769] CHIP:DMG: { - [1666943902.417758][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943902.417761][12769:12769] CHIP:DMG: { - [1666943902.417764][12769:12769] CHIP:DMG: DataVersion = 0xff7445f8, - [1666943902.417767][12769:12769] CHIP:DMG: AttributePathIB = - [1666943902.417771][12769:12769] CHIP:DMG: { - [1666943902.417774][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943902.417777][12769:12769] CHIP:DMG: Cluster = 0x405, - [1666943902.417781][12769:12769] CHIP:DMG: Attribute = 0x0000_0002, - [1666943902.417784][12769:12769] CHIP:DMG: } - [1666943902.417788][12769:12769] CHIP:DMG: - [1666943902.417791][12769:12769] CHIP:DMG: Data = 10000, - [1666943902.417794][12769:12769] CHIP:DMG: }, - [1666943902.417798][12769:12769] CHIP:DMG: - [1666943902.417801][12769:12769] CHIP:DMG: }, - [1666943902.417805][12769:12769] CHIP:DMG: - [1666943902.417808][12769:12769] CHIP:DMG: ], - [1666943902.417812][12769:12769] CHIP:DMG: - [1666943902.417815][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943902.417819][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 relativehumiditymeasurement read tolerance 1 1 - - status = 0x86 (UNSUPPORTED_ATTRIBUTE), - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_RNCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_RNCONC_1_1.yaml index ce361a6c946e16..87ff6e151b4ef5 100644 --- a/src/app/tests/suites/certification/Test_TC_RNCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RNCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: RNCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !RNCONC.S.F00 && !RNCONC.S.F01 && !RNCONC.S.F02 && !RNCONC.S.F03 && + !RNCONC.S.F04 && !RNCONC.S.F05" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given RNCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && RNCONC.S.F00 + PICS: RNCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && !RNCONC.S.F00 + PICS: " !RNCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && RNCONC.S.F01 + PICS: RNCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && !RNCONC.S.F01 + PICS: " !RNCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && RNCONC.S.F02 + PICS: RNCONC.S.F02 && RNCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && !RNCONC.S.F02 + PICS: " !RNCONC.S.F02 && !RNCONC.S.F01" response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && RNCONC.S.F03 + PICS: RNCONC.S.F03 && RNCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && !RNCONC.S.F03 + PICS: " !RNCONC.S.F03 && !RNCONC.S.F01" response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && RNCONC.S.F04 + PICS: RNCONC.S.F04 && RNCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && !RNCONC.S.F04 + PICS: " !RNCONC.S.F04 && RNCONC.S.F00" response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && RNCONC.S.F05 + PICS: RNCONC.S.F05 && RNCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: RNCONC.S.Afffc && !RNCONC.S.F05 + PICS: " !RNCONC.S.F05 && !RNCONC.S.F00 " response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && RNCONC.S.A0007 && RNCONC.S.F00 + PICS: RNCONC.S.A0007 && RNCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when RNCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && !RNCONC.S.A0007 + PICS: " !RNCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && RNCONC.S.F00 + PICS: RNCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when RNCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && !RNCONC.S.F00 + PICS: " !RNCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && RNCONC.S.F04 + PICS: RNCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when RNCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && !RNCONC.S.F04 + PICS: " !RNCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && RNCONC.S.F05 + PICS: RNCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: RNCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && !RNCONC.S.F05 + PICS: " !RNCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && RNCONC.S.F01 + PICS: RNCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: RNCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: RNCONC.S.Afffb && !RNCONC.S.F01 + PICS: " !RNCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: RNCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: RNCONC.S.Afff8 response: value: [] constraints: diff --git a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_1_2.yaml index d9d98f55d8cfd6..2d10dafd07ee91 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_1_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,75 +39,78 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: RVCCLEANM.S.A0000 verification: | - ./chip-tool rvcleanm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains atleast two ModeOptionsStruct entries with unique mode field value and label field value below is the sample log provided for the raspi platform: - - [1654595167.600241][14362:14367] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595167.600345][14362:14367] CHIP:TOO: SupportedModes: 3 entries - [1654595167.600403][14362:14367] CHIP:TOO: [1]: { - [1654595167.600430][14362:14367] CHIP:TOO: Label: Black - [1654595167.600466][14362:14367] CHIP:TOO: Mode: 0 - [1654595167.600495][14362:14367] CHIP:TOO: SemanticTags: 1 entries - [1654595167.600564][14362:14367] CHIP:TOO: [1]: { - [1654595167.600589][14362:14367] CHIP:TOO: MfgCode: 0 - [1654595167.600612][14362:14367] CHIP:TOO: Value: 0 - [1654595167.600637][14362:14367] CHIP:TOO: } - [1654595167.600662][14362:14367] CHIP:TOO: } - [1654595167.600695][14362:14367] CHIP:TOO: [2]: { - [1654595167.600719][14362:14367] CHIP:TOO: Label: Cappuccino - [1654595167.600742][14362:14367] CHIP:TOO: Mode: 4 - [1654595167.600768][14362:14367] CHIP:TOO: SemanticTags: 1 entries - [1654595167.600796][14362:14367] CHIP:TOO: [1]: { - [1654595167.600820][14362:14367] CHIP:TOO: MfgCode: 0 - [1654595167.600842][14362:14367] CHIP:TOO: Value: 0 - [1654595167.600865][14362:14367] CHIP:TOO: } - [1654595167.600889][14362:14367] CHIP:TOO: } - [1654595167.600921][14362:14367] CHIP:TOO: [3]: { - [1654595167.600945][14362:14367] CHIP:TOO: Label: Espresso - [1654595167.600968][14362:14367] CHIP:TOO: Mode: 7 - [1654595167.600993][14362:14367] CHIP:TOO: SemanticTags: 1 entries - [1654595167.601022][14362:14367] CHIP:TOO: [1]: { - [1654595167.601046][14362:14367] CHIP:TOO: MfgCode: 0 - [1654595167.601068][14362:14367] CHIP:TOO: Value: 0 - [1654595167.601091][14362:14367] CHIP:TOO: } - [1654595167.601115][14362:14367] CHIP:TOO: } + ./chip-tool rvccleanmode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries. + - Verify that list should contain at least one entry + - Verify that each ModeOptionsStruct entry has a unique Mode field value and Label field value + - ModeOptionsStruct entry’s ModeTags field is not empty, then Verify the values of the Value fields that are not larger than 16 bits, for each Value field: Is the semantic tag value a defined common tag value (Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster alias tag value (RapidCool, RapidFreeze) or in the MfgTags (0x8000 to 0xBFFF) range + - If the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 + - Verify that at least one ModeOptionsStruct entry includes either the RapidCool semantic tag or the RapidFreeze semantic tag in the SemanticTags field + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690182376.583167][14996:14998] CHIP:DMG: } + [1690182376.583260][14996:14998] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0000 DataVersion: 3145953005 + [1690182376.583288][14996:14998] CHIP:TOO: SupportedModes: 3 entries + [1690182376.583301][14996:14998] CHIP:TOO: [1]: { + [1690182376.583304][14996:14998] CHIP:TOO: Label: Vacuum + [1690182376.583307][14996:14998] CHIP:TOO: Mode: 0 + [1690182376.583311][14996:14998] CHIP:TOO: ModeTags: 1 entries + [1690182376.583316][14996:14998] CHIP:TOO: [1]: { + [1690182376.583319][14996:14998] CHIP:TOO: Value: 16385 + [1690182376.583322][14996:14998] CHIP:TOO: } + [1690182376.583325][14996:14998] CHIP:TOO: } + [1690182376.583331][14996:14998] CHIP:TOO: [2]: { + [1690182376.583333][14996:14998] CHIP:TOO: Label: Wash + [1690182376.583336][14996:14998] CHIP:TOO: Mode: 1 + [1690182376.583340][14996:14998] CHIP:TOO: ModeTags: 1 entries + [1690182376.583344][14996:14998] CHIP:TOO: [1]: { + [1690182376.583347][14996:14998] CHIP:TOO: Value: 16386 + [1690182376.583349][14996:14998] CHIP:TOO: } + [1690182376.583352][14996:14998] CHIP:TOO: } + [1690182376.583357][14996:14998] CHIP:TOO: [3]: { + [1690182376.583360][14996:14998] CHIP:TOO: Label: Deep clean + [1690182376.583362][14996:14998] CHIP:TOO: Mode: 2 + [1690182376.583366][14996:14998] CHIP:TOO: ModeTags: 2 entries + [1690182376.583369][14996:14998] CHIP:TOO: [1]: { + [1690182376.583372][14996:14998] CHIP:TOO: Value: 7 + [1690182376.583375][14996:14998] CHIP:TOO: } + [1690182376.583378][14996:14998] CHIP:TOO: [2]: { + [1690182376.583380][14996:14998] CHIP:TOO: Value: 16384 + [1690182376.583383][14996:14998] CHIP:TOO: } + [1690182376.583385][14996:14998] CHIP:TOO: } disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | - ./chip-tool rvcleanm read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut and below is the sample log provided for the raspi platform: + ./chip-tool rvccleanmode read current-mode 1 1 - [1645776767.611140][4667:4672] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469718 + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1645776767.611214][4667:4672] CHIP:TOO: CurrentMode: 0 + [1690182411.579845][15004:15006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 3145953005 + [1690182411.579857][15004:15006] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the OnMode attribute." PICS: RVCCLEANM.S.A0003 verification: | - ./chip-tool rvcleanm read on-mode 1 1 + ./chip-tool rvccleanmode read on-mode 1 1 - Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null) , below is the sample log provided for the raspi platform, Here OnMode attribute value is Null - - [1649676072.465968][10754:10759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065072 - - [1649676072.466094][10754:10759] CHIP:TOO: OnMode: null + [1690182436.721527][15012:15014] CHIP:DMG: } + [1690182436.721673][15012:15014] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0003 DataVersion: 3145953005 + [1690182436.721723][15012:15014] CHIP:TOO: OnMode: null disabled: true - label: "Step 5: TH reads from the DUT the StartUpMode attribute." PICS: RVCCLEANM.S.A0002 verification: | - ./chip-tool rvcleanm read start-up-mode 1 1 - - Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer and value is from supported_modes_dut, below is the sample log provided for the raspi platform: - + ./chip-tool rvccleanmode read start-up-mode 1 1 - [1649677014.496348][10778:10784] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 4277065072 + Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer(As per spec default value is null) and value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is Null - [1649677014.496469][10778:10784] CHIP:TOO: StartUpMode: 0 + [1690182475.587786][15022:15024] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0002 DataVersion: 3145953005 + [1690182475.587797][15022:15024] CHIP:TOO: StartUpMode: null disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_2_1.yaml index 1925f2b89c4066..4d0da130791b6c 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_2_1.yaml @@ -34,143 +34,208 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: RVCCLEANM.S.A0000 verification: | - ./chip-tool rvcleanm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains two or more ModeOptionsStruct entries and save the Mode field values as supported_modes_dut, below is the sample log provided for the raspi platform: - - [1685018204.991818][16390:16392] CHIP:DMG: } - [1685018204.992182][16390:16392] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 3673378954 - [1685018204.992279][16390:16392] CHIP:TOO: SupportedModes: 3 entries - [1685018204.992320][16390:16392] CHIP:TOO: [1]: { - [1685018204.992331][16390:16392] CHIP:TOO: Label: Black - [1685018204.992350][16390:16392] CHIP:TOO: Mode: 0 - [1685018204.992376][16390:16392] CHIP:TOO: SemanticTags: 1 entries - [1685018204.992408][16390:16392] CHIP:TOO: [1]: { - [1685018204.992420][16390:16392] CHIP:TOO: MfgCode: 0 - [1685018204.992430][16390:16392] CHIP:TOO: Value: 0 - [1685018204.992440][16390:16392] CHIP:TOO: } - [1685018204.992452][16390:16392] CHIP:TOO: } - [1685018204.992482][16390:16392] CHIP:TOO: [2]: { - [1685018204.992492][16390:16392] CHIP:TOO: Label: Cappuccino - [1685018204.992504][16390:16392] CHIP:TOO: Mode: 4 - [1685018204.992525][16390:16392] CHIP:TOO: SemanticTags: 1 entries - [1685018204.992547][16390:16392] CHIP:TOO: [1]: { - [1685018204.992558][16390:16392] CHIP:TOO: MfgCode: 0 - [1685018204.992567][16390:16392] CHIP:TOO: Value: 0 - [1685018204.992578][16390:16392] CHIP:TOO: } - [1685018204.992588][16390:16392] CHIP:TOO: } - [1685018204.992610][16390:16392] CHIP:TOO: [3]: { - [1685018204.992619][16390:16392] CHIP:TOO: Label: Espresso - [1685018204.992628][16390:16392] CHIP:TOO: Mode: 7 - [1685018204.992641][16390:16392] CHIP:TOO: SemanticTags: 1 entries - [1685018204.992657][16390:16392] CHIP:TOO: [1]: { - [1685018204.992666][16390:16392] CHIP:TOO: MfgCode: 0 - [1685018204.992678][16390:16392] CHIP:TOO: Value: 0 - [1685018204.992687][16390:16392] CHIP:TOO: } - [1685018204.992695][16390:16392] CHIP:TOO: } + ./chip-tool rvccleanmode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690182376.583260][14996:14998] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0000 DataVersion: 3145953005 + [1690182376.583288][14996:14998] CHIP:TOO: SupportedModes: 3 entries + [1690182376.583301][14996:14998] CHIP:TOO: [1]: { + [1690182376.583304][14996:14998] CHIP:TOO: Label: Vacuum + [1690182376.583307][14996:14998] CHIP:TOO: Mode: 0 + [1690182376.583311][14996:14998] CHIP:TOO: ModeTags: 1 entries + [1690182376.583316][14996:14998] CHIP:TOO: [1]: { + [1690182376.583319][14996:14998] CHIP:TOO: Value: 16385 + [1690182376.583322][14996:14998] CHIP:TOO: } + [1690182376.583325][14996:14998] CHIP:TOO: } + [1690182376.583331][14996:14998] CHIP:TOO: [2]: { + [1690182376.583333][14996:14998] CHIP:TOO: Label: Wash + [1690182376.583336][14996:14998] CHIP:TOO: Mode: 1 + [1690182376.583340][14996:14998] CHIP:TOO: ModeTags: 1 entries + [1690182376.583344][14996:14998] CHIP:TOO: [1]: { + [1690182376.583347][14996:14998] CHIP:TOO: Value: 16386 + [1690182376.583349][14996:14998] CHIP:TOO: } + [1690182376.583352][14996:14998] CHIP:TOO: } + [1690182376.583357][14996:14998] CHIP:TOO: [3]: { + [1690182376.583360][14996:14998] CHIP:TOO: Label: Deep clean + [1690182376.583362][14996:14998] CHIP:TOO: Mode: 2 + [1690182376.583366][14996:14998] CHIP:TOO: ModeTags: 2 entries + [1690182376.583369][14996:14998] CHIP:TOO: [1]: { + [1690182376.583372][14996:14998] CHIP:TOO: Value: 7 + [1690182376.583375][14996:14998] CHIP:TOO: } + [1690182376.583378][14996:14998] CHIP:TOO: [2]: { + [1690182376.583380][14996:14998] CHIP:TOO: Value: 16384 + [1690182376.583383][14996:14998] CHIP:TOO: } + [1690182376.583385][14996:14998] CHIP:TOO: } disabled: true - - label: "Step 2: TH reads from the DUT the CurrentMode attribute." + - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | - ./chip-tool rvcleanm read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value - - save tha value as old_current_mode_dut - - select a value from supported_modes_dut, different from old_current_mode_dut, and which corresponds to a mode the device can switch to, given its current state and save this value as new_mode_th - - select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, - below is the sample log provided for the raspi platform: - - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } - [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 - [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 + ./chip-tool rvccleanmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut + - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + + [1690182411.579845][15004:15006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 3145953005 + [1690182411.579857][15004:15006] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 3: TH sends a ChangeToMode command to the DUT with NewMode set - to old_current_mode_dut [Petru] note that currently this constraint is - not in the spec. The unapproved proposal is here: - https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/7096 - Until that's approved, please skip this step." + "Step 4: TH sends a ChangeToMode command to the DUT with NewMode set + to old_current_mode_dut" PICS: RVCCLEANM.S.C00.Rsp verification: | - ChangeToMode Command is not impleented. + ./chip-tool rvccleanmode change-to-mode 0 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690182553.733326][15036:15038] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Command 0x0000_0001 + [1690182553.733341][15036:15038] CHIP:TOO: ChangeToModeResponse: { + [1690182553.733348][15036:15038] CHIP:TOO: status: 0 + [1690182553.733351][15036:15038] CHIP:TOO: } disabled: true - label: - "Step 4: Manually put the device in a state from which it will FAIL to + "Step 5: Manually put the device in a state from which it will FAIL to transition to PIXIT.RVCCLEANM.MODE_CHANGE_FAIL" + PICS: PIXIT.RVCCLEANM.CAN_TEST_MODE_FAILURE verification: | - + Manual operation required disabled: true - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + - label: "Step 6: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | + ./chip-tool rvccleanmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + [1690182411.579845][15004:15006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 3145953005 + [1690182411.579857][15004:15006] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 6: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.RVCCLEANM.MODE_CHANGE_FAIL" - PICS: RVCCLEANM.S.C00.Rsp + PICS: PIXIT.RVCCLEANM.CAN_TEST_MODE_FAILURE && RVCCLEANM.S.C00.Rsp verification: | - ChangeToMode Command is not impleented. + First change the mode to cleaning after that try to change the mode to any other modes (Vaccum, Deep clean, Wash ) + + ./chip-tool rvcrunmode change-to-mode 1 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690262143.410054][28190:28192] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690262143.410070][28190:28192] CHIP:TOO: ChangeToModeResponse: { + [1690262143.410076][28190:28192] CHIP:TOO: status: 0 + [1690262143.410079][28190:28192] CHIP:TOO: } + + ./chip-tool rvccleanmode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a GenericFailure(0x02) status response and StatusText field has a length between 1 and 64, below is the sample log provided for the raspi platform: + + [1690262155.519185][28202:28204] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Command 0x0000_0001 + [1690262155.519202][28202:28204] CHIP:TOO: ChangeToModeResponse: { + [1690262155.519206][28202:28204] CHIP:TOO: status: 64 + [1690262155.519210][28202:28204] CHIP:TOO: statusText: Cannot change the cleaning mode during a clean + [1690262155.519213][28202:28204] CHIP:TOO: } disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | - ./chip-tool rvcleanm read current-mode 1 1 + ./chip-tool rvccleanmode read current-mode 1 1 - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and equal to the new_mode_th, below is the sample log provided for the raspi platform: + Verify on TH(chip-tool), CurrentMode attribute value is an integer value and equal to old_current_mode_dut below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } - [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 - [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 + [1690182411.579845][15004:15006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 3145953005 + [1690182411.579857][15004:15006] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 8: Manually put the device in a state from which it will + "Step 9: Manually put the device in a state from which it will SUCCESSFULLY transition to PIXIT.RVCCLEANM.MODE_CHANGE_OK" verification: | - + Manual operation required disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | + ./chip-tool rvccleanmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + [1690182411.579845][15004:15006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 3145953005 + [1690182411.579857][15004:15006] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 10: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 11: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.RVCCLEANM.MODE_CHANGE_OK" PICS: RVCCLEANM.S.C00.Rsp verification: | - ChangeToMode Command is not impleented. + Change to mode is not allowed from cleaning to any other mode(Vaccum, Deep clean, Wash ), Please switch the mode to idle and then try to change to other modes + + ./chip-tool rvcrunmode change-to-mode 0 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690262367.604437][28315:28317] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690262367.604496][28315:28317] CHIP:TOO: ChangeToModeResponse: { + [1690262367.604517][28315:28317] CHIP:TOO: status: 0 + [1690262367.604529][28315:28317] CHIP:TOO: } + + + ./chip-tool rvccleanmode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690262376.067598][28323:28325] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Command 0x0000_0001 + [1690262376.067612][28323:28325] CHIP:TOO: ChangeToModeResponse: { + [1690262376.067618][28323:28325] CHIP:TOO: status: 0 + [1690262376.067621][28323:28325] CHIP:TOO: } disabled: true - - label: "Step 11: TH reads from the DUT the CurrentMode attribute." + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | + ./chip-tool rvccleanmode read current-mode 1 1 + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 11, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 2 + + [1690262464.326501][28342:28344] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 2064453499 + [1690262464.326542][28342:28344] CHIP:TOO: CurrentMode: 2 disabled: true - label: - "Step 12: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 13: TH sends a ChangeToMode command to the DUT with NewMode set to invalid_mode_th" PICS: RVCCLEANM.S.C00.Rsp verification: | + ./chip-tool rvccleanmode change-to-mode 4 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a UnsupportedMode(0x01) status response and below is the sample log provided for the raspi platform: + [1690262496.596029][28351:28353] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Command 0x0000_0001 + [1690262496.596080][28351:28353] CHIP:TOO: ChangeToModeResponse: { + [1690262496.596117][28351:28353] CHIP:TOO: status: 1 + [1690262496.596120][28351:28353] CHIP:TOO: } disabled: true - - label: "Step 13: TH reads from the DUT the CurrentMode attribute." + - label: "Step 14: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | + ./chip-tool rvccleanmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 12, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 2 + [1690262464.326501][28342:28344] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 2064453499 + [1690262464.326542][28342:28344] CHIP:TOO: CurrentMode: 2 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_1.yaml index 2a4df6ad202721..9806f6dd8b9fe6 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,63 +39,69 @@ tests: - label: "Step 2: TH reads from the DUT the OnMode attribute." PICS: RVCCLEANM.S.A0003 && RVCCLEANM.S.F00 verification: | - ./chip-tool rvcleanm read on-mode 1 1 + ./chip-tool rvccleanmode read on-mode 1 1 - On TH(chip-tool), Verify OnMode attribute value is an integer. save the value as on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer or Null + Save the value as on_mode_dut and below is the sample log provided for the raspi platform, here OnMode value is 0 - [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073 - [1649678983.680002][10871:10876] CHIP:TOO: OnMode: 0 + [1690183202.686514][15123:15125] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0003 DataVersion: 3145953012 + [1690183202.686550][15123:15125] CHIP:TOO: OnMode: 0 disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 && RVCCLEANM.S.F00 verification: | - ./chip-tool rvcleanm read current-mode 1 1 + ./chip-tool rvccleanmode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute is an integer. + Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 - On TH(chip-tool), Verify CurrentMode attribute is an integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - [1649679034.895848][10879:10884] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679034.895972][10879:10884] CHIP:TOO: CurrentMode: 0 + [1690183300.914668][15159:15161] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 4196861832 + [1690183300.914716][15159:15161] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the SupportedModes attribute." PICS: RVCCLEANM.S.A0000 && RVCCLEANM.S.F00 verification: | - ./chip-tool rvcleanm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries - [1654595268.854743][14400:14405] CHIP:TOO: [1]: { - [1654595268.854772][14400:14405] CHIP:TOO: Label: Black - [1654595268.854811][14400:14405] CHIP:TOO: Mode: 0 - [1654595268.854843][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.854891][14400:14405] CHIP:TOO: [1]: { - [1654595268.854918][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.854945][14400:14405] CHIP:TOO: Value: 0 - [1654595268.854971][14400:14405] CHIP:TOO: } - [1654595268.855000][14400:14405] CHIP:TOO: } - [1654595268.855038][14400:14405] CHIP:TOO: [2]: { - [1654595268.855064][14400:14405] CHIP:TOO: Label: Cappuccino - [1654595268.855089][14400:14405] CHIP:TOO: Mode: 4 - [1654595268.855117][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855149][14400:14405] CHIP:TOO: [1]: { - [1654595268.855175][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855199][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855223][14400:14405] CHIP:TOO: } - [1654595268.855249][14400:14405] CHIP:TOO: } - [1654595268.855284][14400:14405] CHIP:TOO: [3]: { - [1654595268.855310][14400:14405] CHIP:TOO: Label: Espresso - [1654595268.855332][14400:14405] CHIP:TOO: Mode: 7 - [1654595268.855360][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855390][14400:14405] CHIP:TOO: [1]: { - [1654595268.855416][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855440][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855464][14400:14405] CHIP:TOO: } - [1654595268.855490][14400:14405] CHIP:TOO: } - [1649677252.376226][10804:10809] CHIP:TOO: SemanticTag: 0 - [1649677252.376252][10804:10809] CHIP:TOO: } + ./chip-tool rvccleanmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690182376.583167][14996:14998] CHIP:DMG: } + [1690182376.583260][14996:14998] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0000 DataVersion: 3145953005 + [1690182376.583288][14996:14998] CHIP:TOO: SupportedModes: 3 entries + [1690182376.583301][14996:14998] CHIP:TOO: [1]: { + [1690182376.583304][14996:14998] CHIP:TOO: Label: Vacuum + [1690182376.583307][14996:14998] CHIP:TOO: Mode: 0 + [1690182376.583311][14996:14998] CHIP:TOO: ModeTags: 1 entries + [1690182376.583316][14996:14998] CHIP:TOO: [1]: { + [1690182376.583319][14996:14998] CHIP:TOO: Value: 16385 + [1690182376.583322][14996:14998] CHIP:TOO: } + [1690182376.583325][14996:14998] CHIP:TOO: } + [1690182376.583331][14996:14998] CHIP:TOO: [2]: { + [1690182376.583333][14996:14998] CHIP:TOO: Label: Wash + [1690182376.583336][14996:14998] CHIP:TOO: Mode: 1 + [1690182376.583340][14996:14998] CHIP:TOO: ModeTags: 1 entries + [1690182376.583344][14996:14998] CHIP:TOO: [1]: { + [1690182376.583347][14996:14998] CHIP:TOO: Value: 16386 + [1690182376.583349][14996:14998] CHIP:TOO: } + [1690182376.583352][14996:14998] CHIP:TOO: } + [1690182376.583357][14996:14998] CHIP:TOO: [3]: { + [1690182376.583360][14996:14998] CHIP:TOO: Label: Deep clean + [1690182376.583362][14996:14998] CHIP:TOO: Mode: 2 + [1690182376.583366][14996:14998] CHIP:TOO: ModeTags: 2 entries + [1690182376.583369][14996:14998] CHIP:TOO: [1]: { + [1690182376.583372][14996:14998] CHIP:TOO: Value: 7 + [1690182376.583375][14996:14998] CHIP:TOO: } + [1690182376.583378][14996:14998] CHIP:TOO: [2]: { + [1690182376.583380][14996:14998] CHIP:TOO: Value: 16384 + [1690182376.583383][14996:14998] CHIP:TOO: } + [1690182376.583385][14996:14998] CHIP:TOO: } disabled: true - label: @@ -98,16 +109,14 @@ tests: to new_mode_th" PICS: RVCCLEANM.S.C00.Rsp && RVCCLEANM.S.F00 verification: | - ./chip-tool rvcleanm change-to-mode 7 1 1 + ./chip-tool rvccleanmode change-to-mode 1 1 1 - On TH(chip-tool) log, verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931013.571019][20667:20669] CHIP:DMG: - [1684931013.571021][20667:20669] CHIP:DMG: StatusIB = - [1684931013.571024][20667:20669] CHIP:DMG: { - [1684931013.571027][20667:20669] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931013.571030][20667:20669] CHIP:DMG: }, - [1684931013.571034][20667:20669] CHIP:DMG: + 1690183395.641002][15168:15170] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Command 0x0000_0001 + [1690183395.641020][15168:15170] CHIP:TOO: ChangeToModeResponse: { + [1690183395.641025][15168:15170] CHIP:TOO: status: 0 + [1690183395.641028][15168:15170] CHIP:TOO: } disabled: true - label: "Step 6: TH sends a Off command to the DUT" @@ -139,10 +148,10 @@ tests: - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 && RVCCLEANM.S.F00 verification: | - ./chip-tool rvcleanm read current-mode 1 1 + ./chip-tool rvccleanmode read current-mode 1 1 - On TH(chip-tool),verify that CurrentMode attribute value is an integer and value is equal to on_mode_dut. below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to on_mode_dut, below is the sample log provided for the raspi platform, here CurrentMode attribute value is 0 - [1649679202.069163][10899:10904] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679202.069278][10899:10904] CHIP:TOO: CurrentMode: 0 + [1690183444.048684][15184:15186] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 4196861834 + [1690183444.048697][15184:15186] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_2.yaml index 0861a1f2117d57..5e5b97cf0cd5a0 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,96 +39,165 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: RVCCLEANM.S.A0002 verification: | - ./chip-tool rvcleanm read start-up-mode 1 1 + ./chip-tool rvccleanmode read start-up-mode 1 1 - On TH(chip-tool), Verify StartUpMode attribute value is an integer. save the valueas startup_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify StartUpMode attribute value is an integer value or null + - Save the value as startup_mode_dut and below is the sample log provided for the raspi platform, Here StartUpMode value is null - [1645777708.406864][4841:4846] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469721 - [1645777708.406933][4841:4846] CHIP:TOO: StartUpMode: 0 + NOTE: if startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. + + [1690545840.189340][3104:3106] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0002 DataVersion: 3338736524 + [1690545840.189408][3104:3106] CHIP:TOO: StartUpMode: null disabled: true - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: RVCCLEANM.S.A0001 + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: RVCCLEANM.S.A0000 verification: | - ./chip-tool rvcleanm read current-mode 1 1 + ./chip-tool rvccleanmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690183637.107558][15230:15232] CHIP:TOO: SupportedModes: 3 entries + [1690183637.107597][15230:15232] CHIP:TOO: [1]: { + [1690183637.107608][15230:15232] CHIP:TOO: Label: Vacuum + [1690183637.107618][15230:15232] CHIP:TOO: Mode: 0 + [1690183637.107633][15230:15232] CHIP:TOO: ModeTags: 1 entries + [1690183637.107651][15230:15232] CHIP:TOO: [1]: { + [1690183637.107662][15230:15232] CHIP:TOO: Value: 16385 + [1690183637.107670][15230:15232] CHIP:TOO: } + [1690183637.107679][15230:15232] CHIP:TOO: } + [1690183637.107700][15230:15232] CHIP:TOO: [2]: { + [1690183637.107708][15230:15232] CHIP:TOO: Label: Wash + [1690183637.107718][15230:15232] CHIP:TOO: Mode: 1 + [1690183637.107730][15230:15232] CHIP:TOO: ModeTags: 1 entries + [1690183637.107744][15230:15232] CHIP:TOO: [1]: { + [1690183637.107753][15230:15232] CHIP:TOO: Value: 16386 + [1690183637.107765][15230:15232] CHIP:TOO: } + [1690183637.107774][15230:15232] CHIP:TOO: } + [1690183637.107793][15230:15232] CHIP:TOO: [3]: { + [1690183637.107801][15230:15232] CHIP:TOO: Label: Deep clean + [1690183637.107811][15230:15232] CHIP:TOO: Mode: 2 + [1690183637.107823][15230:15232] CHIP:TOO: ModeTags: 2 entries + [1690183637.107837][15230:15232] CHIP:TOO: [1]: { + [1690183637.107846][15230:15232] CHIP:TOO: Value: 7 + [1690183637.107856][15230:15232] CHIP:TOO: } + [1690183637.107885][15230:15232] CHIP:TOO: [2]: { + [1690183637.107888][15230:15232] CHIP:TOO: Value: 16384 + [1690183637.107890][15230:15232] CHIP:TOO: } + [1690183637.107894][15230:15232] CHIP:TOO: } + disabled: true - On TH(chip-tool), Verify CurrentMode attribute value is integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: RVCCLEANM.S.A0002 + verification: | + ./chip-tool rvccleanmode write start-up-mode 0 1 1 - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + [1690183561.346360][15209:15211] CHIP:DMG: StatusIB = + [1690183561.346364][15209:15211] CHIP:DMG: { + [1690183561.346367][15209:15211] CHIP:DMG: status = 0x00 (SUCCESS), + [1690183561.346369][15209:15211] CHIP:DMG: }, + disabled: true - If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + PICS: RVCCLEANM.S.A0001 + verification: | + ./chip-tool rvccleanmode read current-mode 1 1 + + On TH(chip-tool), Verify CurrentMode attribute value is an integer value + - Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 + + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 6. Else proceed to step 8. + + [1690183605.342520][15217:15219] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 3992778259 + [1690183605.342539][15217:15219] CHIP:TOO: CurrentMode: 0 disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." PICS: RVCCLEANM.S.A0000 verification: | - ./chip-tool rvcleanm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries - [1654595268.854743][14400:14405] CHIP:TOO: [1]: { - [1654595268.854772][14400:14405] CHIP:TOO: Label: Black - [1654595268.854811][14400:14405] CHIP:TOO: Mode: 0 - [1654595268.854843][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.854891][14400:14405] CHIP:TOO: [1]: { - [1654595268.854918][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.854945][14400:14405] CHIP:TOO: Value: 0 - [1654595268.854971][14400:14405] CHIP:TOO: } - [1654595268.855000][14400:14405] CHIP:TOO: } - [1654595268.855038][14400:14405] CHIP:TOO: [2]: { - [1654595268.855064][14400:14405] CHIP:TOO: Label: Cappuccino - [1654595268.855089][14400:14405] CHIP:TOO: Mode: 4 - [1654595268.855117][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855149][14400:14405] CHIP:TOO: [1]: { - [1654595268.855175][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855199][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855223][14400:14405] CHIP:TOO: } - [1654595268.855249][14400:14405] CHIP:TOO: } - [1654595268.855284][14400:14405] CHIP:TOO: [3]: { - [1654595268.855310][14400:14405] CHIP:TOO: Label: Espresso - [1654595268.855332][14400:14405] CHIP:TOO: Mode: 7 - [1654595268.855360][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855390][14400:14405] CHIP:TOO: [1]: { - [1654595268.855416][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855440][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855464][14400:14405] CHIP:TOO: } - [1654595268.855490][14400:14405] CHIP:TOO: } - [1649677252.376226][10804:10809] CHIP:TOO: SemanticTag: 0 - [1649677252.376252][10804:10809] CHIP:TOO: } + ./chip-tool rvccleanmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th., below is the sample log provided for the raspi platform: + + [1690183637.107558][15230:15232] CHIP:TOO: SupportedModes: 3 entries + [1690183637.107597][15230:15232] CHIP:TOO: [1]: { + [1690183637.107608][15230:15232] CHIP:TOO: Label: Vacuum + [1690183637.107618][15230:15232] CHIP:TOO: Mode: 0 + [1690183637.107633][15230:15232] CHIP:TOO: ModeTags: 1 entries + [1690183637.107651][15230:15232] CHIP:TOO: [1]: { + [1690183637.107662][15230:15232] CHIP:TOO: Value: 16385 + [1690183637.107670][15230:15232] CHIP:TOO: } + [1690183637.107679][15230:15232] CHIP:TOO: } + [1690183637.107700][15230:15232] CHIP:TOO: [2]: { + [1690183637.107708][15230:15232] CHIP:TOO: Label: Wash + [1690183637.107718][15230:15232] CHIP:TOO: Mode: 1 + [1690183637.107730][15230:15232] CHIP:TOO: ModeTags: 1 entries + [1690183637.107744][15230:15232] CHIP:TOO: [1]: { + [1690183637.107753][15230:15232] CHIP:TOO: Value: 16386 + [1690183637.107765][15230:15232] CHIP:TOO: } + [1690183637.107774][15230:15232] CHIP:TOO: } + [1690183637.107793][15230:15232] CHIP:TOO: [3]: { + [1690183637.107801][15230:15232] CHIP:TOO: Label: Deep clean + [1690183637.107811][15230:15232] CHIP:TOO: Mode: 2 + [1690183637.107823][15230:15232] CHIP:TOO: ModeTags: 2 entries + [1690183637.107837][15230:15232] CHIP:TOO: [1]: { + [1690183637.107846][15230:15232] CHIP:TOO: Value: 7 + [1690183637.107856][15230:15232] CHIP:TOO: } + [1690183637.107885][15230:15232] CHIP:TOO: [2]: { + [1690183637.107888][15230:15232] CHIP:TOO: Value: 16384 + [1690183637.107890][15230:15232] CHIP:TOO: } + [1690183637.107894][15230:15232] CHIP:TOO: } disabled: true - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to new_mode_th" PICS: RVCCLEANM.S.C00.Rsp verification: | - ./chip-tool rvcleanm change-to-mode 4 1 1 - + ./chip-tool rvccleanmode change-to-mode 1 1 1 - On TH(chip-tool) , Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931419.768138][20792:20794] CHIP:DMG: StatusIB = - [1684931419.768143][20792:20794] CHIP:DMG: { - [1684931419.768148][20792:20794] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931419.768152][20792:20794] CHIP:DMG: }, + [1690183675.346665][15234:15236] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Command 0x0000_0001 + [1690183675.346731][15234:15236] CHIP:TOO: ChangeToModeResponse: { + [1690183675.346753][15234:15236] CHIP:TOO: status: 0 + [1690183675.346768][15234:15236] CHIP:TOO: } disabled: true - - label: "Step 6: Physically power cycle the device" + - label: "Step 8: Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 9: TH reads from the DUT the StartUpMode attribute." + PICS: RVCCLEANM.S.A0002 + verification: | + ./chip-tool rvccleanmode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer + - Save the value as startup_mode_dut and below is the sample log provided for the raspi platform, Here StartUpMode value is 0 + + [1690545840.189340][3104:3106] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0002 DataVersion: 3338736524 + [1690545840.189408][3104:3106] CHIP:TOO: StartUpMode: 0 + disabled: true + + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: RVCCLEANM.S.A0001 verification: | - ./chip-tool rvcleanm read current-mode 1 1 + ./chip-tool rvccleanmode read current-mode 1 1 - on TH(chip-tool), Verify that CurrentMode attribute value is same as value recorded in step 1 and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_start_up_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 + [1690347752.080278][43423:43425] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 1382495026 + [1690347752.080330][43423:43425] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_3.yaml index 72998922dae970..642926e317d53c 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCCLEANM_3_3.yaml @@ -26,6 +26,24 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + + - label: "Note" + verification: | + To Execute the TC-RVCCLEANM-3.3 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -36,118 +54,171 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: RVCCLEANM.S.A0002 verification: | - ./chip-tool rvcleanm read start-up-mode 1 1 + ./chip-tool rvcrunmode read start-up-mode 1 1 + + On TH(chip-tool), Verify that StartUpMode attribute value is an integer or Null + - Save the value as startup_mode_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is null + + NOTE: if startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. + + [1690546417.725863][3168:3170] CHIP:DMG: } + [1690546417.726042][3168:3170] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 3746592465 + [1690546417.726109][3168:3170] CHIP:TOO: StartUpMode: null + disabled: true + + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: RVCCLEANM.S.A0000 + verification: | + ./chip-tool rvccleanmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690184020.818299][15321:15323] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0000 DataVersion: 3807724300 + [1690184020.818324][15321:15323] CHIP:TOO: SupportedModes: 3 entries + [1690184020.818332][15321:15323] CHIP:TOO: [1]: { + [1690184020.818336][15321:15323] CHIP:TOO: Label: Vacuum + [1690184020.818341][15321:15323] CHIP:TOO: Mode: 0 + [1690184020.818345][15321:15323] CHIP:TOO: ModeTags: 1 entries + [1690184020.818351][15321:15323] CHIP:TOO: [1]: { + [1690184020.818354][15321:15323] CHIP:TOO: Value: 16385 + [1690184020.818357][15321:15323] CHIP:TOO: } + [1690184020.818360][15321:15323] CHIP:TOO: } + [1690184020.818365][15321:15323] CHIP:TOO: [2]: { + [1690184020.818368][15321:15323] CHIP:TOO: Label: Wash + [1690184020.818370][15321:15323] CHIP:TOO: Mode: 1 + [1690184020.818372][15321:15323] CHIP:TOO: ModeTags: 1 entries + [1690184020.818376][15321:15323] CHIP:TOO: [1]: { + [1690184020.818379][15321:15323] CHIP:TOO: Value: 16386 + [1690184020.818381][15321:15323] CHIP:TOO: } + [1690184020.818384][15321:15323] CHIP:TOO: } + [1690184020.818389][15321:15323] CHIP:TOO: [3]: { + [1690184020.818392][15321:15323] CHIP:TOO: Label: Deep clean + [1690184020.818394][15321:15323] CHIP:TOO: Mode: 2 + [1690184020.818398][15321:15323] CHIP:TOO: ModeTags: 2 entries + [1690184020.818402][15321:15323] CHIP:TOO: [1]: { + [1690184020.818404][15321:15323] CHIP:TOO: Value: 7 + [1690184020.818407][15321:15323] CHIP:TOO: } + [1690184020.818410][15321:15323] CHIP:TOO: [2]: { + [1690184020.818412][15321:15323] CHIP:TOO: Value: 16384 + [1690184020.818415][15321:15323] CHIP:TOO: } + [1690184020.818418][15321:15323] CHIP:TOO: } + disabled: true - On TH(chip-tool) log, Verify StartUpMode attribute value is an integer. save this value as startup_mode_dut and below is the sample log provided for the raspi platform: + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: RVCCLEANM.S.A0002 + verification: | + ./chip-tool rvcrunmode write start-up-mode 0 1 1 + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 - [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: 0 + 1690183885.227143][15298:15300] CHIP:DMG: StatusIB = + [1690183885.227148][15298:15300] CHIP:DMG: { + [1690183885.227152][15298:15300] CHIP:DMG: status = 0x00 (SUCCESS), + [1690183885.227156][15298:15300] CHIP:DMG: }, disabled: true - - label: "Step 3: TH reads from the DUT the OnMode attribute." - PICS: RVCCLEANM.S.A0003 && RVCCLEANM.S.A0002 + - label: "Step 5: TH reads from the DUT the OnMode attribute." + PICS: RVCCLEANM.S.A0000 && RVCCLEANM.S.A0002 verification: | - ./chip-tool rvcleanm read on-mode 1 1 + Set onmode to any integer value because as default it value has null. + + ./chip-tool rvccleanmode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690184081.114871][15327:15329] CHIP:DMG: StatusIB = + [1690184081.114874][15327:15329] CHIP:DMG: { + [1690184081.114877][15327:15329] CHIP:DMG: status = 0x00 (SUCCESS), + [1690184081.114879][15327:15329] CHIP:DMG: }, + [1690184081.114883][15327:15329] CHIP:DMG: + + ./chip-tool rvccleanmode read on-mode 1 1 - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as old_on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer + - Save the value as old_on_mode_dut, below is the sample log provided for the raspi platform, here OnMode attribute value is 0 + NOTE: If startup_mode_dut is equal to old_on_mode_dut proceed to step 6. Else proceed to step 8. - [1654780979.979743][61542:61547] CHIP:DMG: } - [1654780979.980040][61542:61547] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 235764160 - [1654780979.980202][61542:61547] CHIP:TOO: OnMode: 4 + [1690184107.425807][15339:15341] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0003 DataVersion: 3807724302 + [1690184107.425849][15339:15341] CHIP:TOO: OnMode: 0 disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." PICS: RVCCLEANM.S.A0000 && RVCCLEANM.S.A0002 verification: | - NOTE: - If the StartUpMode and OnMode attributes have the same value, proceed to step 4, Otherwise proceed to step 6. - - ./chip-tool rvcleanm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1685020074.437287][16950:16952] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 3898153349 - [1685020074.437313][16950:16952] CHIP:TOO: SupportedModes: 3 entries - [1685020074.437620][16950:16952] CHIP:TOO: [1]: { - [1685020074.437632][16950:16952] CHIP:TOO: Label: Black - [1685020074.437635][16950:16952] CHIP:TOO: Mode: 0 - [1685020074.437823][16950:16952] CHIP:TOO: SemanticTags: 1 entries - [1685020074.437834][16950:16952] CHIP:TOO: [1]: { - [1685020074.437838][16950:16952] CHIP:TOO: MfgCode: 0 - [1685020074.437841][16950:16952] CHIP:TOO: Value: 0 - [1685020074.437843][16950:16952] CHIP:TOO: } - [1685020074.437846][16950:16952] CHIP:TOO: } - [1685020074.437852][16950:16952] CHIP:TOO: [2]: { - [1685020074.437854][16950:16952] CHIP:TOO: Label: Cappuccino - [1685020074.437857][16950:16952] CHIP:TOO: Mode: 4 - [1685020074.437861][16950:16952] CHIP:TOO: SemanticTags: 1 entries - [1685020074.437865][16950:16952] CHIP:TOO: [1]: { - [1685020074.437868][16950:16952] CHIP:TOO: MfgCode: 0 - [1685020074.437870][16950:16952] CHIP:TOO: Value: 0 - [1685020074.437873][16950:16952] CHIP:TOO: } - [1685020074.437876][16950:16952] CHIP:TOO: } - [1685020074.437881][16950:16952] CHIP:TOO: [3]: { - [1685020074.437883][16950:16952] CHIP:TOO: Label: Espresso - [1685020074.437885][16950:16952] CHIP:TOO: Mode: 7 - [1685020074.437889][16950:16952] CHIP:TOO: SemanticTags: 1 entries - [1685020074.437892][16950:16952] CHIP:TOO: [1]: { - [1685020074.437895][16950:16952] CHIP:TOO: MfgCode: 0 - [1685020074.437897][16950:16952] CHIP:TOO: Value: 0 - [1685020074.437900][16950:16952] CHIP:TOO: } - [1685020074.437902][16950:16952] CHIP:TOO: } + ./chip-tool rvccleanmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690184020.818299][15321:15323] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0000 DataVersion: 3807724300 + [1690184020.818324][15321:15323] CHIP:TOO: SupportedModes: 3 entries + [1690184020.818332][15321:15323] CHIP:TOO: [1]: { + [1690184020.818336][15321:15323] CHIP:TOO: Label: Vacuum + [1690184020.818341][15321:15323] CHIP:TOO: Mode: 0 + [1690184020.818345][15321:15323] CHIP:TOO: ModeTags: 1 entries + [1690184020.818351][15321:15323] CHIP:TOO: [1]: { + [1690184020.818354][15321:15323] CHIP:TOO: Value: 16385 + [1690184020.818357][15321:15323] CHIP:TOO: } + [1690184020.818360][15321:15323] CHIP:TOO: } + [1690184020.818365][15321:15323] CHIP:TOO: [2]: { + [1690184020.818368][15321:15323] CHIP:TOO: Label: Wash + [1690184020.818370][15321:15323] CHIP:TOO: Mode: 1 + [1690184020.818372][15321:15323] CHIP:TOO: ModeTags: 1 entries + [1690184020.818376][15321:15323] CHIP:TOO: [1]: { + [1690184020.818379][15321:15323] CHIP:TOO: Value: 16386 + [1690184020.818381][15321:15323] CHIP:TOO: } + [1690184020.818384][15321:15323] CHIP:TOO: } + [1690184020.818389][15321:15323] CHIP:TOO: [3]: { + [1690184020.818392][15321:15323] CHIP:TOO: Label: Deep clean + [1690184020.818394][15321:15323] CHIP:TOO: Mode: 2 + [1690184020.818398][15321:15323] CHIP:TOO: ModeTags: 2 entries + [1690184020.818402][15321:15323] CHIP:TOO: [1]: { + [1690184020.818404][15321:15323] CHIP:TOO: Value: 7 + [1690184020.818407][15321:15323] CHIP:TOO: } + [1690184020.818410][15321:15323] CHIP:TOO: [2]: { + [1690184020.818412][15321:15323] CHIP:TOO: Value: 16384 + [1690184020.818415][15321:15323] CHIP:TOO: } + [1690184020.818418][15321:15323] CHIP:TOO: } disabled: true - label: - "Step 5: TH writes to the DUT the OnMode attribute with the + "Step 7: TH writes to the DUT the OnMode attribute with the new_mode_th value" PICS: RVCCLEANM.S.A0003 verification: | - ./chip-tool rvcleanm write on-mode 7 1 1 + ./chip-tool rvccleanmode write on-mode 1 1 1 On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651099941884] [84269:7567211] CHIP: [DMG] WriteResponseMessage = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIBs = - [1651099941884] [84269:7567211] CHIP: [DMG] [ - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIB = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] AttributePathIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] Endpoint = 0x1, - [1651099941887] [84269:7567211] CHIP: [DMG] Cluster = 0x50, - [1651099941887] [84269:7567211] CHIP: [DMG] Attribute = 0x0000_0005, - [1651099941887] [84269:7567211] CHIP: [DMG] } - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] StatusIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] ], - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] InteractionModelRevision = 1 - [1651099941887] [84269:7567211] CHIP: [DMG] } + [1690184081.114871][15327:15329] CHIP:DMG: StatusIB = + [1690184081.114874][15327:15329] CHIP:DMG: { + [1690184081.114877][15327:15329] CHIP:DMG: status = 0x00 (SUCCESS), + [1690184081.114879][15327:15329] CHIP:DMG: }, + [1690184081.114883][15327:15329] CHIP:DMG: disabled: true - - label: "Step 6: TH reads from the DUT the OnMode attribute." - PICS: RVCCLEANM.S.A0003 && RVCCLEANM.S.F00 + - label: "Step 8: TH reads from the DUT the OnMode attribute." + PICS: RVCCLEANM.S.A0003 && RVCCLEANM.S.F00 verification: | - ./chip-tool rvcleanm read on-mode 1 1 + ./chip-tool rvccleanmode read on-mode 1 1 - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as new_on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer value + - Save the value as new_on_mode_dut and is equal to new_mode_th, below is the sample log provided for the raspi platform, Here OnMode attribute value is 1 - } - [1669190858.739158][4187:4189] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4107771634 - [1669190858.739222][4187:4189] CHIP:TOO: OnMode: 7 + [1690184107.425807][15339:15341] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0003 DataVersion: 3807724302 + [1690184107.425849][15339:15341] CHIP:TOO: OnMode: 1 disabled: true - label: - "Step 7: TH writes to the DUT the StartUpOnOff attribute with the + "Step 9: TH writes to the DUT the StartUpOnOff attribute with the value 1." PICS: OO.S.A4003 verification: | @@ -181,20 +252,30 @@ tests: [1651101661960] [90832:7598169] CHIP: [DMG] } disabled: true - - label: "Step 8: Physically power cycle the device" + - label: "Step 10: Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." - PICS: RVCCLEANM.S.A0001 + - label: "Step 11: TH reads from the DUT the StartUpMode attribute." + PICS: RVCCLEANM.S.A0002 verification: | - ./chip-tool rvcleanm read current-mode 1 1 + ./chip-tool rvcrunmode read start-up-mode 1 1 + + On TH(chip-tool), Verify that StartUpMode attribute value is an integer and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is 0 + [1690546417.725863][3168:3170] CHIP:DMG: } + [1690546417.726042][3168:3170] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 3746592465 + [1690546417.726109][3168:3170] CHIP:TOO: StartUpMode: 0 + disabled: true + + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." + PICS: RVCCLEANM.S.A0001 + verification: | + ./chip-tool rvccleanmode read current-mode 1 1 - On TH(chip-tool),Verify CurrentMode attribute value is same as the value recorded in step 3 and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_on_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 - } - [1669190936.869804][4194:4196] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3908583538 - [1669190936.869875][4194:4196] CHIP:TOO: CurrentMode: 7 + [1690551030.852196][219235:219237] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0055 Attribute 0x0000_0001 DataVersion: 2491081179 + [1690551030.852224][219235:219237] CHIP:TOO: CurrentMode: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCOPSTATE_1_1.yaml b/src/app/tests/suites/certification/Test_TC_RVCOPSTATE_1_1.yaml index d0091a46667466..a18554e6955246 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCOPSTATE_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCOPSTATE_1_1.yaml @@ -19,7 +19,7 @@ PICS: config: nodeId: 0x12344321 - cluster: "Rvc Operational State" + cluster: "RVC Operational State" endpoint: 1 tests: @@ -32,7 +32,6 @@ tests: value: nodeId - label: "Step 2: TH reads the ClusterRevision attribute from the DUT" - PICS: RVCOPSTATE.S.Afffd command: "readAttribute" attribute: "ClusterRevision" response: @@ -41,7 +40,6 @@ tests: type: int16u - label: "Step 3: TH reads the FeatureMap attribute from the DUT" - PICS: RVCOPSTATE.S.Afffc command: "readAttribute" attribute: "FeatureMap" response: @@ -50,7 +48,7 @@ tests: type: bitmap32 - label: "Step 4a: TH reads the AttributeList attribute from the DUT" - PICS: PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" attribute: "AttributeList" response: @@ -60,7 +58,7 @@ tests: [0, 1, 3, 4, 5, 65528, 65529, 65530, 65531, 65532, 65533] - label: "Step 4a: TH reads the AttributeList attribute from the DUT" - PICS: "!PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" command: "readAttribute" attribute: "AttributeList" response: @@ -71,7 +69,7 @@ tests: - label: "Step 4b: TH reads from the DUT the optional attribute(CountdownTime) in the AttributeList from the DUT" - PICS: RVCOPSTATE.S.A0002 && RVCOPSTATE.S.Afffb + PICS: RVCOPSTATE.S.A0002 command: "readAttribute" attribute: "AttributeList" response: @@ -80,7 +78,7 @@ tests: contains: [2] - label: "Step 5a: TH reads from the DUT the EventList attribute." - PICS: PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" attribute: "EventList" response: @@ -91,7 +89,7 @@ tests: - label: "Step 5b: TH reads from the DUT the optional event(OperationCompletion) in EventList." - PICS: PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.E01 && RVCOPSTATE.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.E01 command: "readAttribute" attribute: "EventList" response: @@ -99,35 +97,35 @@ tests: type: list contains: [0x01] - - label: "Step 6a: Read the optional command(Start) in AcceptedCommandList" - PICS: RVCOPSTATE.S.C02.Rsp && RVCOPSTATE.S.Afff9 + - label: "Step 6a: Read the optional command(Pause) in AcceptedCommandList" + PICS: RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C03.Rsp command: "readAttribute" attribute: "AcceptedCommandList" response: constraints: type: list - contains: [1, 2] + contains: [0, 3] - label: "Step 6b: Read the optional command(Stop) in AcceptedCommandList" - PICS: RVCOPSTATE.S.C01.Rsp && RVCOPSTATE.S.Afff9 + PICS: RVCOPSTATE.S.C01.Rsp || RVCOPSTATE.S.C02.Rsp command: "readAttribute" attribute: "AcceptedCommandList" response: constraints: type: list - contains: [1] + contains: [1, 2] - - label: "Step 6c: Read the optional command(Pause) in AcceptedCommandList" - PICS: RVCOPSTATE.S.C00.Rsp && RVCOPSTATE.S.Afff9 + - label: "Step 6c: Read the optional command(Start) in AcceptedCommandList" + PICS: RVCOPSTATE.S.C02.Rsp command: "readAttribute" attribute: "AcceptedCommandList" response: constraints: type: list - contains: [0, 3] + contains: [2] - label: "Step 6d: Read the optional command(Resume) in AcceptedCommandList" - PICS: RVCOPSTATE.S.C03.Rsp && RVCOPSTATE.S.Afff9 + PICS: RVCOPSTATE.S.C03.Rsp || RVCOPSTATE.S.C00.Rsp command: "readAttribute" attribute: "AcceptedCommandList" response: @@ -137,8 +135,8 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" PICS: - RVCOPSTATE.S.Afff8 && (RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C01.Rsp || - RVCOPSTATE.S.C02.Rsp || RVCOPSTATE.S.C03.Rsp) + " RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C01.Rsp || RVCOPSTATE.S.C02.Rsp + || RVCOPSTATE.S.C03.Rsp " command: "readAttribute" attribute: "GeneratedCommandList" response: diff --git a/src/app/tests/suites/certification/Test_TC_RVCRUNM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_RVCRUNM_1_2.yaml index a07df119487273..75fb98f6ff69b1 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCRUNM_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCRUNM_1_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,75 +39,73 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: RVCRUNM.S.A0000 verification: | - ./chip-tool rvcrunm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains atleast two ModeOptionsStruct entries with unique mode field value and label field value below is the sample log provided for the raspi platform: - - [1654595167.600241][14362:14367] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595167.600345][14362:14367] CHIP:TOO: SupportedModes: 3 entries - [1654595167.600403][14362:14367] CHIP:TOO: [1]: { - [1654595167.600430][14362:14367] CHIP:TOO: Label: Black - [1654595167.600466][14362:14367] CHIP:TOO: Mode: 0 - [1654595167.600495][14362:14367] CHIP:TOO: SemanticTags: 1 entries - [1654595167.600564][14362:14367] CHIP:TOO: [1]: { - [1654595167.600589][14362:14367] CHIP:TOO: MfgCode: 0 - [1654595167.600612][14362:14367] CHIP:TOO: Value: 0 - [1654595167.600637][14362:14367] CHIP:TOO: } - [1654595167.600662][14362:14367] CHIP:TOO: } - [1654595167.600695][14362:14367] CHIP:TOO: [2]: { - [1654595167.600719][14362:14367] CHIP:TOO: Label: Cappuccino - [1654595167.600742][14362:14367] CHIP:TOO: Mode: 4 - [1654595167.600768][14362:14367] CHIP:TOO: SemanticTags: 1 entries - [1654595167.600796][14362:14367] CHIP:TOO: [1]: { - [1654595167.600820][14362:14367] CHIP:TOO: MfgCode: 0 - [1654595167.600842][14362:14367] CHIP:TOO: Value: 0 - [1654595167.600865][14362:14367] CHIP:TOO: } - [1654595167.600889][14362:14367] CHIP:TOO: } - [1654595167.600921][14362:14367] CHIP:TOO: [3]: { - [1654595167.600945][14362:14367] CHIP:TOO: Label: Espresso - [1654595167.600968][14362:14367] CHIP:TOO: Mode: 7 - [1654595167.600993][14362:14367] CHIP:TOO: SemanticTags: 1 entries - [1654595167.601022][14362:14367] CHIP:TOO: [1]: { - [1654595167.601046][14362:14367] CHIP:TOO: MfgCode: 0 - [1654595167.601068][14362:14367] CHIP:TOO: Value: 0 - [1654595167.601091][14362:14367] CHIP:TOO: } - [1654595167.601115][14362:14367] CHIP:TOO: } + ./chip-tool rvcrunmode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries. + - Verify that list should contain at least one entry + - Verify that each ModeOptionsStruct entry has a unique Mode field value and Label field value + - ModeOptionsStruct entry’s ModeTags field is not empty, then Verify the values of the Value fields that are not larger than 16 bits, for each Value field: Is the semantic tag value a defined common tag value (Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster alias tag value (RapidCool, RapidFreeze) or in the MfgTags (0x8000 to 0xBFFF) range + - If the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 + - Verify that at least one ModeOptionsStruct entry includes either the RapidCool semantic tag or the RapidFreeze semantic tag in the SemanticTags field + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690177496.793840][6284:6286] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 551764487 + [1690177496.794090][6284:6286] CHIP:TOO: SupportedModes: 3 entries + [1690177496.794285][6284:6286] CHIP:TOO: [1]: { + [1690177496.794343][6284:6286] CHIP:TOO: Label: Idle + [1690177496.794396][6284:6286] CHIP:TOO: Mode: 0 + [1690177496.794457][6284:6286] CHIP:TOO: ModeTags: 1 entries + [1690177496.794573][6284:6286] CHIP:TOO: [1]: { + [1690177496.794631][6284:6286] CHIP:TOO: Value: 16384 + [1690177496.794682][6284:6286] CHIP:TOO: } + [1690177496.794737][6284:6286] CHIP:TOO: } + [1690177496.794809][6284:6286] CHIP:TOO: [2]: { + [1690177496.794861][6284:6286] CHIP:TOO: Label: Cleaning + [1690177496.794910][6284:6286] CHIP:TOO: Mode: 1 + [1690177496.794967][6284:6286] CHIP:TOO: ModeTags: 1 entries + [1690177496.795031][6284:6286] CHIP:TOO: [1]: { + [1690177496.795085][6284:6286] CHIP:TOO: Value: 16385 + [1690177496.795135][6284:6286] CHIP:TOO: } + [1690177496.795186][6284:6286] CHIP:TOO: } + [1690177496.795257][6284:6286] CHIP:TOO: [3]: { + [1690177496.795309][6284:6286] CHIP:TOO: Label: Mapping + [1690177496.795358][6284:6286] CHIP:TOO: Mode: 2 + [1690177496.795415][6284:6286] CHIP:TOO: ModeTags: 1 entries + [1690177496.795478][6284:6286] CHIP:TOO: [1]: { + [1690177496.795531][6284:6286] CHIP:TOO: Value: 16384 + [1690177496.795581][6284:6286] CHIP:TOO: } + [1690177496.795632][6284:6286] CHIP:TOO: } disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | - ./chip-tool rvcrunm read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut and below is the sample log provided for the raspi platform: + ./chip-tool rvcrunmode read current-mode 1 1 - [1645776767.611140][4667:4672] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469718 + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1645776767.611214][4667:4672] CHIP:TOO: CurrentMode: 0 + [1690177606.359517][6295:6297] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 551764487 + [1690177606.359639][6295:6297] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the OnMode attribute." PICS: RVCRUNM.S.A0003 verification: | - ./chip-tool rvcrunm read on-mode 1 1 + ./chip-tool rvcrunmode read on-mode 1 1 - Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null), below is the sample log provided for the raspi platform, Here OnMode attribute value is Null - - [1649676072.465968][10754:10759] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065072 - - [1649676072.466094][10754:10759] CHIP:TOO: OnMode: null + [1690177656.364979][6304:6306] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0003 DataVersion: 551764487 + [1690177656.365109][6304:6306] CHIP:TOO: OnMode: null disabled: true - label: "Step 5: TH reads from the DUT the StartUpMode attribute." PICS: RVCRUNM.S.A0002 verification: | - ./chip-tool rvcrunm read start-up-mode 1 1 - - Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer and value is from supported_modes_dut, below is the sample log provided for the raspi platform: - + ./chip-tool rvcrunmode read start-up-mode 1 1 - [1649677014.496348][10778:10784] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 4277065072 + Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer(As per spec default value is null) and value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is Null - [1649677014.496469][10778:10784] CHIP:TOO: StartUpMode: 0 + [1690177698.954736][6311:6313] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 551764487 + [1690177698.954865][6311:6313] CHIP:TOO: StartUpMode: null disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCRUNM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_RVCRUNM_2_1.yaml index 9bee2e3539087c..02ecb4f0a3d981 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCRUNM_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCRUNM_2_1.yaml @@ -34,143 +34,182 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: RVCRUNM.S.A0000 verification: | - ./chip-tool rvcrunm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute should contains two or more ModeOptionsStruct entries and save the Mode field values as supported_modes_dut, below is the sample log provided for the raspi platform: - - [1685018204.991818][16390:16392] CHIP:DMG: } - [1685018204.992182][16390:16392] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 3673378954 - [1685018204.992279][16390:16392] CHIP:TOO: SupportedModes: 3 entries - [1685018204.992320][16390:16392] CHIP:TOO: [1]: { - [1685018204.992331][16390:16392] CHIP:TOO: Label: Black - [1685018204.992350][16390:16392] CHIP:TOO: Mode: 0 - [1685018204.992376][16390:16392] CHIP:TOO: SemanticTags: 1 entries - [1685018204.992408][16390:16392] CHIP:TOO: [1]: { - [1685018204.992420][16390:16392] CHIP:TOO: MfgCode: 0 - [1685018204.992430][16390:16392] CHIP:TOO: Value: 0 - [1685018204.992440][16390:16392] CHIP:TOO: } - [1685018204.992452][16390:16392] CHIP:TOO: } - [1685018204.992482][16390:16392] CHIP:TOO: [2]: { - [1685018204.992492][16390:16392] CHIP:TOO: Label: Cappuccino - [1685018204.992504][16390:16392] CHIP:TOO: Mode: 4 - [1685018204.992525][16390:16392] CHIP:TOO: SemanticTags: 1 entries - [1685018204.992547][16390:16392] CHIP:TOO: [1]: { - [1685018204.992558][16390:16392] CHIP:TOO: MfgCode: 0 - [1685018204.992567][16390:16392] CHIP:TOO: Value: 0 - [1685018204.992578][16390:16392] CHIP:TOO: } - [1685018204.992588][16390:16392] CHIP:TOO: } - [1685018204.992610][16390:16392] CHIP:TOO: [3]: { - [1685018204.992619][16390:16392] CHIP:TOO: Label: Espresso - [1685018204.992628][16390:16392] CHIP:TOO: Mode: 7 - [1685018204.992641][16390:16392] CHIP:TOO: SemanticTags: 1 entries - [1685018204.992657][16390:16392] CHIP:TOO: [1]: { - [1685018204.992666][16390:16392] CHIP:TOO: MfgCode: 0 - [1685018204.992678][16390:16392] CHIP:TOO: Value: 0 - [1685018204.992687][16390:16392] CHIP:TOO: } - [1685018204.992695][16390:16392] CHIP:TOO: } + ./chip-tool rvcrunmode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690177742.429087][6315:6317] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 551764487 + [1690177742.429341][6315:6317] CHIP:TOO: SupportedModes: 3 entries + [1690177742.429483][6315:6317] CHIP:TOO: [1]: { + [1690177742.429540][6315:6317] CHIP:TOO: Label: Idle + [1690177742.429595][6315:6317] CHIP:TOO: Mode: 0 + [1690177742.429658][6315:6317] CHIP:TOO: ModeTags: 1 entries + [1690177742.429732][6315:6317] CHIP:TOO: [1]: { + [1690177742.429791][6315:6317] CHIP:TOO: Value: 16384 + [1690177742.429842][6315:6317] CHIP:TOO: } + [1690177742.429892][6315:6317] CHIP:TOO: } + [1690177742.429967][6315:6317] CHIP:TOO: [2]: { + [1690177742.430020][6315:6317] CHIP:TOO: Label: Cleaning + [1690177742.430070][6315:6317] CHIP:TOO: Mode: 1 + [1690177742.430188][6315:6317] CHIP:TOO: ModeTags: 1 entries + [1690177742.430263][6315:6317] CHIP:TOO: [1]: { + [1690177742.430320][6315:6317] CHIP:TOO: Value: 16385 + [1690177742.430374][6315:6317] CHIP:TOO: } + [1690177742.430427][6315:6317] CHIP:TOO: } + [1690177742.430501][6315:6317] CHIP:TOO: [3]: { + [1690177742.430555][6315:6317] CHIP:TOO: Label: Mapping + [1690177742.430605][6315:6317] CHIP:TOO: Mode: 2 + [1690177742.430664][6315:6317] CHIP:TOO: ModeTags: 1 entries + [1690177742.430729][6315:6317] CHIP:TOO: [1]: { + [1690177742.430784][6315:6317] CHIP:TOO: Value: 16384 + [1690177742.430901][6315:6317] CHIP:TOO: } + [1690177742.430966][6315:6317] CHIP:TOO: } disabled: true - - label: "Step 2: TH reads from the DUT the CurrentMode attribute." + - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | - ./chip-tool rvcrunm read current-mode 1 1 - - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value - - save tha value as old_current_mode_dut - - select a value from supported_modes_dut, different from old_current_mode_dut, and which corresponds to a mode the device can switch to, given its current state and save this value as new_mode_th - - select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, - below is the sample log provided for the raspi platform: - - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } - [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 - [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 + ./chip-tool rvcrunmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut + - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + + [1690177776.069002][6321:6323] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 551764487 + [1690177776.069137][6321:6323] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 3: TH sends a ChangeToMode command to the DUT with NewMode set - to old_current_mode_dut [Petru] note that currently this constraint is - not in the spec. The unapproved proposal is here: - https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/7096 - Until that's approved, please skip this step." + "Step 4: TH sends a ChangeToMode command to the DUT with NewMode set + to old_current_mode_dut" PICS: RVCRUNM.S.C00.Rsp verification: | - ChangeToMode Command is not impleented. + ./chip-tool rvcrunmode change-to-mode 1 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690177967.451381][6333:6335] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690177967.451491][6333:6335] CHIP:TOO: ChangeToModeResponse: { + [1690177967.451542][6333:6335] CHIP:TOO: status: 0 + [1690177967.451590][6333:6335] CHIP:TOO: } disabled: true - label: - "Step 4: Manually put the device in a state from which it will FAIL to - transition to PIXIT.RVCCLEANM.MODE_CHANGE_FAIL" + "Step 5: Manually put the device in a state from which it will FAIL to + transition to PIXIT.RVCRUNM.MODE_CHANGE_FAIL" + PICS: PIXIT.RVCRUNM.CAN_TEST_MODE_FAILURE verification: | - + Manual operation required disabled: true - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + - label: "Step 6: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | + ./chip-tool rvcrunmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 + [1690202974.725219][18214:18216] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 2507484088 + [1690202974.725506][18214:18216] CHIP:TOO: CurrentMode: 1 disabled: true - label: - "Step 6: TH sends a ChangeToMode command to the DUT with NewMode set - to PIXIT.RVCCLEANM.MODE_CHANGE_FAIL" - PICS: RVCRUNM.S.C00.Rsp + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set + to PIXIT.RVCRUNM.MODE_CHANGE_FAIL" + PICS: PIXIT.RVCRUNM.CAN_TEST_MODE_FAILURE && RVCRUNM.S.C00.Rsp verification: | - ChangeToMode Command is not impleented. + ./chip-tool rvcrunmode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a GenericFailure(0x02) status response and StatusText field has a length between 1 and 64, below is the sample log provided for the raspi platform: + + [1690178461.944185][6368:6370] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690178461.944369][6368:6370] CHIP:TOO: ChangeToModeResponse: { + [1690178461.944457][6368:6370] CHIP:TOO: status: 2 + [1690178461.944517][6368:6370] CHIP:TOO: statusText: Change to the mapping mode is only allowed from idle + [1690178461.944578][6368:6370] CHIP:TOO: } disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | - ./chip-tool rvcrunm read current-mode 1 1 + ./chip-tool rvcrunmode read current-mode 1 1 - Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and equal to the new_mode_th, below is the sample log provided for the raspi platform: + Verify on TH(chip-tool), CurrentMode attribute value is an integer value and equal to old_current_mode_dut below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 - [1685018283.726571][16418:16420] CHIP:DMG: SuppressResponse = true, - [1685018283.726581][16418:16420] CHIP:DMG: InteractionModelRevision = 1 - [1685018283.726589][16418:16420] CHIP:DMG: } - [1685018283.726667][16418:16420] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3898153349 - [1685018283.726680][16418:16420] CHIP:TOO: CurrentMode: 0 + [1690203073.106487][18256:18258] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 468915104 + [1690203073.106525][18256:18258] CHIP:TOO: CurrentMode: 1 disabled: true - label: - "Step 8: Manually put the device in a state from which it will - SUCCESSFULLY transition to PIXIT.RVCCLEANM.MODE_CHANGE_OK" + "Step 9: Manually put the device in a state from which it will + SUCCESSFULLY transition to PIXIT.RVCRUNM.MODE_CHANGE_OK" verification: | - + Manual operation required disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | + ./chip-tool rvcrunmode read current-mode 1 1 + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 + + [1690203090.571985][18263:18265] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 468915104 + [1690203090.571996][18263:18265] CHIP:TOO: CurrentMode: 1 disabled: true - label: - "Step 10: TH sends a ChangeToMode command to the DUT with NewMode set - to PIXIT.RVCCLEANM.MODE_CHANGE_OK" + "Step 11: TH sends a ChangeToMode command to the DUT with NewMode set + to PIXIT.RVCRUNM.MODE_CHANGE_OK" PICS: RVCRUNM.S.C00.Rsp verification: | - ChangeToMode Command is not impleented. + ./chip-tool rvcrunmode change-to-mode 0 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690178355.021382][6358:6360] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690178355.021533][6358:6360] CHIP:TOO: ChangeToModeResponse: { + [1690178355.021692][6358:6360] CHIP:TOO: status: 0 + [1690178355.021750][6358:6360] CHIP:TOO: } disabled: true - - label: "Step 11: TH reads from the DUT the CurrentMode attribute." + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | + ./chip-tool rvcrunmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 11, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + [1690203144.862081][18275:18277] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 468915105 + [1690203144.862121][18275:18277] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 12: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 13: TH sends a ChangeToMode command to the DUT with NewMode set to invalid_mode_th" PICS: RVCRUNM.S.C00.Rsp verification: | + ./chip-tool rvcrunmode change-to-mode 5 1 1 + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a UnsupportedMode(0x01) status response and below is the sample log provided for the raspi platform: + + [1690178736.566529][6381:6383] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690178736.566677][6381:6383] CHIP:TOO: ChangeToModeResponse: { + [1690178736.566761][6381:6383] CHIP:TOO: status: 1 + [1690178736.566816][6381:6383] CHIP:TOO: } disabled: true - - label: "Step 13: TH reads from the DUT the CurrentMode attribute." + - label: "Step 14: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | + ./chip-tool rvcrunmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 12, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + [1690203158.762178][18282:18284] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 468915105 + [1690203158.762194][18282:18284] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_1.yaml index e39f50f1870ba6..5279d6c054270a 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_1.yaml @@ -24,6 +24,27 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + 1. RVC Run Mode and OnOff clusters are available on the same endpoint + + 2. The OnMode attribute is set to a non-NULL value from the mode values indicated by the SupportedModes attribute. + disabled: true + + - label: "Note" + verification: | + To execute this test case set onmode to any integer value because as default it value has null. + + ./chip-tool rvcrunmode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690178870.051558][6396:6398] CHIP:DMG: StatusIB = + [1690178870.051652][6396:6398] CHIP:DMG: { + [1690178870.051727][6396:6398] CHIP:DMG: status = 0x00 (SUCCESS), + [1690178870.051799][6396:6398] CHIP:DMG: }, + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,63 +55,65 @@ tests: - label: "Step 2: TH reads from the DUT the OnMode attribute." PICS: RVCRUNM.S.A0003 && RVCRUNM.S.F00 verification: | - ./chip-tool rvcrunm read on-mode 1 1 + ./chip-tool rvcrunmode read on-mode 1 1 - On TH(chip-tool), Verify OnMode attribute value is an integer. save the value as on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer or Null + Save the value as on_mode_dut and below is the sample log provided for the raspi platform, here OnMode value is 0 - [1649678983.679893][10871:10876] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4277065073 - [1649678983.680002][10871:10876] CHIP:TOO: OnMode: 0 + [1690265382.010747][30073:30075] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0003 DataVersion: 172461204 + [1690265382.010769][30073:30075] CHIP:TOO: OnMode: 0 disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 && RVCRUNM.S.F00 verification: | - ./chip-tool rvcrunm read current-mode 1 1 + ./chip-tool rvcrunmode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute is an integer. + Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 - On TH(chip-tool), Verify CurrentMode attribute is an integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - [1649679034.895848][10879:10884] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679034.895972][10879:10884] CHIP:TOO: CurrentMode: 0 + [1690179152.516820][6454:6456] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 2795852718 + [1690179152.516952][6454:6456] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the SupportedModes attribute." PICS: RVCRUNM.S.A0000 && RVCRUNM.S.F00 verification: | - ./chip-tool rvcrunm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries - [1654595268.854743][14400:14405] CHIP:TOO: [1]: { - [1654595268.854772][14400:14405] CHIP:TOO: Label: Black - [1654595268.854811][14400:14405] CHIP:TOO: Mode: 0 - [1654595268.854843][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.854891][14400:14405] CHIP:TOO: [1]: { - [1654595268.854918][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.854945][14400:14405] CHIP:TOO: Value: 0 - [1654595268.854971][14400:14405] CHIP:TOO: } - [1654595268.855000][14400:14405] CHIP:TOO: } - [1654595268.855038][14400:14405] CHIP:TOO: [2]: { - [1654595268.855064][14400:14405] CHIP:TOO: Label: Cappuccino - [1654595268.855089][14400:14405] CHIP:TOO: Mode: 4 - [1654595268.855117][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855149][14400:14405] CHIP:TOO: [1]: { - [1654595268.855175][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855199][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855223][14400:14405] CHIP:TOO: } - [1654595268.855249][14400:14405] CHIP:TOO: } - [1654595268.855284][14400:14405] CHIP:TOO: [3]: { - [1654595268.855310][14400:14405] CHIP:TOO: Label: Espresso - [1654595268.855332][14400:14405] CHIP:TOO: Mode: 7 - [1654595268.855360][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855390][14400:14405] CHIP:TOO: [1]: { - [1654595268.855416][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855440][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855464][14400:14405] CHIP:TOO: } - [1654595268.855490][14400:14405] CHIP:TOO: } - [1649677252.376226][10804:10809] CHIP:TOO: SemanticTag: 0 - [1649677252.376252][10804:10809] CHIP:TOO: } + ./chip-tool rvcrunmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690179211.761627][6462:6464] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 2795852718 + [1690179211.761873][6462:6464] CHIP:TOO: SupportedModes: 3 entries + [1690179211.762019][6462:6464] CHIP:TOO: [1]: { + [1690179211.762079][6462:6464] CHIP:TOO: Label: Idle + [1690179211.762131][6462:6464] CHIP:TOO: Mode: 0 + [1690179211.762193][6462:6464] CHIP:TOO: ModeTags: 1 entries + [1690179211.762265][6462:6464] CHIP:TOO: [1]: { + [1690179211.762324][6462:6464] CHIP:TOO: Value: 16384 + [1690179211.762376][6462:6464] CHIP:TOO: } + [1690179211.762429][6462:6464] CHIP:TOO: } + [1690179211.762502][6462:6464] CHIP:TOO: [2]: { + [1690179211.762555][6462:6464] CHIP:TOO: Label: Cleaning + [1690179211.762605][6462:6464] CHIP:TOO: Mode: 1 + [1690179211.762664][6462:6464] CHIP:TOO: ModeTags: 1 entries + [1690179211.762729][6462:6464] CHIP:TOO: [1]: { + [1690179211.762785][6462:6464] CHIP:TOO: Value: 16385 + [1690179211.762843][6462:6464] CHIP:TOO: } + [1690179211.762892][6462:6464] CHIP:TOO: } + [1690179211.762966][6462:6464] CHIP:TOO: [3]: { + [1690179211.763019][6462:6464] CHIP:TOO: Label: Mapping + [1690179211.763069][6462:6464] CHIP:TOO: Mode: 2 + [1690179211.763127][6462:6464] CHIP:TOO: ModeTags: 1 entries + [1690179211.763193][6462:6464] CHIP:TOO: [1]: { + [1690179211.763248][6462:6464] CHIP:TOO: Value: 16384 + [1690179211.763299][6462:6464] CHIP:TOO: } + [1690179211.763351][6462:6464] CHIP:TOO: } disabled: true - label: @@ -98,16 +121,14 @@ tests: to new_mode_th" PICS: RVCRUNM.S.C00.Rsp && RVCRUNM.S.F00 verification: | - ./chip-tool rvcrunm change-to-mode 7 1 1 + ./chip-tool rvcrunmode change-to-mode 1 1 1 - On TH(chip-tool) log, verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - [1684931013.571019][20667:20669] CHIP:DMG: - [1684931013.571021][20667:20669] CHIP:DMG: StatusIB = - [1684931013.571024][20667:20669] CHIP:DMG: { - [1684931013.571027][20667:20669] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931013.571030][20667:20669] CHIP:DMG: }, - [1684931013.571034][20667:20669] CHIP:DMG: + [1690179263.329118][6471:6473] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690179263.329338][6471:6473] CHIP:TOO: ChangeToModeResponse: { + [1690179263.329435][6471:6473] CHIP:TOO: status: 0 + [1690179263.329489][6471:6473] CHIP:TOO: } disabled: true - label: "Step 6: TH sends a Off command to the DUT" @@ -139,10 +160,10 @@ tests: - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 && RVCRUNM.S.F00 verification: | - ./chip-tool rvcrunm read current-mode 1 1 + ./chip-tool rvcrunmode read current-mode 1 1 - On TH(chip-tool),verify that CurrentMode attribute value is an integer and value is equal to on_mode_dut. below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to on_mode_dut, below is the sample log provided for the raspi platform, here CurrentMode attribute value is 0 - [1649679202.069163][10899:10904] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 4277065073 - [1649679202.069278][10899:10904] CHIP:TOO: CurrentMode: 0 + [1690179336.313000][6489:6491] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 2795852720 + [1690179336.313132][6489:6491] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_2.yaml index 962f9c02e50dbe..47f0fdfb340d75 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_2.yaml @@ -24,6 +24,24 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + + - label: "Note" + verification: | + To Execute the TC-RVCRUNM-3.2 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,96 +52,165 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: RVCRUNM.S.A0002 verification: | - ./chip-tool rvcrunm read start-up-mode 1 1 + ./chip-tool rvcrunmode read start-up-mode 1 1 - On TH(chip-tool), Verify StartUpMode attribute value is an integer. save the valueas startup_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify StartUpMode attribute value is an integer. + - Save the value as startup_mode_dut + - If startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. + and below is the sample log provided for the raspi platform: + - Here StartUpMode value is null proced to step3 - [1645777708.406864][4841:4846] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469721 - [1645777708.406933][4841:4846] CHIP:TOO: StartUpMode: 0 + [1690543468.611591][2895:2897] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 2245114918 + [1690543468.611648][2895:2897] CHIP:TOO: StartUpMode: null disabled: true - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: RVCRUNM.S.A0001 + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: RVCRUNM.S.A0000 + verification: | + ./chip-tool rvcrunmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690179857.830697][14130:14132] CHIP:DMG: } + [1690179857.831035][14130:14132] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 290070852 + [1690179857.831058][14130:14132] CHIP:TOO: SupportedModes: 3 entries + [1690179857.831069][14130:14132] CHIP:TOO: [1]: { + [1690179857.831072][14130:14132] CHIP:TOO: Label: Idle + [1690179857.831077][14130:14132] CHIP:TOO: Mode: 0 + [1690179857.831082][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831090][14130:14132] CHIP:TOO: [1]: { + [1690179857.831093][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831096][14130:14132] CHIP:TOO: } + [1690179857.831099][14130:14132] CHIP:TOO: } + [1690179857.831104][14130:14132] CHIP:TOO: [2]: { + [1690179857.831107][14130:14132] CHIP:TOO: Label: Cleaning + [1690179857.831109][14130:14132] CHIP:TOO: Mode: 1 + [1690179857.831112][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831115][14130:14132] CHIP:TOO: [1]: { + [1690179857.831118][14130:14132] CHIP:TOO: Value: 16385 + [1690179857.831121][14130:14132] CHIP:TOO: } + [1690179857.831124][14130:14132] CHIP:TOO: } + [1690179857.831128][14130:14132] CHIP:TOO: [3]: { + [1690179857.831131][14130:14132] CHIP:TOO: Label: Mapping + [1690179857.831133][14130:14132] CHIP:TOO: Mode: 2 + [1690179857.831135][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831138][14130:14132] CHIP:TOO: [1]: { + [1690179857.831141][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831143][14130:14132] CHIP:TOO: } + [1690179857.831146][14130:14132] CHIP:TOO: } + disabled: true + + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: RVCRUNM.S.A0002 verification: | - ./chip-tool rvcrunm read current-mode 1 1 + ./chip-tool rvcrunmode write start-up-mode 0 1 1 - On TH(chip-tool), Verify CurrentMode attribute value is integer. save the value as old_current_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690179737.189558][14110:14112] CHIP:DMG: StatusIB = + [1690179737.189576][14110:14112] CHIP:DMG: { + [1690179737.189592][14110:14112] CHIP:DMG: status = 0x00 (SUCCESS), + [1690179737.189607][14110:14112] CHIP:DMG: }, + disabled: true + + - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + PICS: RVCRUNM.S.A0001 + verification: | + ./chip-tool rvcrunmode read current-mode 1 1 - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 6. Else proceed to step 8. - If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + [1690180034.919766][14170:14172] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 1228902958 + [1690180034.919778][14170:14172] CHIP:TOO: CurrentMode: 0 disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." PICS: RVCRUNM.S.A0000 verification: | - ./chip-tool rvcrunm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1654595268.854568][14400:14405] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 366231602 - [1654595268.854678][14400:14405] CHIP:TOO: SupportedModes: 3 entries - [1654595268.854743][14400:14405] CHIP:TOO: [1]: { - [1654595268.854772][14400:14405] CHIP:TOO: Label: Black - [1654595268.854811][14400:14405] CHIP:TOO: Mode: 0 - [1654595268.854843][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.854891][14400:14405] CHIP:TOO: [1]: { - [1654595268.854918][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.854945][14400:14405] CHIP:TOO: Value: 0 - [1654595268.854971][14400:14405] CHIP:TOO: } - [1654595268.855000][14400:14405] CHIP:TOO: } - [1654595268.855038][14400:14405] CHIP:TOO: [2]: { - [1654595268.855064][14400:14405] CHIP:TOO: Label: Cappuccino - [1654595268.855089][14400:14405] CHIP:TOO: Mode: 4 - [1654595268.855117][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855149][14400:14405] CHIP:TOO: [1]: { - [1654595268.855175][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855199][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855223][14400:14405] CHIP:TOO: } - [1654595268.855249][14400:14405] CHIP:TOO: } - [1654595268.855284][14400:14405] CHIP:TOO: [3]: { - [1654595268.855310][14400:14405] CHIP:TOO: Label: Espresso - [1654595268.855332][14400:14405] CHIP:TOO: Mode: 7 - [1654595268.855360][14400:14405] CHIP:TOO: SemanticTags: 1 entries - [1654595268.855390][14400:14405] CHIP:TOO: [1]: { - [1654595268.855416][14400:14405] CHIP:TOO: MfgCode: 0 - [1654595268.855440][14400:14405] CHIP:TOO: Value: 0 - [1654595268.855464][14400:14405] CHIP:TOO: } - [1654595268.855490][14400:14405] CHIP:TOO: } - [1649677252.376226][10804:10809] CHIP:TOO: SemanticTag: 0 - [1649677252.376252][10804:10809] CHIP:TOO: } + ./chip-tool rvcrunmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690179857.830697][14130:14132] CHIP:DMG: } + [1690179857.831035][14130:14132] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 290070852 + [1690179857.831058][14130:14132] CHIP:TOO: SupportedModes: 3 entries + [1690179857.831069][14130:14132] CHIP:TOO: [1]: { + [1690179857.831072][14130:14132] CHIP:TOO: Label: Idle + [1690179857.831077][14130:14132] CHIP:TOO: Mode: 0 + [1690179857.831082][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831090][14130:14132] CHIP:TOO: [1]: { + [1690179857.831093][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831096][14130:14132] CHIP:TOO: } + [1690179857.831099][14130:14132] CHIP:TOO: } + [1690179857.831104][14130:14132] CHIP:TOO: [2]: { + [1690179857.831107][14130:14132] CHIP:TOO: Label: Cleaning + [1690179857.831109][14130:14132] CHIP:TOO: Mode: 1 + [1690179857.831112][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831115][14130:14132] CHIP:TOO: [1]: { + [1690179857.831118][14130:14132] CHIP:TOO: Value: 16385 + [1690179857.831121][14130:14132] CHIP:TOO: } + [1690179857.831124][14130:14132] CHIP:TOO: } + [1690179857.831128][14130:14132] CHIP:TOO: [3]: { + [1690179857.831131][14130:14132] CHIP:TOO: Label: Mapping + [1690179857.831133][14130:14132] CHIP:TOO: Mode: 2 + [1690179857.831135][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831138][14130:14132] CHIP:TOO: [1]: { + [1690179857.831141][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831143][14130:14132] CHIP:TOO: } + [1690179857.831146][14130:14132] CHIP:TOO: } disabled: true - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to new_mode_th" PICS: RVCRUNM.S.C00.Rsp verification: | - ./chip-tool rvcrunm change-to-mode 4 1 1 + ./chip-tool rvcrunmode change-to-mode 1 1 1 + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: - On TH(chip-tool) , Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - - [1684931419.768138][20792:20794] CHIP:DMG: StatusIB = - [1684931419.768143][20792:20794] CHIP:DMG: { - [1684931419.768148][20792:20794] CHIP:DMG: status = 0x00 (SUCCESS), - [1684931419.768152][20792:20794] CHIP:DMG: }, + [1690179905.782387][14141:14143] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Command 0x0000_0001 + [1690179905.782401][14141:14143] CHIP:TOO: ChangeToModeResponse: { + [1690179905.782405][14141:14143] CHIP:TOO: status: 0 + [1690179905.782408][14141:14143] CHIP:TOO: } disabled: true - - label: "Step 6: Physically power cycle the device" + - label: "Step 8: Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 9: TH reads from the DUT the StartUpMode attribute." + PICS: RVCRUNM.S.A0002 + verification: | + ./chip-tool rvcrunmode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer. + - Save the value as new_start_up_mode_dut and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform: + - Here StartUpMode value is 0 + + [1690544350.025546][2955:2957] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 3877802510 + [1690544350.025630][2955:2957] CHIP:TOO: StartUpMode: 0 + disabled: true + + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: RVCRUNM.S.A0001 verification: | - ./chip-tool rvcrunm read current-mode 1 1 + ./chip-tool rvcrunmode read current-mode 1 1 - on TH(chip-tool), Verify that CurrentMode attribute value is same as value recorded in step 1 and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and is equal to new_start_up_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721 - [1645778146.171602][4876:4881] CHIP:TOO: CurrentMode: 0 + [1690180034.919766][14170:14172] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 1228902958 + [1690180034.919778][14170:14172] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_3.yaml index 8f8df3e8e1ce51..ef3fd5d593e056 100644 --- a/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_RVCRUNM_3_3.yaml @@ -26,6 +26,24 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + + - label: "Note" + verification: | + To Execute the TC-RVCRUNM-3.3 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -36,118 +54,163 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: RVCRUNM.S.A0002 verification: | - ./chip-tool rvcrunm read start-up-mode 1 1 + ./chip-tool rvcrunmode read start-up-mode 1 1 + + On TH(chip-tool), Verify StartUpMode attribute value is an integer or null + - Save the value as startup_mode_dut + - If startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. + and below is the sample log provided for the raspi platform: + - Here StartUpMode value is null proced to step3 + + [1690543468.611591][2895:2897] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 2245114918 + [1690543468.611648][2895:2897] CHIP:TOO: StartUpMode: null + disabled: true + + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: RVCRUNM.S.A0000 + verification: | + ./chip-tool rvcrunmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th., below is the sample log provided for the raspi platform: + + [1690179857.831035][14130:14132] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 290070852 + [1690179857.831058][14130:14132] CHIP:TOO: SupportedModes: 3 entries + [1690179857.831069][14130:14132] CHIP:TOO: [1]: { + [1690179857.831072][14130:14132] CHIP:TOO: Label: Idle + [1690179857.831077][14130:14132] CHIP:TOO: Mode: 0 + [1690179857.831082][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831090][14130:14132] CHIP:TOO: [1]: { + [1690179857.831093][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831096][14130:14132] CHIP:TOO: } + [1690179857.831099][14130:14132] CHIP:TOO: } + [1690179857.831104][14130:14132] CHIP:TOO: [2]: { + [1690179857.831107][14130:14132] CHIP:TOO: Label: Cleaning + [1690179857.831109][14130:14132] CHIP:TOO: Mode: 1 + [1690179857.831112][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831115][14130:14132] CHIP:TOO: [1]: { + [1690179857.831118][14130:14132] CHIP:TOO: Value: 16385 + [1690179857.831121][14130:14132] CHIP:TOO: } + [1690179857.831124][14130:14132] CHIP:TOO: } + [1690179857.831128][14130:14132] CHIP:TOO: [3]: { + [1690179857.831131][14130:14132] CHIP:TOO: Label: Mapping + [1690179857.831133][14130:14132] CHIP:TOO: Mode: 2 + [1690179857.831135][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831138][14130:14132] CHIP:TOO: [1]: { + [1690179857.831141][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831143][14130:14132] CHIP:TOO: } + [1690179857.831146][14130:14132] CHIP:TOO: } + disabled: true - On TH(chip-tool) log, Verify StartUpMode attribute value is an integer. save this value as startup_mode_dut and below is the sample log provided for the raspi platform: + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: RVCRUNM.S.A0002 + verification: | + ./chip-tool rvcrunmode write start-up-mode 0 1 1 + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651099663211] [82177:7560652] CHIP: [TOO] Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0004 DataVersion: 2609052118 - [1651099663212] [82177:7560652] CHIP: [TOO] StartUpMode: 0 + [1690179737.189558][14110:14112] CHIP:DMG: StatusIB = + [1690179737.189576][14110:14112] CHIP:DMG: { + [1690179737.189592][14110:14112] CHIP:DMG: status = 0x00 (SUCCESS), + [1690179737.189607][14110:14112] CHIP:DMG: }, disabled: true - - label: "Step 3: TH reads from the DUT the OnMode attribute." + - label: "Step 5: TH reads from the DUT the OnMode attribute." PICS: RVCRUNM.S.A0003 && RVCRUNM.S.A0002 verification: | - ./chip-tool rvcrunm read on-mode 1 1 + Set onmode to any integer value because as default it value has null. + + ./chip-tool rvcrunmode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690180177.665893][14211:14213] CHIP:DMG: StatusIB = + [1690180177.665905][14211:14213] CHIP:DMG: { + [1690180177.665917][14211:14213] CHIP:DMG: status = 0x00 (SUCCESS), + [1690180177.665927][14211:14213] CHIP:DMG: }, + + ./chip-tool rvcrunmode read on-mode 1 1 - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as old_on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer + - Save the value as old_on_mode_dut , below is the sample log provided for the raspi platform, OnMode attribute value is 0 + NOTE: If startup_mode_dut is equal to old_on_mode_dut proceed to step 4. Else proceed to step 6. - [1654780979.979743][61542:61547] CHIP:DMG: } - [1654780979.980040][61542:61547] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 235764160 - [1654780979.980202][61542:61547] CHIP:TOO: OnMode: 4 + [1690544833.540939][2984:2986] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0003 DataVersion: 3877802512 + [1690544833.541032][2984:2986] CHIP:TOO: OnMode: 0 disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." PICS: RVCRUNM.S.A0000 && RVCRUNM.S.A0002 verification: | - NOTE: - If the StartUpMode and OnMode attributes have the same value, proceed to step 4, Otherwise proceed to step 6. - - ./chip-tool rvcrunm read supported-modes 1 1 - - On TH(chip-tool) log, Verify SupportedModes attribute contains two or more ModeOptionsStruct entries. save the Mode field values as supported_modes_dut.Select a value from supported_modes_dut different from startup_mode_dut and Save the value as new_mode_th, below is the sample log provided for the raspi platform: - - [1685020074.437287][16950:16952] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0002 DataVersion: 3898153349 - [1685020074.437313][16950:16952] CHIP:TOO: SupportedModes: 3 entries - [1685020074.437620][16950:16952] CHIP:TOO: [1]: { - [1685020074.437632][16950:16952] CHIP:TOO: Label: Black - [1685020074.437635][16950:16952] CHIP:TOO: Mode: 0 - [1685020074.437823][16950:16952] CHIP:TOO: SemanticTags: 1 entries - [1685020074.437834][16950:16952] CHIP:TOO: [1]: { - [1685020074.437838][16950:16952] CHIP:TOO: MfgCode: 0 - [1685020074.437841][16950:16952] CHIP:TOO: Value: 0 - [1685020074.437843][16950:16952] CHIP:TOO: } - [1685020074.437846][16950:16952] CHIP:TOO: } - [1685020074.437852][16950:16952] CHIP:TOO: [2]: { - [1685020074.437854][16950:16952] CHIP:TOO: Label: Cappuccino - [1685020074.437857][16950:16952] CHIP:TOO: Mode: 4 - [1685020074.437861][16950:16952] CHIP:TOO: SemanticTags: 1 entries - [1685020074.437865][16950:16952] CHIP:TOO: [1]: { - [1685020074.437868][16950:16952] CHIP:TOO: MfgCode: 0 - [1685020074.437870][16950:16952] CHIP:TOO: Value: 0 - [1685020074.437873][16950:16952] CHIP:TOO: } - [1685020074.437876][16950:16952] CHIP:TOO: } - [1685020074.437881][16950:16952] CHIP:TOO: [3]: { - [1685020074.437883][16950:16952] CHIP:TOO: Label: Espresso - [1685020074.437885][16950:16952] CHIP:TOO: Mode: 7 - [1685020074.437889][16950:16952] CHIP:TOO: SemanticTags: 1 entries - [1685020074.437892][16950:16952] CHIP:TOO: [1]: { - [1685020074.437895][16950:16952] CHIP:TOO: MfgCode: 0 - [1685020074.437897][16950:16952] CHIP:TOO: Value: 0 - [1685020074.437900][16950:16952] CHIP:TOO: } - [1685020074.437902][16950:16952] CHIP:TOO: } + ./chip-tool rvcrunmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690179857.831035][14130:14132] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0000 DataVersion: 290070852 + [1690179857.831058][14130:14132] CHIP:TOO: SupportedModes: 3 entries + [1690179857.831069][14130:14132] CHIP:TOO: [1]: { + [1690179857.831072][14130:14132] CHIP:TOO: Label: Idle + [1690179857.831077][14130:14132] CHIP:TOO: Mode: 0 + [1690179857.831082][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831090][14130:14132] CHIP:TOO: [1]: { + [1690179857.831093][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831096][14130:14132] CHIP:TOO: } + [1690179857.831099][14130:14132] CHIP:TOO: } + [1690179857.831104][14130:14132] CHIP:TOO: [2]: { + [1690179857.831107][14130:14132] CHIP:TOO: Label: Cleaning + [1690179857.831109][14130:14132] CHIP:TOO: Mode: 1 + [1690179857.831112][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831115][14130:14132] CHIP:TOO: [1]: { + [1690179857.831118][14130:14132] CHIP:TOO: Value: 16385 + [1690179857.831121][14130:14132] CHIP:TOO: } + [1690179857.831124][14130:14132] CHIP:TOO: } + [1690179857.831128][14130:14132] CHIP:TOO: [3]: { + [1690179857.831131][14130:14132] CHIP:TOO: Label: Mapping + [1690179857.831133][14130:14132] CHIP:TOO: Mode: 2 + [1690179857.831135][14130:14132] CHIP:TOO: ModeTags: 1 entries + [1690179857.831138][14130:14132] CHIP:TOO: [1]: { + [1690179857.831141][14130:14132] CHIP:TOO: Value: 16384 + [1690179857.831143][14130:14132] CHIP:TOO: } + [1690179857.831146][14130:14132] CHIP:TOO: } disabled: true - label: - "Step 5: TH writes to the DUT the OnMode attribute with the + "Step 7: TH writes to the DUT the OnMode attribute with the new_mode_th value" PICS: RVCRUNM.S.A0003 verification: | - ./chip-tool rvcrunm write on-mode 7 1 1 + ./chip-tool rvcrunmode write on-mode 1 1 1 On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651099941884] [84269:7567211] CHIP: [DMG] WriteResponseMessage = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIBs = - [1651099941884] [84269:7567211] CHIP: [DMG] [ - [1651099941884] [84269:7567211] CHIP: [DMG] AttributeStatusIB = - [1651099941884] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] AttributePathIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] Endpoint = 0x1, - [1651099941887] [84269:7567211] CHIP: [DMG] Cluster = 0x50, - [1651099941887] [84269:7567211] CHIP: [DMG] Attribute = 0x0000_0005, - [1651099941887] [84269:7567211] CHIP: [DMG] } - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] StatusIB = - [1651099941887] [84269:7567211] CHIP: [DMG] { - [1651099941887] [84269:7567211] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] }, - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] ], - [1651099941887] [84269:7567211] CHIP: [DMG] - [1651099941887] [84269:7567211] CHIP: [DMG] InteractionModelRevision = 1 - [1651099941887] [84269:7567211] CHIP: [DMG] } + [1690180177.665893][14211:14213] CHIP:DMG: StatusIB = + [1690180177.665905][14211:14213] CHIP:DMG: { + [1690180177.665917][14211:14213] CHIP:DMG: status = 0x00 (SUCCESS), + [1690180177.665927][14211:14213] CHIP:DMG: }, disabled: true - - label: "Step 6: TH reads from the DUT the OnMode attribute." + - label: "Step 8: TH reads from the DUT the OnMode attribute." PICS: RVCRUNM.S.A0003 && RVCRUNM.S.F00 verification: | - ./chip-tool rvcrunm read on-mode 1 1 + ./chip-tool rvcrunmode read on-mode 1 1 - On TH(chip-tool) log, Verify OnMode attribute value is an integer. save the value as new_on_mode_dut and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that OnMode attribute value is an integer + - Save the value as new_on_mode_dut and is equal to new_mode_th, below is the sample log provided for the raspi platform, OnMode attribute value is 1 - } - [1669190858.739158][4187:4189] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0005 DataVersion: 4107771634 - [1669190858.739222][4187:4189] CHIP:TOO: OnMode: 7 + [1690544833.540939][2984:2986] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0003 DataVersion: 3877802512 + [1690544833.541032][2984:2986] CHIP:TOO: OnMode: 1 disabled: true - label: - "Step 7: TH writes to the DUT the StartUpOnOff attribute with the + "Step 9: TH writes to the DUT the StartUpOnOff attribute with the value 1." PICS: OO.S.A4003 verification: | @@ -155,46 +218,35 @@ tests: On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - [1651101661959] [90832:7598169] CHIP: [DMG] WriteResponseMessage = - [1651101661959] [90832:7598169] CHIP: [DMG] { - [1651101661959] [90832:7598169] CHIP: [DMG] AttributeStatusIBs = - [1651101661959] [90832:7598169] CHIP: [DMG] [ - [1651101661959] [90832:7598169] CHIP: [DMG] AttributeStatusIB = - [1651101661959] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] AttributePathIB = - [1651101661960] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] Endpoint = 0x1, - [1651101661960] [90832:7598169] CHIP: [DMG] Cluster = 0x6, - [1651101661960] [90832:7598169] CHIP: [DMG] Attribute = 0x0000_4003, - [1651101661960] [90832:7598169] CHIP: [DMG] } - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] StatusIB = - [1651101661960] [90832:7598169] CHIP: [DMG] { - [1651101661960] [90832:7598169] CHIP: [DMG] status = 0x00 (SUCCESS), - [1651101661960] [90832:7598169] CHIP: [DMG] }, - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] }, - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] ], - [1651101661960] [90832:7598169] CHIP: [DMG] - [1651101661960] [90832:7598169] CHIP: [DMG] InteractionModelRevision = 1 - [1651101661960] [90832:7598169] CHIP: [DMG] } + [1690180270.884152][14228:14230] CHIP:DMG: { + [1690180270.884156][14228:14230] CHIP:DMG: status = 0x00 (SUCCESS), + [1690180270.884158][14228:14230] CHIP:DMG: }, disabled: true - - label: "Step 8: Physically power cycle the device" + - label: "Step 10: Physically power cycle the device" verification: | Physically power cycle the device. disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." - PICS: RVCRUNM.S.A0001 + - label: "Step 11: TH reads from the DUT the StartUpMode attribute." + PICS: RVCRUNM.S.A0002 verification: | - ./chip-tool rvcrunm read current-mode 1 1 + ./chip-tool rvcrunmode read start-up-mode 1 1 + On TH(chip-tool), Verify StartUpMode attribute value is an integer and is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform, Here StartUpMode value is 0 + + [1690543468.611591][2895:2897] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0002 DataVersion: 2245114918 + [1690543468.611648][2895:2897] CHIP:TOO: StartUpMode: 0 + disabled: true + + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." + PICS: RVCRUNM.S.A0001 + verification: | + ./chip-tool rvcrunmode read current-mode 1 1 - On TH(chip-tool),Verify CurrentMode attribute value is same as the value recorded in step 3 and below is the sample log provided for the raspi platform: + On TH(chip-tool), Verify that CurrentMode attribute value is an integer and is equal to new_on_mode_dut, below is the sample log provided for the raspi platform, CurrentMode attribute value is 1 - } - [1669190936.869804][4194:4196] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003 DataVersion: 3908583538 - [1669190936.869875][4194:4196] CHIP:TOO: CurrentMode: 7 + [1690545265.495445][3004:3006] CHIP:DMG: } + [1690545265.495612][3004:3006] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0054 Attribute 0x0000_0001 DataVersion: 3877802512 + [1690545265.495679][3004:3006] CHIP:TOO: CurrentMode: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml index 9d915ebea90e86..edcc8d93abeed1 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Project CHIP Authors +# Copyright (c) 2023 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. @@ -13,7 +13,7 @@ # limitations under the License. # Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default -name: 18.1.3. [TC-SC-5.3] Sending a group message - DUT to TH +name: 26.3.5. [TC-SC-5.3] Sending a group message - DUT to TH PICS: - MCORE.ROLE.COMMISSIONER @@ -35,55 +35,140 @@ tests: DUT and TH are commissioned. DUT supports Groups Cluster + + Execute the below mentioned command to put TH(Reference app) into a commissionable state in RPI platform, Pls use equivalent command on the respective platform + ./chip-all-clusters-app --trace_decode 1 + + Once TH reach the commissionable state pls send below mentioned command on DUT(chip-tool) in RPI platform. Pls use equivalent command on the respective platform + + ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1 + + Verify the commissioning completed with success on DUT(Chip-tool) + + [1650455358.501816][4366:4371] CHIP:TOO: Device commissioning completed with success disabled: true - - label: "TH should have the ACL entry with the AuthMode as Group by DUT" + - label: + "Step 1a: TH should have the ACL entry with the AuthMode as Group by + DUT" verification: | ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [259], "targets": null }]' 1 0 + Verify ACL WrireRequestMessage on TH(Reference app)log: + + [1687333786.479229][13848:13848] CHIP:DMG: WriteRequestMessage = + [1687333786.479247][13848:13848] CHIP:DMG: { + [1687333786.479257][13848:13848] CHIP:DMG: suppressResponse = false, + [1687333786.479269][13848:13848] CHIP:DMG: timedRequest = false, + [1687333786.479279][13848:13848] CHIP:DMG: AttributeDataIBs = + [1687333786.479298][13848:13848] CHIP:DMG: [ + [1687333786.479308][13848:13848] CHIP:DMG: AttributeDataIB = + [1687333786.479321][13848:13848] CHIP:DMG: { + [1687333786.479331][13848:13848] CHIP:DMG: AttributePathIB = + [1687333786.479342][13848:13848] CHIP:DMG: { + [1687333786.479355][13848:13848] CHIP:DMG: Endpoint = 0x0, + [1687333786.479367][13848:13848] CHIP:DMG: Cluster = 0x1f, + [1687333786.479379][13848:13848] CHIP:DMG: Attribute = 0x0000_0000, + [1687333786.479390][13848:13848] CHIP:DMG: } + [1687333786.479407][13848:13848] CHIP:DMG: + [1687333786.479419][13848:13848] CHIP:DMG: Data = [ + [1687333786.479432][13848:13848] CHIP:DMG: + [1687333786.479444][13848:13848] CHIP:DMG: ], + [1687333786.479454][13848:13848] CHIP:DMG: }, + [1687333786.479481][13848:13848] CHIP:DMG: + [1687333786.479491][13848:13848] CHIP:DMG: AttributeDataIB = + [1687333786.479501][13848:13848] CHIP:DMG: { + [1687333786.479513][13848:13848] CHIP:DMG: AttributePathIB = + [1687333786.479528][13848:13848] CHIP:DMG: { + [1687333786.479540][13848:13848] CHIP:DMG: Endpoint = 0x0, + [1687333786.479551][13848:13848] CHIP:DMG: Cluster = 0x1f, + [1687333786.479562][13848:13848] CHIP:DMG: Attribute = 0x0000_0000, + [1687333786.479576][13848:13848] CHIP:DMG: ListIndex = Null, + [1687333786.479586][13848:13848] CHIP:DMG: } + [1687333786.479599][13848:13848] CHIP:DMG: + [1687333786.479609][13848:13848] CHIP:DMG: Data = + [1687333786.479620][13848:13848] CHIP:DMG: { + [1687333786.479635][13848:13848] CHIP:DMG: 0x1 = 5, + [1687333786.479649][13848:13848] CHIP:DMG: 0x2 = 2, + [1687333786.479659][13848:13848] CHIP:DMG: 0x3 = [ + [1687333786.479674][13848:13848] CHIP:DMG: 112233, + [1687333786.479685][13848:13848] CHIP:DMG: ], + [1687333786.479698][13848:13848] CHIP:DMG: 0x4 = NULL + [1687333786.479709][13848:13848] CHIP:DMG: }, + [1687333786.479718][13848:13848] CHIP:DMG: }, + [1687333786.479750][13848:13848] CHIP:DMG: + [1687333786.479760][13848:13848] CHIP:DMG: AttributeDataIB = + [1687333786.479772][13848:13848] CHIP:DMG: { + [1687333786.479781][13848:13848] CHIP:DMG: AttributePathIB = + [1687333786.479793][13848:13848] CHIP:DMG: { + [1687333786.479803][13848:13848] CHIP:DMG: Endpoint = 0x0, + [1687333786.479815][13848:13848] CHIP:DMG: Cluster = 0x1f, + [1687333786.479829][13848:13848] CHIP:DMG: Attribute = 0x0000_0000, + [1687333786.479841][13848:13848] CHIP:DMG: ListIndex = Null, + [1687333786.479851][13848:13848] CHIP:DMG: } + [1687333786.479866][13848:13848] CHIP:DMG: + [1687333786.479876][13848:13848] CHIP:DMG: Data = + [1687333786.479889][13848:13848] CHIP:DMG: { + [1687333786.479901][13848:13848] CHIP:DMG: 0x1 = 4, + [1687333786.479913][13848:13848] CHIP:DMG: 0x2 = 3, + [1687333786.479929][13848:13848] CHIP:DMG: 0x3 = [ + [1687333786.479951][13848:13848] CHIP:DMG: 259, + [1687333786.479966][13848:13848] CHIP:DMG: ], + [1687333786.479978][13848:13848] CHIP:DMG: 0x4 = NULL + [1687333786.479991][13848:13848] CHIP:DMG: }, + [1687333786.480001][13848:13848] CHIP:DMG: }, + [1687333786.480020][13848:13848] CHIP:DMG: + [1687333786.480033][13848:13848] CHIP:DMG: ], + [1687333786.480071][13848:13848] CHIP:DMG: + [1687333786.480081][13848:13848] CHIP:DMG: moreChunkedMessages = false, + [1687333786.480092][13848:13848] CHIP:DMG: InteractionModelRevision = 1 + [1687333786.480101][13848:13848] CHIP:DMG: }, + + ./chip-tool accesscontrol read acl 1 0 - Verify that ACL entry with the AuthMode as Group is present on TH(Reference app)log: - - [1684162707.651064][28541:28543] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001F Attribute 0x0000_0000 DataVersion: 1331379855 - [1684162707.651080][28541:28543] CHIP:TOO: ACL: 2 entries - [1684162707.651089][28541:28543] CHIP:TOO: [1]: { - [1684162707.651095][28541:28543] CHIP:TOO: Privilege: 5 - [1684162707.651097][28541:28543] CHIP:TOO: AuthMode: 2 - [1684162707.651100][28541:28543] CHIP:TOO: Subjects: 1 entries - [1684162707.651103][28541:28543] CHIP:TOO: [1]: 112233 - [1684162707.651105][28541:28543] CHIP:TOO: Targets: null - [1684162707.651107][28541:28543] CHIP:TOO: FabricIndex: 1 - [1684162707.651109][28541:28543] CHIP:TOO: } - [1684162707.651113][28541:28543] CHIP:TOO: [2]: { - [1684162707.651115][28541:28543] CHIP:TOO: Privilege: 4 - [1684162707.651117][28541:28543] CHIP:TOO: AuthMode: 3 - [1684162707.651119][28541:28543] CHIP:TOO: Subjects: 1 entries - [1684162707.651122][28541:28543] CHIP:TOO: [1]: 259 - [1684162707.651124][28541:28543] CHIP:TOO: Targets: null - [1684162707.651126][28541:28543] CHIP:TOO: FabricIndex: 1 - [1684162707.651128][28541:28543] CHIP:TOO: } + Verify that ACL command on TH(Reference app)log: + + [1687333789.552788][13848:13848] CHIP:IM: Received Read request + [1687333789.552798][13848:13848] CHIP:DMG: ReadRequestMessage = + [1687333789.552801][13848:13848] CHIP:DMG: { + [1687333789.552803][13848:13848] CHIP:DMG: AttributePathIBs = + [1687333789.552807][13848:13848] CHIP:DMG: [ + [1687333789.552809][13848:13848] CHIP:DMG: AttributePathIB = + [1687333789.552812][13848:13848] CHIP:DMG: { + [1687333789.552815][13848:13848] CHIP:DMG: Endpoint = 0x0, + [1687333789.552818][13848:13848] CHIP:DMG: Cluster = 0x1f, + [1687333789.552821][13848:13848] CHIP:DMG: Attribute = 0x0000_0000, + [1687333789.552824][13848:13848] CHIP:DMG: } + [1687333789.552827][13848:13848] CHIP:DMG: + [1687333789.552830][13848:13848] CHIP:DMG: ], + [1687333789.552833][13848:13848] CHIP:DMG: + [1687333789.552836][13848:13848] CHIP:DMG: isFabricFiltered = true, + [1687333789.552839][13848:13848] CHIP:DMG: InteractionModelRevision = 1 + [1687333789.552841][13848:13848] CHIP:DMG: }, disabled: true - label: - "DUT generates fabric-unique GroupID, GroupName, random key, EpochKey0 - and GroupKeySetID. Save the GroupID as GroupID_1, GroupName as - GroupName_1 and GroupSetID" - PICS: GRPKEY.C.C00.Tx + "Step 1b: DUT generates fabric-unique GroupID, GroupName, random key, + EpochKey0 and GroupKeySetID. Save the GroupID as GroupID_1, GroupName + as GroupName_1 and GroupSetID_1" verification: | GroupKeySetID = 419 GroupID_1 = 259 GroupName_1 = "grp1" + EpochKey0 = d0d1d2d3d4d5d6d7d8d9dadbdcdddedf + EpochKey1 = d1d1d2d3d4d5d6d7d8d9dadbdcdddedf + EpochKey2 = d2d1d2d3d4d5d6d7d8d9dadbdcdddedf disabled: true - label: - "DUT sends KeySetWrite command to GroupKeyManagement cluster to TH on - EP0" + "Step 2: DUT sends KeySetWrite command to GroupKeyManagement cluster + to TH on EP0" PICS: GRPKEY.C.C00.Tx verification: | ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 419,"groupKeySecurityPolicy": 0, "epochKey0":"d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1":"d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2":"d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0 - Verify that KeySetWrite with Group Set ID as 419 is present on TH(Reference app)log: + Verify that KeySetWrite command on TH(Reference app)log: [1684162878.418032][28333:28333] CHIP:DMG: { [1684162878.418034][28333:28333] CHIP:DMG: suppressResponse = false, @@ -131,13 +216,14 @@ tests: disabled: true - label: - "DUT binds GroupId with GroupKeySetID in the GroupKeyMap attribute - list on GroupKeyManagement cluster" + "Step 3: DUT binds GroupId with GroupKeySetID in the GroupKeyMap + attribute list on GroupKeyManagement cluster" PICS: GRPKEY.C.A0000 verification: | ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 259, "groupKeySetID": 419, "fabricIndex": 1},{"groupId": 257, "groupKeySetID": 419, "fabricIndex": 1}]' 1 0 Verify that group-key-map attribute with GroupID_1 as 259, GroupID_2 as 257 and Group Set ID as 419 is present on TH(Reference app)log: + [1684166126.545563][29258:29258] CHIP:DMG: WriteRequestMessage = [1684166126.545565][29258:29258] CHIP:DMG: { [1684166126.545567][29258:29258] CHIP:DMG: suppressResponse = false, @@ -201,47 +287,49 @@ tests: disabled: true - label: - "DUT sends AddGroup Command to DUT on EP0 with the the following - settings GroupID: GroupID_1 GroupName: GroupName_1" + "Step 4: DUT sends AddGroup Command to DUT on EP0 with the the + following settings GroupID: GroupID_1 GroupName: GroupName_1" PICS: G.C.C00.Tx verification: | + Note: + GroupID_1 = 259 + GroupName_1 = "grp1" + ./chip-tool groups add-group 259 'grp1' 1 1 Verify that AddGroup command with GroupID as 259 and group name as "grp1" is present on TH(Reference app)log: - [1684166282.551829][29258:29258] CHIP:DMG: InvokeRequestMessage = - [1684166282.551837][29258:29258] CHIP:DMG: { - [1684166282.551844][29258:29258] CHIP:DMG: suppressResponse = false, - [1684166282.551853][29258:29258] CHIP:DMG: timedRequest = false, - [1684166282.551859][29258:29258] CHIP:DMG: InvokeRequests = - [1684166282.551872][29258:29258] CHIP:DMG: [ - [1684166282.551879][29258:29258] CHIP:DMG: CommandDataIB = - [1684166282.551887][29258:29258] CHIP:DMG: { - [1684166282.551894][29258:29258] CHIP:DMG: CommandPathIB = - [1684166282.551903][29258:29258] CHIP:DMG: { - [1684166282.551912][29258:29258] CHIP:DMG: EndpointId = 0x1, - [1684166282.551920][29258:29258] CHIP:DMG: ClusterId = 0x4, - [1684166282.551928][29258:29258] CHIP:DMG: CommandId = 0x0, - [1684166282.551935][29258:29258] CHIP:DMG: }, - [1684166282.551944][29258:29258] CHIP:DMG: - [1684166282.551951][29258:29258] CHIP:DMG: CommandFields = - [1684166282.551960][29258:29258] CHIP:DMG: { - [1684166282.551970][29258:29258] CHIP:DMG: 0x0 = 259, - [1684166282.551980][29258:29258] CHIP:DMG: 0x1 = "grp1" (4 chars), - [1684166282.551989][29258:29258] CHIP:DMG: }, - [1684166282.551996][29258:29258] CHIP:DMG: }, - [1684166282.552007][29258:29258] CHIP:DMG: - [1684166282.552013][29258:29258] CHIP:DMG: ], - [1684166282.552024][29258:29258] CHIP:DMG: - [1684166282.552032][29258:29258] CHIP:DMG: InteractionModelRevision = 1 - [1684166282.552038][29258:29258] CHIP:DMG: }, - [1684166282.552074][29258:29258] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0004 e=1 p=m - [1684166282.552089][29258:29258] CHIP:DMG: AccessControl: allowed - [1684166282.552100][29258:29258] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0004 Command=0x0000_0000 + + [1689748064.426996][2588:2588] CHIP:DMG: InvokeRequestMessage = + [1689748064.427031][2588:2588] CHIP:DMG: { + [1689748064.427054][2588:2588] CHIP:DMG: suppressResponse = false, + [1689748064.427081][2588:2588] CHIP:DMG: timedRequest = false, + [1689748064.427105][2588:2588] CHIP:DMG: InvokeRequests = + [1689748064.427137][2588:2588] CHIP:DMG: [ + [1689748064.427162][2588:2588] CHIP:DMG: CommandDataIB = + [1689748064.427194][2588:2588] CHIP:DMG: { + [1689748064.427225][2588:2588] CHIP:DMG: CommandPathIB = + [1689748064.427257][2588:2588] CHIP:DMG: { + [1689748064.427288][2588:2588] CHIP:DMG: EndpointId = 0x0, + [1689748064.427321][2588:2588] CHIP:DMG: ClusterId = 0x4, + [1689748064.427354][2588:2588] CHIP:DMG: CommandId = 0x0, + [1689748064.427384][2588:2588] CHIP:DMG: }, + [1689748064.427415][2588:2588] CHIP:DMG: + [1689748064.427443][2588:2588] CHIP:DMG: CommandFields = + [1689748064.427473][2588:2588] CHIP:DMG: { + [1689748064.427504][2588:2588] CHIP:DMG: 0x0 = 259, + [1689748064.427539][2588:2588] CHIP:DMG: 0x1 = "grp1" (4 chars), + [1689748064.427571][2588:2588] CHIP:DMG: }, + [1689748064.427600][2588:2588] CHIP:DMG: }, + [1689748064.427632][2588:2588] CHIP:DMG: + [1689748064.427656][2588:2588] CHIP:DMG: ], + [1689748064.427686][2588:2588] CHIP:DMG: + [1689748064.427710][2588:2588] CHIP:DMG: InteractionModelRevision = 1 + [1689748064.427733][2588:2588] CHIP:DMG: }, disabled: true - label: - "DUT generates fabric-unique GroupID, GroupName. Save the GroupID as - GroupID_2, GroupName as GroupName_2" + "Step 5: DUT generates fabric-unique GroupID, GroupName. Save the + GroupID as GroupID_2, GroupName as GroupName_2" verification: | refer to log in step 3 GroupID_2 = 257 @@ -249,9 +337,10 @@ tests: disabled: true - label: - "DUT sends a AddGroup Command to the Groups cluster with the GroupID - field set to GroupID_2 and the GroupName set to an GroupName_2. The - command is sent as a group command using GroupID_1" + "Step 6: DUT sends a AddGroup Command to the Groups cluster with the + GroupID field set to GroupID_2 and the GroupName set to an + GroupName_2. The command is sent as a group command using GroupID_1" + PICS: G.C.C00.Tx verification: | ./chip-tool groups add-group 257 'grp2' 0xffffffffffff0103 0 @@ -286,7 +375,7 @@ tests: [1686319509.379870][8834:8834] CHIP:DMG: }, [1686319509.379881][8834:8834] CHIP:DMG: Rec - Verify the Destination Node ID matches the GroupID_1 On TH(all-cluster-app) log: + Verify the Destination Node ID matches the GroupID_1 On TH(Reference app) log: [1689748128.875980][2588:2588] CHIP:DMG: Received group command for Group=259 Cluster=0x0000_0004 Command=0x0000_0000 [1689748128.876384][2588:2588] CHIP:DMG: Processing group command for Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0000 @@ -299,7 +388,7 @@ tests: [1684167429.421010][29723:29723] CHIP:IN: Joining Multicast Group with address UDP:[ff35:40:fd00::100:101]:5540 [1684167429.421129][29723:29723] CHIP:IN: Joined multicast group on interface wlp0s20f3 - Verify the DSIZ flag is set to Group On TH(all-cluster-app) log: + Verify the DSIZ flag is set to Group On TH(Reference app) log: (Here in below log the value recived is 0X04 = 0100 (decimal) - Here the bit 2 is enabled then DSIZ flag is set to group) [1686317564.742205][7679:7679] CHIP:DMG: Header Flags = diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml deleted file mode 100644 index 8d46d80a8de956..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml +++ /dev/null @@ -1,369 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 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: "Switch" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read NumberOfPositions attribute" - PICS: SWTCH.C.AM-READ - wait: "readAttribute" - attribute: "NumberOfPositions" - - - label: "Read CurrentPosition attribute" - PICS: SWTCH.C.AM-READ - wait: "readAttribute" - attribute: "CurrentPosition" - - - label: "Read MultiPressMax attribute" - PICS: SWTCH.C.AO-READ - wait: "readAttribute" - attribute: "MultiPressMax" - - - 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 TH receives FeatureMap attribute response on the TH(all-clusters-minimal-app) Log: - - [1666943977.583820][12769:12769] CHIP:DMG: - [1666943977.583832][12769:12769] CHIP:DMG: ReportDataMessage = - [1666943977.583834][12769:12769] CHIP:DMG: { - [1666943977.583837][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666943977.583842][12769:12769] CHIP:DMG: [ - [1666943977.583844][12769:12769] CHIP:DMG: AttributeReportIB = - [1666943977.583855][12769:12769] CHIP:DMG: { - [1666943977.583857][12769:12769] CHIP:DMG: AttributeDataIB = - [1666943977.583860][12769:12769] CHIP:DMG: { - [1666943977.583864][12769:12769] CHIP:DMG: DataVersion = 0x8c421c49, - [1666943977.583867][12769:12769] CHIP:DMG: AttributePathIB = - [1666943977.583870][12769:12769] CHIP:DMG: { - [1666943977.583873][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666943977.583877][12769:12769] CHIP:DMG: Cluster = 0x3b, - [1666943977.583880][12769:12769] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666943977.583883][12769:12769] CHIP:DMG: } - [1666943977.583887][12769:12769] CHIP:DMG: - [1666943977.583891][12769:12769] CHIP:DMG: Data = 1, - [1666943977.583893][12769:12769] CHIP:DMG: }, - [1666943977.583897][12769:12769] CHIP:DMG: - [1666943977.583899][12769:12769] CHIP:DMG: }, - [1666943977.583903][12769:12769] CHIP:DMG: - [1666943977.583905][12769:12769] CHIP:DMG: ], - [1666943977.583909][12769:12769] CHIP:DMG: - [1666943977.583911][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666943977.583913][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - - ./chip-tool switch read attribute-list 1 1 - - Verify TH receives AttributeList attribute response on the TH(all-clusters-minimal-app) Log: - - [1676530441.143667][49371:49373] CHIP:DMG: ReportDataMessage = - [1676530441.143670][49371:49373] CHIP:DMG: { - [1676530441.143673][49371:49373] CHIP:DMG: AttributeReportIBs = - [1676530441.143678][49371:49373] CHIP:DMG: [ - [1676530441.143680][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.143685][49371:49373] CHIP:DMG: { - [1676530441.143688][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.143691][49371:49373] CHIP:DMG: { - [1676530441.143694][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.143697][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.143701][49371:49373] CHIP:DMG: { - [1676530441.143704][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.143707][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.143711][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.143713][49371:49373] CHIP:DMG: } - [1676530441.143717][49371:49373] CHIP:DMG: - [1676530441.143720][49371:49373] CHIP:DMG: Data = [ - [1676530441.143723][49371:49373] CHIP:DMG: - [1676530441.143726][49371:49373] CHIP:DMG: ], - [1676530441.143729][49371:49373] CHIP:DMG: }, - [1676530441.143733][49371:49373] CHIP:DMG: - [1676530441.143736][49371:49373] CHIP:DMG: }, - [1676530441.143742][49371:49373] CHIP:DMG: - [1676530441.143744][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.143749][49371:49373] CHIP:DMG: { - [1676530441.143751][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.143754][49371:49373] CHIP:DMG: { - [1676530441.143757][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.143760][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.143763][49371:49373] CHIP:DMG: { - [1676530441.143766][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.143769][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.143772][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.143775][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.143778][49371:49373] CHIP:DMG: } - [1676530441.143782][49371:49373] CHIP:DMG: - [1676530441.143785][49371:49373] CHIP:DMG: Data = 0, - [1676530441.143788][49371:49373] CHIP:DMG: }, - [1676530441.143792][49371:49373] CHIP:DMG: - [1676530441.143794][49371:49373] CHIP:DMG: }, - [1676530441.143800][49371:49373] CHIP:DMG: - [1676530441.143803][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.143807][49371:49373] CHIP:DMG: { - [1676530441.143809][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.143812][49371:49373] CHIP:DMG: { - [1676530441.143815][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.143818][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.143820][49371:49373] CHIP:DMG: { - [1676530441.143823][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.143827][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.143830][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.143833][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.143835][49371:49373] CHIP:DMG: } - [1676530441.143839][49371:49373] CHIP:DMG: - [1676530441.143842][49371:49373] CHIP:DMG: Data = 1, - [1676530441.143845][49371:49373] CHIP:DMG: }, - [1676530441.143849][49371:49373] CHIP:DMG: - [1676530441.143851][49371:49373] CHIP:DMG: }, - [1676530441.143857][49371:49373] CHIP:DMG: - [1676530441.143860][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.143865][49371:49373] CHIP:DMG: { - [1676530441.143868][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.143872][49371:49373] CHIP:DMG: { - [1676530441.143877][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.143880][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.143885][49371:49373] CHIP:DMG: { - [1676530441.143891][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.143896][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.143900][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.143903][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.143906][49371:49373] CHIP:DMG: } - [1676530441.143910][49371:49373] CHIP:DMG: - [1676530441.143913][49371:49373] CHIP:DMG: Data = 65528, - [1676530441.143916][49371:49373] CHIP:DMG: }, - [1676530441.143920][49371:49373] CHIP:DMG: - [1676530441.143922][49371:49373] CHIP:DMG: }, - [1676530441.143929][49371:49373] CHIP:DMG: - [1676530441.143931][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.143937][49371:49373] CHIP:DMG: { - [1676530441.143940][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.143944][49371:49373] CHIP:DMG: { - [1676530441.143948][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.143952][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.143956][49371:49373] CHIP:DMG: { - [1676530441.143959][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.143964][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.143969][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.143973][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.143978][49371:49373] CHIP:DMG: } - [1676530441.143983][49371:49373] CHIP:DMG: - [1676530441.143988][49371:49373] CHIP:DMG: Data = 65529, - [1676530441.143992][49371:49373] CHIP:DMG: }, - [1676530441.143998][49371:49373] CHIP:DMG: - [1676530441.144001][49371:49373] CHIP:DMG: }, - [1676530441.144010][49371:49373] CHIP:DMG: - [1676530441.144012][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.144018][49371:49373] CHIP:DMG: { - [1676530441.144021][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.144024][49371:49373] CHIP:DMG: { - [1676530441.144027][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.144030][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.144033][49371:49373] CHIP:DMG: { - [1676530441.144036][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.144041][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.144046][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.144050][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.144054][49371:49373] CHIP:DMG: } - [1676530441.144061][49371:49373] CHIP:DMG: - [1676530441.144065][49371:49373] CHIP:DMG: Data = 65530, - [1676530441.144068][49371:49373] CHIP:DMG: }, - [1676530441.144075][49371:49373] CHIP:DMG: - [1676530441.144078][49371:49373] CHIP:DMG: }, - [1676530441.144086][49371:49373] CHIP:DMG: - [1676530441.144089][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.144096][49371:49373] CHIP:DMG: { - [1676530441.144099][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.144103][49371:49373] CHIP:DMG: { - [1676530441.144107][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.144109][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.144112][49371:49373] CHIP:DMG: { - [1676530441.144115][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.144119][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.144122][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.144127][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.144131][49371:49373] CHIP:DMG: } - [1676530441.144136][49371:49373] CHIP:DMG: - [1676530441.144141][49371:49373] CHIP:DMG: Data = 65531, - [1676530441.144145][49371:49373] CHIP:DMG: }, - [1676530441.144152][49371:49373] CHIP:DMG: - [1676530441.144156][49371:49373] CHIP:DMG: }, - [1676530441.144165][49371:49373] CHIP:DMG: - [1676530441.144169][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.144176][49371:49373] CHIP:DMG: { - [1676530441.144179][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.144184][49371:49373] CHIP:DMG: { - [1676530441.144188][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.144192][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.144197][49371:49373] CHIP:DMG: { - [1676530441.144200][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.144203][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.144208][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.144212][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.144216][49371:49373] CHIP:DMG: } - [1676530441.144222][49371:49373] CHIP:DMG: - [1676530441.144226][49371:49373] CHIP:DMG: Data = 65532, - [1676530441.144230][49371:49373] CHIP:DMG: }, - [1676530441.144237][49371:49373] CHIP:DMG: - [1676530441.144240][49371:49373] CHIP:DMG: }, - [1676530441.144248][49371:49373] CHIP:DMG: - [1676530441.144251][49371:49373] CHIP:DMG: AttributeReportIB = - [1676530441.144258][49371:49373] CHIP:DMG: { - [1676530441.144261][49371:49373] CHIP:DMG: AttributeDataIB = - [1676530441.144265][49371:49373] CHIP:DMG: { - [1676530441.144270][49371:49373] CHIP:DMG: DataVersion = 0xa9b15b57, - [1676530441.144273][49371:49373] CHIP:DMG: AttributePathIB = - [1676530441.144278][49371:49373] CHIP:DMG: { - [1676530441.144283][49371:49373] CHIP:DMG: Endpoint = 0x1, - [1676530441.144288][49371:49373] CHIP:DMG: Cluster = 0x3b, - [1676530441.144293][49371:49373] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676530441.144297][49371:49373] CHIP:DMG: ListIndex = Null, - [1676530441.144301][49371:49373] CHIP:DMG: } - [1676530441.144306][49371:49373] CHIP:DMG: - [1676530441.144310][49371:49373] CHIP:DMG: Data = 65533, - [1676530441.144314][49371:49373] CHIP:DMG: }, - [1676530441.144319][49371:49373] CHIP:DMG: - [1676530441.144322][49371:49373] CHIP:DMG: }, - [1676530441.144329][49371:49373] CHIP:DMG: - [1676530441.144332][49371:49373] CHIP:DMG: ], - [1676530441.144352][49371:49373] CHIP:DMG: - [1676530441.144356][49371:49373] CHIP:DMG: SuppressResponse = true, - [1676530441.144359][49371:49373] CHIP:DMG: InteractionModelRevision = 1 - [1676530441.144362][49371:49373] CHIP:DMG: } - - - - ./chip-tool switch read number-of-positions 1 1 - - Verify TH receives NumberOfPositions attribute response on the TH(all-clusters-minimal-app) Log: - - [1666944027.604420][12769:12769] CHIP:DMG: ReportDataMessage = - [1666944027.604423][12769:12769] CHIP:DMG: { - [1666944027.604425][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666944027.604430][12769:12769] CHIP:DMG: [ - [1666944027.604432][12769:12769] CHIP:DMG: AttributeReportIB = - [1666944027.604437][12769:12769] CHIP:DMG: { - [1666944027.604439][12769:12769] CHIP:DMG: AttributeDataIB = - [1666944027.604443][12769:12769] CHIP:DMG: { - [1666944027.604445][12769:12769] CHIP:DMG: DataVersion = 0x8c421c49, - [1666944027.604447][12769:12769] CHIP:DMG: AttributePathIB = - [1666944027.604450][12769:12769] CHIP:DMG: { - [1666944027.604452][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666944027.604455][12769:12769] CHIP:DMG: Cluster = 0x3b, - [1666944027.604459][12769:12769] CHIP:DMG: Attribute = 0x0000_0000, - [1666944027.604461][12769:12769] CHIP:DMG: } - [1666944027.604463][12769:12769] CHIP:DMG: - [1666944027.604466][12769:12769] CHIP:DMG: Data = 2, - [1666944027.604469][12769:12769] CHIP:DMG: }, - [1666944027.604480][12769:12769] CHIP:DMG: - [1666944027.604482][12769:12769] CHIP:DMG: }, - [1666944027.604486][12769:12769] CHIP:DMG: - [1666944027.604488][12769:12769] CHIP:DMG: ], - [1666944027.604492][12769:12769] CHIP:DMG: - [1666944027.604495][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666944027.604497][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666944027.604500][12769:12769] CHIP:DMG: } - - - ./chip-tool switch read current-position 1 1 - - Verify TH receives CurrentPosition attribute response on the TH(all-clusters-minimal-app) Log: - - [1666944049.906683][12769:12769] CHIP:DMG: ReportDataMessage = - [1666944049.906685][12769:12769] CHIP:DMG: { - [1666944049.906687][12769:12769] CHIP:DMG: AttributeReportIBs = - [1666944049.906690][12769:12769] CHIP:DMG: [ - [1666944049.906692][12769:12769] CHIP:DMG: AttributeReportIB = - [1666944049.906695][12769:12769] CHIP:DMG: { - [1666944049.906697][12769:12769] CHIP:DMG: AttributeDataIB = - [1666944049.906699][12769:12769] CHIP:DMG: { - [1666944049.906701][12769:12769] CHIP:DMG: DataVersion = 0x8c421c49, - [1666944049.906703][12769:12769] CHIP:DMG: AttributePathIB = - [1666944049.906705][12769:12769] CHIP:DMG: { - [1666944049.906708][12769:12769] CHIP:DMG: Endpoint = 0x1, - [1666944049.906710][12769:12769] CHIP:DMG: Cluster = 0x3b, - [1666944049.906712][12769:12769] CHIP:DMG: Attribute = 0x0000_0001, - [1666944049.906714][12769:12769] CHIP:DMG: } - [1666944049.906717][12769:12769] CHIP:DMG: - [1666944049.906719][12769:12769] CHIP:DMG: Data = 0, - [1666944049.906721][12769:12769] CHIP:DMG: }, - [1666944049.906724][12769:12769] CHIP:DMG: - [1666944049.906726][12769:12769] CHIP:DMG: }, - [1666944049.906728][12769:12769] CHIP:DMG: - [1666944049.906730][12769:12769] CHIP:DMG: ], - [1666944049.906733][12769:12769] CHIP:DMG: - [1666944049.906735][12769:12769] CHIP:DMG: SuppressResponse = true, - [1666944049.906737][12769:12769] CHIP:DMG: InteractionModelRevision = 1 - [1666944049.906739][12769:12769] CHIP:DMG: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - - status = 0x86 (UNSUPPORTED_ATTRIBUTE), - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && SWTCH.C.AO-READ - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_S_2_1.yaml b/src/app/tests/suites/certification/Test_TC_S_2_1.yaml index 02d54ffa921b7e..039309538b5097 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_1.yaml @@ -64,7 +64,7 @@ tests: attribute: "SceneValid" response: constraints: - type: uint8 + type: int8u - label: "Step 6: TH reads from the DUT the (0x0004) NameSupport attribute" PICS: S.S.A0003 && S.S.F00 @@ -73,7 +73,7 @@ tests: response: value: 0x80 constraints: - type: uint8 + type: int8u - label: "Step 6: TH reads from the DUT the (0x0004) NameSupport attribute" PICS: S.S.A0004 && (!S.S.F00) @@ -82,7 +82,7 @@ tests: response: value: 0x00 constraints: - type: uint8 + type: int8u - label: "Step 7: TH reads from the DUT the (0x0005) LastConfiguredBy attribute" @@ -110,4 +110,4 @@ tests: attribute: "RemainingCapacity" response: constraints: - type: uint8 + type: int8u diff --git a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml index 437acb3881ff3f..a33f9d9752b168 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml @@ -23,6 +23,9 @@ config: cluster: "Scenes" endpoint: 1 + GroupKeyManagement.Endpoint: 0 + Groups.Endpoint: 1 + tests: - label: "Wait for the commissioned device to be retrieved" cluster: "DelayCommands" @@ -32,12 +35,6 @@ tests: - name: "nodeId" value: nodeId - - label: "TH sends a RemoveAllGroups command to DUT." - PICS: G.S.C04.Rsp - cluster: "Groups" - endpoint: "1" - command: "RemoveAllGroups" - - label: "TH reads from the DUT the (0x0006) SceneTableSize attribute" PICS: S.S.A0006 command: "readAttribute" @@ -46,14 +43,12 @@ tests: values: - name: "SceneTableSize" saveAs: maxScenes - constraints: - type: uint16 - label: "Step 0a: preparation step for using commands from Groups cluster: Add KeySet" cluster: "Group Key Management" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "KeySetWrite" arguments: values: @@ -62,19 +57,19 @@ tests: { GroupKeySetID: 0x01a1, GroupKeySecurityPolicy: 0, - EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf", - EpochStartTime0: 0, - EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf", - EpochStartTime1: 0, - EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf", - EpochStartTime2: 0, + EpochKey0: "hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime0: 2220000, + EpochKey1: "hex:d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime1: 2220001, + EpochKey2: "hex:d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime2: 2220002, } - label: "Step 0b: Preparation step for using commands from Groups cluster: Write Group Keys" cluster: "Group Key Management" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "writeAttribute" attribute: "GroupKeyMap" arguments: @@ -84,6 +79,12 @@ tests: { FabricIndex: 1, GroupId: 0x0002, GroupKeySetID: 0x01a1 }, ] + - label: "Step 0c: TH sends a RemoveAllGroups command to DUT." + PICS: G.S.C04.Rsp + cluster: "Groups" + endpoint: Groups.Endpoint + command: "RemoveAllGroups" + - label: "Step 1a: TH sends a AddGroup command to DUT with the GroupID field set to 0x0001." @@ -133,7 +134,7 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) + value: ( maxScenes / 2 ) - name: "GroupID" value: 0x0001 @@ -238,16 +239,17 @@ tests: value: 0x01 - label: "Step 3c: TH reads the SceneCount attribute from DUT." - PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 + PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 && !S.S.F03 command: "readAttribute" attribute: "SceneCount" response: value: 1 + saveAs: SceneCountValue constraints: type: int8u - - label: "Step 3c: TH reads the CurrentScene attribute from DUT." - PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 + - label: "Step 3d: TH reads the CurrentScene attribute from DUT." + PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 && !S.S.F03 command: "readAttribute" attribute: "CurrentScene" response: @@ -255,8 +257,8 @@ tests: constraints: type: int8u - - label: "Step 3c: TH reads the CurrentGroup attribute from DUT." - PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 + - label: "Step 3e: TH reads the CurrentGroup attribute from DUT." + PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 && !S.S.F03 command: "readAttribute" attribute: "CurrentGroup" response: @@ -264,19 +266,65 @@ tests: constraints: type: groupid - - label: "Step 3c: TH reads the SceneValid attribute from DUT." - PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 + - label: "Step 3f: TH reads the SceneValid attribute from DUT." + PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 && !S.S.F03 command: "readAttribute" attribute: "SceneValid" response: value: true constraints: - type: uint8 + type: int8u + + - label: "Step 3g: TH reads attribute SceneTableSize from DUT." + PICS: S.S.F03 && S.S.F02 + command: "readAttribute" + attribute: "SceneTableSize" + response: + saveAs: SceneTableSizeValue + constraints: + type: int16u + + #FabricSceneInfo attribute not supported + - label: "Step 3h: TH reads attribute FabricSceneInfo from DUT" + verification: | + DUT provides FabricSceneInfo containing (for the current fabric) following fields: + + SceneCount has the value (PIXIT.S.SceneTableEntriesOnFactoryNew + 1) + + CurrentScene has the value 0x01 + + CurrentGroup has the value G1 + + SceneValid has the value TRUE. + + if S.S.F02(TS), RemainingCapacity has the value SceneTableSize/2 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP && S.S.F03 && S.S.F02 + arguments: + values: + - name: "message" + value: "Enter y after success" + - name: "expectedValue" + value: "y" + + #- label: "Step 3h: TH reads attribute FabricSceneInfo from DUT" + # PICS: S.S.F03 && S.S.F02 + # command: "readAttribute" + # attribute: "FabricSceneInfo" + # response: + # value: { + # SceneCount: SceneCountValue, + # CurrentScene: 0x01, + # CurrentGroup: 0x0001, + # SceneValid: true, + # RemainingCapacity: ( SceneTableSizeValue/2 ), + # } - label: "Step 4a: Reboot target device" PICS: PICS_SDK_CI_ONLY cluster: "SystemCommands" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "Reboot" - label: "Step 4a: Reboot target device(DUT)" @@ -292,6 +340,14 @@ tests: - name: "expectedValue" value: "y" + - label: "Wait for the commissioned device to be retrieved" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + - label: "Step 4c: TH configures AC2 on DUT for all implemented application clusters supporting scenes." @@ -419,7 +475,7 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) - 1 + value: ( maxScenes / 2 ) - 1 - name: "GroupID" value: 0x0001 - name: "SceneList" @@ -455,18 +511,16 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) + constraints: + anyOf: [( maxScenes / 2 ), 0xfe, 0x89] - name: "GroupID" value: 0x0001 - # TODO : For Capacity, replace "value: (maxScenes/2)" by following lines when new backend for test is used in CI - # constraints: - # anyOf: [(maxScenes/2), 0xfe ,0x89] - label: "Step 8a: TH sends a AddScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to 0x01, the TransitionTime field set to 0x0001 and a set of extension fields appropriate to AC1." - PICS: S.S.C00.Rsp && && PICS_SDK_CI_ONLY + PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY command: "AddScene" arguments: values: @@ -586,14 +640,12 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) - 1 + constraints: + anyOf: [( maxScenes / 2 ) - 1, 0xfe, 0x89] - name: "GroupID" value: 0x0001 - name: "SceneList" value: [0x01] - # TODO : For Capacity, replace "value: (maxScenes/2)" by following lines when new backend for test is used in CI - # constraints: - # anyOf: [(maxScenes/2), 0xfe ,0x89] - label: "Step 9a: TH sends a RemoveScene command to DUT with the GroupID field @@ -629,12 +681,10 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) + constraints: + anyOf: [( maxScenes / 2 ), 0xfe, 0x89] - name: "GroupID" value: 0x0001 - # TODO : For Capacity, replace "value: (maxScenes/2)" by following lines when new backend for test is used in CI - # constraints: - # anyOf: [(maxScenes/2), 0xfe ,0x89] - label: "Step 10a: TH configures AC2 on DUT for all implemented application @@ -786,39 +836,34 @@ tests: response: values: - name: "Status" - value: 0x00 + saveAs: StoreStatus + constraints: + anyOf: [0x00, 0x89] - name: "GroupID" value: 0x0001 - name: "SceneID" value: 0x02 - # TODO: For status, replace "- value: 0x00" by following lines when new backend for test is used in CI - # saveAs: StoreStatus - # constraints: - # anyOf: [0x00, 0x89] - - # TODO: Uncomment once the new backend is implemented, allowing the use of EqualityCommands pseudo cluster - #- label: - # "Verify that the status of previous command was either 0x00 (SUCCESS) - # or 0x89 (INSUFFICIENT_SPACE)" - # cluster: "EqualityCommands" - # command: "UnsignedNumberEquals" - # arguments: - # values: - # - name: "Value1" - # value: 0x00 - # - name: "Value2" - # value: StoreStatus - # response: - # - values: - # - name: "Equals" - # value: true - # saveAs: ContinueTest + + - label: + "Verify that the status of previous command was either 0x00 (SUCCESS) + or 0x89 (INSUFFICIENT_SPACE)" + cluster: "EqualityCommands" + command: "UnsignedNumberEquals" + arguments: + values: + - name: "Value1" + value: 0x00 + - name: "Value2" + value: StoreStatus + response: + - values: + - name: "Equals" + saveAs: ContinueTest - label: "Step 12c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest PICS: S.S.C06.Rsp command: "GetSceneMembership" arguments: @@ -830,7 +875,7 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) - 2 + value: ( maxScenes / 2 ) - 2 - name: "GroupID" value: 0x0001 - name: "SceneList" @@ -839,8 +884,7 @@ tests: - label: "Step 13a: If capacity allows, TH sends a AddGroup command to DUT with the GroupID field set to 0x0002." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest PICS: G.S.C00.Rsp cluster: "Groups" command: "AddGroup" @@ -860,8 +904,7 @@ tests: - label: "Step 13b: TH sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0002." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest PICS: S.S.C03.Rsp command: "RemoveAllScenes" arguments: @@ -878,8 +921,7 @@ tests: - label: "Step 13c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0002." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest PICS: S.S.C06.Rsp command: "GetSceneMembership" arguments: @@ -891,15 +933,14 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) - 2 + value: ( maxScenes / 2 ) - 2 - name: "GroupID" value: 0x0002 - label: "Step 14a: TH configures AC3 on DUT for all implemented application clusters supporting scenes." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest cluster: "Level Control" PICS: PICS_SDK_CI_ONLY command: "MoveToLevelWithOnOff" @@ -917,8 +958,7 @@ tests: - label: "Step 14a: TH configures AC3 on DUT for all implemented application clusters supporting scenes." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest verification: | Is DUT configured with AC3? cluster: "LogCommands" @@ -936,8 +976,7 @@ tests: - label: "Step 14b: TH sends a StoreScene command to DUT with the GroupID field set to 0x0002 and the SceneID field set to 0x03." - # TODO : Uncomment runIf statement once new test backend is implemented - #runIf: ContinueTest + runIf: ContinueTest PICS: S.S.C04.Rsp command: "StoreScene" arguments: @@ -949,39 +988,35 @@ tests: response: values: - name: "Status" - value: 0x00 + saveAs: StoreStatus + constraints: + anyOf: [0x00, 0x89] - name: "GroupID" value: 0x0002 - name: "SceneID" value: 0x03 - # TODO: For Status, replace "- value: 0x00"by following lines when new backend for test is used in CI - # saveAs: StoreStatus - # constraints: - # anyOf: [0x00, 0x89] - - # TODO: Uncomment once the new backend is implemented, allowing the use of EqualityCommands pseudo cluster - #- label: - # "Verify that the status of previous command was either 0x00 (SUCCESS) - # or 0x89 (INSUFFICIENT_SPACE)" - # runIf: ContinueTest - # cluster: "EqualityCommands" - # command: "UnsignedNumberEquals" - # arguments: - # values: - # - name: "Value1" - # value: 0x00 - # - name: "Value2" - # value: StoreStatus - # response: - # - values: - # - name: "Equals" - # value: true - # saveAs: ContinueTest + + - label: + "Verify that the status of previous command was either 0x00 (SUCCESS) + or 0x89 (INSUFFICIENT_SPACE)" + runIf: ContinueTest + cluster: "EqualityCommands" + command: "UnsignedNumberEquals" + arguments: + values: + - name: "Value1" + value: 0x00 + - name: "Value2" + value: StoreStatus + response: + - values: + - name: "Equals" + saveAs: ContinueTest - label: "Step 14c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0002." - #runIf: ContinueTest + runIf: ContinueTest PICS: S.S.C06.Rsp command: "GetSceneMembership" arguments: @@ -993,8 +1028,20 @@ tests: - name: "Status" value: 0x00 - name: "Capacity" - value: (maxScenes/2) - 3 + value: ( maxScenes / 2 ) - 3 - name: "GroupID" value: 0x0002 - name: "SceneList" value: [0x03] + + - label: + "Step 15: TH removes the Group key set that was added by sending a + KeySetRemove command to the GroupKeyManagement cluster with the + GroupKeySetID field set to 0x01a1" + cluster: "Group Key Management" + endpoint: GroupKeyManagement.Endpoint + command: "KeySetRemove" + arguments: + values: + - name: GroupKeySetID + value: 0x01a1 diff --git a/src/app/tests/suites/certification/Test_TC_S_2_3.yaml b/src/app/tests/suites/certification/Test_TC_S_2_3.yaml index 61ba0728eef868..cc019818fcc4a1 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_3.yaml @@ -25,6 +25,7 @@ config: G1: type: int16u defaultValue: 0x0001 + GroupKeyManagement.Endpoint: 0 tests: - label: "Wait for the commissioned device to be retrieved" @@ -43,14 +44,12 @@ tests: values: - name: "SceneTableSize" saveAs: maxScenes - constraints: - type: uint16 - label: "Step 0a: preparation step for using commands from Groups cluster: Add KeySet" cluster: "Group Key Management" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "KeySetWrite" arguments: values: @@ -59,19 +58,19 @@ tests: { GroupKeySetID: 0x01a1, GroupKeySecurityPolicy: 0, - EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf", - EpochStartTime0: 0, - EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf", - EpochStartTime1: 0, - EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf", - EpochStartTime2: 0, + EpochKey0: "hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime0: 2220000, + EpochKey1: "hex:d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime1: 2220001, + EpochKey2: "hex:d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime2: 2220002, } - label: "Step 0b: Preparation step for using commands from Groups cluster: Write Group Keys" cluster: "Group Key Management" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "writeAttribute" attribute: "GroupKeyMap" arguments: @@ -182,10 +181,10 @@ tests: value: 0x01 - label: - "Step 2a: TH sends a AddScene command to DUT with the GroupID field + "Step 2b: TH sends a AddScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01, the TransitionTime field set to 0x0001 (1s) and a set of extension fields appropriate to AC1." - PICS: (!S.S.C40.Rsp) && PICS_SDK_CI_ONLY + PICS: S.S.C40.Rsp && PICS_SDK_CI_ONLY command: "AddScene" arguments: values: @@ -230,7 +229,7 @@ tests: value: 0x01 - label: - "Step 2b: TH sends a EnhancedAddScene command to DUT with the GroupID + "Step 2a: TH sends a EnhancedAddScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01, the TransitionTime field set to 0x000a and a set of extension fields appropriate to AC1." verification: | @@ -399,9 +398,9 @@ tests: ] - label: - "Step 3a: TH sends a ViewScene command to DUT with the GroupID field + "Step 3b: TH sends a ViewScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01." - PICS: (!S.S.C41.Rsp) && PICS_SDK_CI_ONLY + PICS: S.S.C41.Rsp && PICS_SDK_CI_ONLY command: "ViewScene" arguments: values: @@ -444,7 +443,7 @@ tests: ] - label: - "Step 3b: TH sends a EnhancedViewScene command to DUT with the GroupID + "Step 3a: TH sends a EnhancedViewScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01." PICS: S.S.C41.Rsp && PICS_SKIP_SAMPLE_APP verification: | @@ -578,7 +577,7 @@ tests: - label: "TH confirm the DUT reached AC1 (on level control cluster) after 1s" - PICS: PICS_SDK_CI_ONLY + PICS: S.S.C40.Rsp cluster: "Level Control" command: "readAttribute" attribute: "CurrentLevel" @@ -604,8 +603,6 @@ tests: identifier from field set to 0x01, the group identifier to field set to G1 and the scene identifier to field set to 0x02." PICS: S.S.C42.Rsp - verification: | - DUT sends a CopySceneResponse command to TH with the Status field set to 0x00 (SUCCESS), the group identifier from field set to G1 and the scene identifier from field set to 0x01. command: "CopyScene" arguments: values: @@ -647,3 +644,15 @@ tests: value: G1 - name: "SceneList" value: [0x01, 0x02] + + - label: + "Step 7: TH removes the Group key set that was added by sending a + KeySetRemove command to the GroupKeyManagement cluster with the + GroupKeySetID field set to 0x01a1" + cluster: "Group Key Management" + endpoint: GroupKeyManagement.Endpoint + command: "KeySetRemove" + arguments: + values: + - name: GroupKeySetID + value: 0x01a1 diff --git a/src/app/tests/suites/certification/Test_TC_S_2_4.yaml b/src/app/tests/suites/certification/Test_TC_S_2_4.yaml index dea1657f51e555..2cf0d603da4ba1 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_4.yaml @@ -23,6 +23,9 @@ config: cluster: "Scenes" endpoint: 1 + GroupKeyManagement.Endpoint: 0 + Groups.Endpoint: 1 + tests: - label: "Wait for the commissioned device to be retrieved" cluster: "DelayCommands" @@ -32,17 +35,11 @@ tests: - name: "nodeId" value: nodeId - - label: "TH sends a RemoveAllGroups command to DUT." - PICS: G.S.C04.Rsp - cluster: "Groups" - endpoint: "1" - command: "RemoveAllGroups" - - label: "Step 0a: preparation step for using commands from Groups cluster: Add KeySet" cluster: "Group Key Management" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "KeySetWrite" arguments: values: @@ -51,24 +48,30 @@ tests: { GroupKeySetID: 0x01a1, GroupKeySecurityPolicy: 0, - EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf", - EpochStartTime0: 0, - EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf", - EpochStartTime1: 0, - EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf", - EpochStartTime2: 0, + EpochKey0: "hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime0: 2220000, + EpochKey1: "hex:d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime1: 2220001, + EpochKey2: "hex:d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", + EpochStartTime2: 2220002, } - label: "Step 0b: Preparation step for using commands from Groups cluster: Write Group Keys" cluster: "Group Key Management" - endpoint: 0 + endpoint: GroupKeyManagement.Endpoint command: "writeAttribute" attribute: "GroupKeyMap" arguments: value: [{ FabricIndex: 1, GroupId: 0x0001, GroupKeySetID: 0x01a1 }] + - label: "Step 0c: TH sends a RemoveAllGroups command to DUT." + PICS: G.S.C04.Rsp + cluster: "Groups" + endpoint: Groups.Endpoint + command: "RemoveAllGroups" + - label: "Step 2a: TH sends a AddGroup command to DUT with the GroupID field set to 0x0001." @@ -204,7 +207,6 @@ tests: value: 0 - label: "Wait 1s for level to change" - PICS: PICS_SDK_CI_ONLY cluster: "DelayCommands" command: "WaitForMs" arguments: @@ -253,7 +255,6 @@ tests: value: 0x01 - label: "Wait 20s" - PICS: PICS_SDK_CI_ONLY cluster: "DelayCommands" command: "WaitForMs" arguments: @@ -284,8 +285,8 @@ tests: value: "y" - label: - "TH configures AC2 on DUT for all implemented application clusters - supporting scenes." + "Step 6a: TH configures AC2 on DUT for all implemented application + clusters supporting scenes." PICS: PICS_SDK_CI_ONLY cluster: "Level Control" command: "MoveToLevelWithOnOff" @@ -301,13 +302,13 @@ tests: value: 0 - label: - "TH configures AC2 on DUT for all implemented application clusters - supporting scenes." + "Step 6a: TH configures AC2 on DUT for all implemented application + clusters supporting scenes." verification: | Is DUT configured with AC2? cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP + PICS: PICS_SKIP_SAMPLE_APP && PICS_SC_RECALL_SCENE_TRANSITION_TIME arguments: values: - name: "message" @@ -318,10 +319,10 @@ tests: value: "y" - label: - "Step 6a: TH sends a RecallScene command to DUT with the GroupID field + "Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to 0x01 and the TransitionTime field set to 0x0032 (5s)." - PICS: S.S.C05.Rsp + PICS: S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME command: "RecallScene" arguments: values: @@ -333,7 +334,6 @@ tests: value: 0x0032 - label: "Wait 5s" - PICS: PICS_SDK_CI_ONLY cluster: "DelayCommands" command: "WaitForMs" arguments: @@ -412,4 +412,16 @@ tests: - name: "TransitionTime" value: null response: - error: 0x00 + error: SUCCESS + + - label: + "Step 8: TH removes the Group key set that was added by sending a + KeySetRemove command to the GroupKeyManagement cluster with the + GroupKeySetID field set to 0x01a1" + cluster: "Group Key Management" + endpoint: GroupKeyManagement.Endpoint + command: "KeySetRemove" + arguments: + values: + - name: GroupKeySetID + value: 0x01a1 diff --git a/src/app/tests/suites/certification/Test_TC_S_3_1.yaml b/src/app/tests/suites/certification/Test_TC_S_3_1.yaml deleted file mode 100644 index 3bc443f3cb3866..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_S_3_1.yaml +++ /dev/null @@ -1,608 +0,0 @@ -# Copyright (c) 2023 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: 132.3.1. [TC-S-3.1] Functionality with DUT as Client - -PICS: - - S.C - - S.C.AM-READ - - S.C.AO-READ - - S.C.AM-WRITE - - S.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: DUT reads all supported mandatory attributes from TH one at a - time in a manufacturer specific order." - PICS: S.C.AM-READ - verification: | - ./chip-tool scenes read scene-count 1 1 - - [1689664978.443091][2339:2341] CHIP:DMG: ReportDataMessage = - [1689664978.443128][2339:2341] CHIP:DMG: { - [1689664978.443156][2339:2341] CHIP:DMG: AttributeReportIBs = - [1689664978.443196][2339:2341] CHIP:DMG: [ - [1689664978.443226][2339:2341] CHIP:DMG: AttributeReportIB = - [1689664978.443268][2339:2341] CHIP:DMG: { - [1689664978.443300][2339:2341] CHIP:DMG: AttributeDataIB = - [1689664978.443341][2339:2341] CHIP:DMG: { - [1689664978.443381][2339:2341] CHIP:DMG: DataVersion = 0xff333f87, - [1689664978.443420][2339:2341] CHIP:DMG: AttributePathIB = - [1689664978.443462][2339:2341] CHIP:DMG: { - [1689664978.443503][2339:2341] CHIP:DMG: Endpoint = 0x1, - [1689664978.443546][2339:2341] CHIP:DMG: Cluster = 0x5, - [1689664978.443589][2339:2341] CHIP:DMG: Attribute = 0x0000_0000, - [1689664978.443630][2339:2341] CHIP:DMG: } - [1689664978.443672][2339:2341] CHIP:DMG: - [1689664978.443714][2339:2341] CHIP:DMG: Data = 0, - [1689664978.443752][2339:2341] CHIP:DMG: }, - [1689664978.443793][2339:2341] CHIP:DMG: - [1689664978.443857][2339:2341] CHIP:DMG: }, - [1689664978.443900][2339:2341] CHIP:DMG: - [1689664978.443929][2339:2341] CHIP:DMG: ], - [1689664978.443968][2339:2341] CHIP:DMG: - [1689664978.443999][2339:2341] CHIP:DMG: SuppressResponse = true, - [1689664978.444030][2339:2341] CHIP:DMG: InteractionModelRevision = 1 - [1689664978.444059][2339:2341] CHIP:DMG: } - - ./chip-tool scenes read current-scene 1 1 - - [1689664981.268319][2343:2346] CHIP:DMG: ReportDataMessage = - [1689664981.268356][2343:2346] CHIP:DMG: { - [1689664981.268420][2343:2346] CHIP:DMG: AttributeReportIBs = - [1689664981.268462][2343:2346] CHIP:DMG: [ - [1689664981.268492][2343:2346] CHIP:DMG: AttributeReportIB = - [1689664981.268530][2343:2346] CHIP:DMG: { - [1689664981.268561][2343:2346] CHIP:DMG: AttributeDataIB = - [1689664981.268595][2343:2346] CHIP:DMG: { - [1689664981.268631][2343:2346] CHIP:DMG: DataVersion = 0xff333f87, - [1689664981.268666][2343:2346] CHIP:DMG: AttributePathIB = - [1689664981.268703][2343:2346] CHIP:DMG: { - [1689664981.268740][2343:2346] CHIP:DMG: Endpoint = 0x1, - [1689664981.268779][2343:2346] CHIP:DMG: Cluster = 0x5, - [1689664981.268817][2343:2346] CHIP:DMG: Attribute = 0x0000_0001, - [1689664981.268854][2343:2346] CHIP:DMG: } - [1689664981.268893][2343:2346] CHIP:DMG: - [1689664981.268932][2343:2346] CHIP:DMG: Data = 0, - [1689664981.268966][2343:2346] CHIP:DMG: }, - [1689664981.269003][2343:2346] CHIP:DMG: - [1689664981.269033][2343:2346] CHIP:DMG: }, - [1689664981.269068][2343:2346] CHIP:DMG: - [1689664981.269095][2343:2346] CHIP:DMG: ], - [1689664981.269131][2343:2346] CHIP:DMG: - [1689664981.269160][2343:2346] CHIP:DMG: SuppressResponse = true, - [1689664981.269189][2343:2346] CHIP:DMG: InteractionModelRevision = 1 - [1689664981.269216][2343:2346] CHIP:DMG: } - - - ./chip-tool scenes read current-group 1 1 - - [1689664983.848116][2348:2351] CHIP:DMG: ReportDataMessage = - [1689664983.848153][2348:2351] CHIP:DMG: { - [1689664983.848182][2348:2351] CHIP:DMG: AttributeReportIBs = - [1689664983.848226][2348:2351] CHIP:DMG: [ - [1689664983.848257][2348:2351] CHIP:DMG: AttributeReportIB = - [1689664983.848296][2348:2351] CHIP:DMG: { - [1689664983.848326][2348:2351] CHIP:DMG: AttributeDataIB = - [1689664983.848364][2348:2351] CHIP:DMG: { - [1689664983.848400][2348:2351] CHIP:DMG: DataVersion = 0xff333f87, - [1689664983.848437][2348:2351] CHIP:DMG: AttributePathIB = - [1689664983.848475][2348:2351] CHIP:DMG: { - [1689664983.848513][2348:2351] CHIP:DMG: Endpoint = 0x1, - [1689664983.848553][2348:2351] CHIP:DMG: Cluster = 0x5, - [1689664983.848593][2348:2351] CHIP:DMG: Attribute = 0x0000_0002, - [1689664983.848631][2348:2351] CHIP:DMG: } - [1689664983.848671][2348:2351] CHIP:DMG: - [1689664983.848710][2348:2351] CHIP:DMG: Data = 0, - [1689664983.848745][2348:2351] CHIP:DMG: }, - [1689664983.848783][2348:2351] CHIP:DMG: - [1689664983.848813][2348:2351] CHIP:DMG: }, - [1689664983.848850][2348:2351] CHIP:DMG: - [1689664983.848877][2348:2351] CHIP:DMG: ], - [1689664983.848913][2348:2351] CHIP:DMG: - [1689664983.848941][2348:2351] CHIP:DMG: SuppressResponse = true, - [1689664983.848970][2348:2351] CHIP:DMG: InteractionModelRevision = 1 - [1689664983.848997][2348:2351] CHIP:DMG: } - - - ./chip-tool scenes read scene-valid 1 1 - - [1689664986.197422][2352:2354] CHIP:DMG: ReportDataMessage = - [1689664986.197461][2352:2354] CHIP:DMG: { - [1689664986.197492][2352:2354] CHIP:DMG: AttributeReportIBs = - [1689664986.197534][2352:2354] CHIP:DMG: [ - [1689664986.197565][2352:2354] CHIP:DMG: AttributeReportIB = - [1689664986.197610][2352:2354] CHIP:DMG: { - [1689664986.197643][2352:2354] CHIP:DMG: AttributeDataIB = - [1689664986.197682][2352:2354] CHIP:DMG: { - [1689664986.197722][2352:2354] CHIP:DMG: DataVersion = 0xff333f87, - [1689664986.197762][2352:2354] CHIP:DMG: AttributePathIB = - [1689664986.197803][2352:2354] CHIP:DMG: { - [1689664986.197845][2352:2354] CHIP:DMG: Endpoint = 0x1, - [1689664986.197889][2352:2354] CHIP:DMG: Cluster = 0x5, - [1689664986.197935][2352:2354] CHIP:DMG: Attribute = 0x0000_0003, - [1689664986.197978][2352:2354] CHIP:DMG: } - [1689664986.198021][2352:2354] CHIP:DMG: - [1689664986.198064][2352:2354] CHIP:DMG: Data = false, - [1689664986.198102][2352:2354] CHIP:DMG: }, - [1689664986.198144][2352:2354] CHIP:DMG: - [1689664986.198177][2352:2354] CHIP:DMG: }, - [1689664986.198217][2352:2354] CHIP:DMG: - [1689664986.198247][2352:2354] CHIP:DMG: ], - [1689664986.198285][2352:2354] CHIP:DMG: - [1689664986.198315][2352:2354] CHIP:DMG: SuppressResponse = true, - [1689664986.198347][2352:2354] CHIP:DMG: InteractionModelRevision = 1 - [1689664986.198376][2352:2354] CHIP:DMG: } - - ./chip-tool scenes read name-support 1 1 - - [1689664990.166849][2355:2357] CHIP:DMG: ReportDataMessage = - [1689664990.166908][2355:2357] CHIP:DMG: { - [1689664990.166933][2355:2357] CHIP:DMG: AttributeReportIBs = - [1689664990.166966][2355:2357] CHIP:DMG: [ - [1689664990.166992][2355:2357] CHIP:DMG: AttributeReportIB = - [1689664990.167030][2355:2357] CHIP:DMG: { - [1689664990.167058][2355:2357] CHIP:DMG: AttributeDataIB = - [1689664990.167090][2355:2357] CHIP:DMG: { - [1689664990.167125][2355:2357] CHIP:DMG: DataVersion = 0xff333f87, - [1689664990.167157][2355:2357] CHIP:DMG: AttributePathIB = - [1689664990.167193][2355:2357] CHIP:DMG: { - [1689664990.167228][2355:2357] CHIP:DMG: Endpoint = 0x1, - [1689664990.167265][2355:2357] CHIP:DMG: Cluster = 0x5, - [1689664990.167302][2355:2357] CHIP:DMG: Attribute = 0x0000_0004, - [1689664990.167338][2355:2357] CHIP:DMG: } - [1689664990.167374][2355:2357] CHIP:DMG: - [1689664990.167410][2355:2357] CHIP:DMG: Data = 128, - [1689664990.167442][2355:2357] CHIP:DMG: }, - [1689664990.167477][2355:2357] CHIP:DMG: - [1689664990.167505][2355:2357] CHIP:DMG: }, - [1689664990.167538][2355:2357] CHIP:DMG: - [1689664990.167564][2355:2357] CHIP:DMG: ], - [1689664990.167596][2355:2357] CHIP:DMG: - [1689664990.167623][2355:2357] CHIP:DMG: SuppressResponse = true, - [1689664990.167650][2355:2357] CHIP:DMG: InteractionModelRevision = 1 - [1689664990.167674][2355:2357] CHIP:DMG: } - - ./chip-tool scenes read scene-table-size 1 1 - - [1689664998.402942][2361:2363] CHIP:DMG: ReportDataMessage = - [1689664998.402980][2361:2363] CHIP:DMG: { - [1689664998.403009][2361:2363] CHIP:DMG: AttributeReportIBs = - [1689664998.403051][2361:2363] CHIP:DMG: [ - [1689664998.403085][2361:2363] CHIP:DMG: AttributeReportIB = - [1689664998.403173][2361:2363] CHIP:DMG: { - [1689664998.403212][2361:2363] CHIP:DMG: AttributeDataIB = - [1689664998.403256][2361:2363] CHIP:DMG: { - [1689664998.403300][2361:2363] CHIP:DMG: DataVersion = 0xff333f87, - [1689664998.403341][2361:2363] CHIP:DMG: AttributePathIB = - [1689664998.403386][2361:2363] CHIP:DMG: { - [1689664998.403431][2361:2363] CHIP:DMG: Endpoint = 0x1, - [1689664998.403487][2361:2363] CHIP:DMG: Cluster = 0x5, - [1689664998.403534][2361:2363] CHIP:DMG: Attribute = 0x0000_0006, - [1689664998.403578][2361:2363] CHIP:DMG: } - [1689664998.403623][2361:2363] CHIP:DMG: - [1689664998.403669][2361:2363] CHIP:DMG: Data = 0, - [1689664998.403710][2361:2363] CHIP:DMG: }, - [1689664998.403756][2361:2363] CHIP:DMG: - [1689664998.403793][2361:2363] CHIP:DMG: }, - [1689664998.403868][2361:2363] CHIP:DMG: - [1689664998.403903][2361:2363] CHIP:DMG: ], - [1689664998.403947][2361:2363] CHIP:DMG: - [1689664998.403981][2361:2363] CHIP:DMG: SuppressResponse = true, - [1689664998.404016][2361:2363] CHIP:DMG: InteractionModelRevision = 1 - [1689664998.404048][2361:2363] CHIP:DMG: } - - ./chip-tool scenes read remaining-capacity 1 1 - - [1689665008.860825][2364:2366] CHIP:DMG: ReportDataMessage = - [1689665008.860866][2364:2366] CHIP:DMG: { - [1689665008.860922][2364:2366] CHIP:DMG: AttributeReportIBs = - [1689665008.860964][2364:2366] CHIP:DMG: [ - [1689665008.860995][2364:2366] CHIP:DMG: AttributeReportIB = - [1689665008.861039][2364:2366] CHIP:DMG: { - [1689665008.861072][2364:2366] CHIP:DMG: AttributeDataIB = - [1689665008.861108][2364:2366] CHIP:DMG: { - [1689665008.861147][2364:2366] CHIP:DMG: DataVersion = 0xff333f87, - [1689665008.861187][2364:2366] CHIP:DMG: AttributePathIB = - [1689665008.861228][2364:2366] CHIP:DMG: { - [1689665008.861269][2364:2366] CHIP:DMG: Endpoint = 0x1, - [1689665008.861312][2364:2366] CHIP:DMG: Cluster = 0x5, - [1689665008.861355][2364:2366] CHIP:DMG: Attribute = 0x0000_0007, - [1689665008.861396][2364:2366] CHIP:DMG: } - [1689665008.861438][2364:2366] CHIP:DMG: - [1689665008.861481][2364:2366] CHIP:DMG: Data = 0, - [1689665008.861518][2364:2366] CHIP:DMG: }, - [1689665008.861559][2364:2366] CHIP:DMG: - [1689665008.861592][2364:2366] CHIP:DMG: }, - [1689665008.861631][2364:2366] CHIP:DMG: - [1689665008.861660][2364:2366] CHIP:DMG: ], - [1689665008.861698][2364:2366] CHIP:DMG: - [1689665008.861729][2364:2366] CHIP:DMG: SuppressResponse = true, - [1689665008.861760][2364:2366] CHIP:DMG: InteractionModelRevision = 1 - [1689665008.861789][2364:2366] CHIP:DMG: } - disabled: true - - - label: - "Step 2: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order." - PICS: S.C.AO-READ - verification: | - ./chip-tool scenes read last-configured-by 1 1 - - [1689664994.730050][2358:2360] CHIP:DMG: ReportDataMessage = - [1689664994.730079][2358:2360] CHIP:DMG: { - [1689664994.730102][2358:2360] CHIP:DMG: AttributeReportIBs = - [1689664994.730136][2358:2360] CHIP:DMG: [ - [1689664994.730162][2358:2360] CHIP:DMG: AttributeReportIB = - [1689664994.730201][2358:2360] CHIP:DMG: { - [1689664994.730229][2358:2360] CHIP:DMG: AttributeDataIB = - [1689664994.730262][2358:2360] CHIP:DMG: { - [1689664994.730296][2358:2360] CHIP:DMG: DataVersion = 0xff333f87, - [1689664994.730329][2358:2360] CHIP:DMG: AttributePathIB = - [1689664994.730364][2358:2360] CHIP:DMG: { - [1689664994.730399][2358:2360] CHIP:DMG: Endpoint = 0x1, - [1689664994.730437][2358:2360] CHIP:DMG: Cluster = 0x5, - [1689664994.730473][2358:2360] CHIP:DMG: Attribute = 0x0000_0005, - [1689664994.730508][2358:2360] CHIP:DMG: } - [1689664994.730544][2358:2360] CHIP:DMG: - [1689664994.730580][2358:2360] CHIP:DMG: Data = NULL - [1689664994.730610][2358:2360] CHIP:DMG: }, - [1689664994.730646][2358:2360] CHIP:DMG: - [1689664994.730674][2358:2360] CHIP:DMG: }, - [1689664994.730707][2358:2360] CHIP:DMG: - [1689664994.730732][2358:2360] CHIP:DMG: ], - [1689664994.730765][2358:2360] CHIP:DMG: - [1689664994.730791][2358:2360] CHIP:DMG: SuppressResponse = true, - [1689664994.730818][2358:2360] CHIP:DMG: InteractionModelRevision = 1 - [1689664994.730843][2358:2360] CHIP:DMG: } - disabled: true - - - label: - "Step 3: DUT writes a suitable value to all supported mandatory - attributes on the TH one at a time in a manufacturer specific order." - PICS: S.C.AM-WRITE - verification: | - This cluster doesn't have any writable attributes - disabled: true - - - label: - "Step 4: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order." - PICS: S.C.AO-WRITE - verification: | - This cluster doesn't have any writable attributes - disabled: true - - - label: - "Step 5: 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 scenes read attribute-list 1 1 - - [1689666789.967807][4742:4744] CHIP:DMG: ReportDataMessage = - [1689666789.967886][4742:4744] CHIP:DMG: { - [1689666789.967916][4742:4744] CHIP:DMG: AttributeReportIBs = - [1689666789.967966][4742:4744] CHIP:DMG: [ - [1689666789.967997][4742:4744] CHIP:DMG: AttributeReportIB = - [1689666789.968046][4742:4744] CHIP:DMG: { - [1689666789.968079][4742:4744] CHIP:DMG: AttributeDataIB = - [1689666789.968117][4742:4744] CHIP:DMG: { - [1689666789.968158][4742:4744] CHIP:DMG: DataVersion = 0xf12a63c8, - [1689666789.968197][4742:4744] CHIP:DMG: AttributePathIB = - [1689666789.968238][4742:4744] CHIP:DMG: { - [1689666789.968279][4742:4744] CHIP:DMG: Endpoint = 0x1, - [1689666789.968322][4742:4744] CHIP:DMG: Cluster = 0x5, - [1689666789.968366][4742:4744] CHIP:DMG: Attribute = 0x0000_FFFB, - [1689666789.968407][4742:4744] CHIP:DMG: } - [1689666789.968449][4742:4744] CHIP:DMG: - [1689666789.968488][4742:4744] CHIP:DMG: Data = [ - [1689666789.968579][4742:4744] CHIP:DMG: 0, 1, 2, 3, 4, 5, 6, 7, 65528, 65529, 65530, 65531, 65532, 65533, - [1689666789.968630][4742:4744] CHIP:DMG: ], - [1689666789.968668][4742:4744] CHIP:DMG: }, - [1689666789.968716][4742:4744] CHIP:DMG: - [1689666789.968749][4742:4744] CHIP:DMG: }, - [1689666789.968795][4742:4744] CHIP:DMG: - [1689666789.968825][4742:4744] CHIP:DMG: ], - [1689666789.968871][4742:4744] CHIP:DMG: - [1689666789.968902][4742:4744] CHIP:DMG: SuppressResponse = true, - [1689666789.968934][4742:4744] CHIP:DMG: InteractionModelRevision = 1 - [1689666789.968963][4742:4744] CHIP:DMG: } - - - ./chip-tool scenes read feature-map 1 1 - - [1689666905.399488][4746:4748] CHIP:DMG: ReportDataMessage = - [1689666905.399526][4746:4748] CHIP:DMG: { - [1689666905.399556][4746:4748] CHIP:DMG: AttributeReportIBs = - [1689666905.399600][4746:4748] CHIP:DMG: [ - [1689666905.399632][4746:4748] CHIP:DMG: AttributeReportIB = - [1689666905.399680][4746:4748] CHIP:DMG: { - [1689666905.399715][4746:4748] CHIP:DMG: AttributeDataIB = - [1689666905.399761][4746:4748] CHIP:DMG: { - [1689666905.399799][4746:4748] CHIP:DMG: DataVersion = 0xf12a63c8, - [1689666905.399868][4746:4748] CHIP:DMG: AttributePathIB = - [1689666905.399908][4746:4748] CHIP:DMG: { - [1689666905.399951][4746:4748] CHIP:DMG: Endpoint = 0x1, - [1689666905.399994][4746:4748] CHIP:DMG: Cluster = 0x5, - [1689666905.400038][4746:4748] CHIP:DMG: Attribute = 0x0000_FFFC, - [1689666905.400079][4746:4748] CHIP:DMG: } - [1689666905.400121][4746:4748] CHIP:DMG: - [1689666905.400163][4746:4748] CHIP:DMG: Data = 1, - [1689666905.400200][4746:4748] CHIP:DMG: }, - [1689666905.400281][4746:4748] CHIP:DMG: - [1689666905.400316][4746:4748] CHIP:DMG: }, - [1689666905.400355][4746:4748] CHIP:DMG: - [1689666905.400385][4746:4748] CHIP:DMG: ], - [1689666905.400424][4746:4748] CHIP:DMG: - [1689666905.400455][4746:4748] CHIP:DMG: SuppressResponse = true, - [1689666905.400487][4746:4748] CHIP:DMG: InteractionModelRevision = 1 - [1689666905.400517][4746:4748] CHIP:DMG: } - - - ./chip-tool scenes read scene-count 1 1 - - [1689664978.443091][2339:2341] CHIP:DMG: ReportDataMessage = - [1689664978.443128][2339:2341] CHIP:DMG: { - [1689664978.443156][2339:2341] CHIP:DMG: AttributeReportIBs = - [1689664978.443196][2339:2341] CHIP:DMG: [ - [1689664978.443226][2339:2341] CHIP:DMG: AttributeReportIB = - [1689664978.443268][2339:2341] CHIP:DMG: { - [1689664978.443300][2339:2341] CHIP:DMG: AttributeDataIB = - [1689664978.443341][2339:2341] CHIP:DMG: { - [1689664978.443381][2339:2341] CHIP:DMG: DataVersion = 0xff333f87, - [1689664978.443420][2339:2341] CHIP:DMG: AttributePathIB = - [1689664978.443462][2339:2341] CHIP:DMG: { - [1689664978.443503][2339:2341] CHIP:DMG: Endpoint = 0x1, - [1689664978.443546][2339:2341] CHIP:DMG: Cluster = 0x5, - [1689664978.443589][2339:2341] CHIP:DMG: Attribute = 0x0000_0000, - [1689664978.443630][2339:2341] CHIP:DMG: } - [1689664978.443672][2339:2341] CHIP:DMG: - [1689664978.443714][2339:2341] CHIP:DMG: Data = 0, - [1689664978.443752][2339:2341] CHIP:DMG: }, - [1689664978.443793][2339:2341] CHIP:DMG: - [1689664978.443857][2339:2341] CHIP:DMG: }, - [1689664978.443900][2339:2341] CHIP:DMG: - [1689664978.443929][2339:2341] CHIP:DMG: ], - [1689664978.443968][2339:2341] CHIP:DMG: - [1689664978.443999][2339:2341] CHIP:DMG: SuppressResponse = true, - [1689664978.444030][2339:2341] CHIP:DMG: InteractionModelRevision = 1 - [1689664978.444059][2339:2341] CHIP:DMG: } - - ./chip-tool scenes read current-scene 1 1 - - [1689664981.268319][2343:2346] CHIP:DMG: ReportDataMessage = - [1689664981.268356][2343:2346] CHIP:DMG: { - [1689664981.268420][2343:2346] CHIP:DMG: AttributeReportIBs = - [1689664981.268462][2343:2346] CHIP:DMG: [ - [1689664981.268492][2343:2346] CHIP:DMG: AttributeReportIB = - [1689664981.268530][2343:2346] CHIP:DMG: { - [1689664981.268561][2343:2346] CHIP:DMG: AttributeDataIB = - [1689664981.268595][2343:2346] CHIP:DMG: { - [1689664981.268631][2343:2346] CHIP:DMG: DataVersion = 0xff333f87, - [1689664981.268666][2343:2346] CHIP:DMG: AttributePathIB = - [1689664981.268703][2343:2346] CHIP:DMG: { - [1689664981.268740][2343:2346] CHIP:DMG: Endpoint = 0x1, - [1689664981.268779][2343:2346] CHIP:DMG: Cluster = 0x5, - [1689664981.268817][2343:2346] CHIP:DMG: Attribute = 0x0000_0001, - [1689664981.268854][2343:2346] CHIP:DMG: } - [1689664981.268893][2343:2346] CHIP:DMG: - [1689664981.268932][2343:2346] CHIP:DMG: Data = 0, - [1689664981.268966][2343:2346] CHIP:DMG: }, - [1689664981.269003][2343:2346] CHIP:DMG: - [1689664981.269033][2343:2346] CHIP:DMG: }, - [1689664981.269068][2343:2346] CHIP:DMG: - [1689664981.269095][2343:2346] CHIP:DMG: ], - [1689664981.269131][2343:2346] CHIP:DMG: - [1689664981.269160][2343:2346] CHIP:DMG: SuppressResponse = true, - [1689664981.269189][2343:2346] CHIP:DMG: InteractionModelRevision = 1 - [1689664981.269216][2343:2346] CHIP:DMG: } - - - ./chip-tool scenes read current-group 1 1 - - [1689664983.848116][2348:2351] CHIP:DMG: ReportDataMessage = - [1689664983.848153][2348:2351] CHIP:DMG: { - [1689664983.848182][2348:2351] CHIP:DMG: AttributeReportIBs = - [1689664983.848226][2348:2351] CHIP:DMG: [ - [1689664983.848257][2348:2351] CHIP:DMG: AttributeReportIB = - [1689664983.848296][2348:2351] CHIP:DMG: { - [1689664983.848326][2348:2351] CHIP:DMG: AttributeDataIB = - [1689664983.848364][2348:2351] CHIP:DMG: { - [1689664983.848400][2348:2351] CHIP:DMG: DataVersion = 0xff333f87, - [1689664983.848437][2348:2351] CHIP:DMG: AttributePathIB = - [1689664983.848475][2348:2351] CHIP:DMG: { - [1689664983.848513][2348:2351] CHIP:DMG: Endpoint = 0x1, - [1689664983.848553][2348:2351] CHIP:DMG: Cluster = 0x5, - [1689664983.848593][2348:2351] CHIP:DMG: Attribute = 0x0000_0002, - [1689664983.848631][2348:2351] CHIP:DMG: } - [1689664983.848671][2348:2351] CHIP:DMG: - [1689664983.848710][2348:2351] CHIP:DMG: Data = 0, - [1689664983.848745][2348:2351] CHIP:DMG: }, - [1689664983.848783][2348:2351] CHIP:DMG: - [1689664983.848813][2348:2351] CHIP:DMG: }, - [1689664983.848850][2348:2351] CHIP:DMG: - [1689664983.848877][2348:2351] CHIP:DMG: ], - [1689664983.848913][2348:2351] CHIP:DMG: - [1689664983.848941][2348:2351] CHIP:DMG: SuppressResponse = true, - [1689664983.848970][2348:2351] CHIP:DMG: InteractionModelRevision = 1 - [1689664983.848997][2348:2351] CHIP:DMG: } - - - ./chip-tool scenes read scene-valid 1 1 - - [1689664986.197422][2352:2354] CHIP:DMG: ReportDataMessage = - [1689664986.197461][2352:2354] CHIP:DMG: { - [1689664986.197492][2352:2354] CHIP:DMG: AttributeReportIBs = - [1689664986.197534][2352:2354] CHIP:DMG: [ - [1689664986.197565][2352:2354] CHIP:DMG: AttributeReportIB = - [1689664986.197610][2352:2354] CHIP:DMG: { - [1689664986.197643][2352:2354] CHIP:DMG: AttributeDataIB = - [1689664986.197682][2352:2354] CHIP:DMG: { - [1689664986.197722][2352:2354] CHIP:DMG: DataVersion = 0xff333f87, - [1689664986.197762][2352:2354] CHIP:DMG: AttributePathIB = - [1689664986.197803][2352:2354] CHIP:DMG: { - [1689664986.197845][2352:2354] CHIP:DMG: Endpoint = 0x1, - [1689664986.197889][2352:2354] CHIP:DMG: Cluster = 0x5, - [1689664986.197935][2352:2354] CHIP:DMG: Attribute = 0x0000_0003, - [1689664986.197978][2352:2354] CHIP:DMG: } - [1689664986.198021][2352:2354] CHIP:DMG: - [1689664986.198064][2352:2354] CHIP:DMG: Data = false, - [1689664986.198102][2352:2354] CHIP:DMG: }, - [1689664986.198144][2352:2354] CHIP:DMG: - [1689664986.198177][2352:2354] CHIP:DMG: }, - [1689664986.198217][2352:2354] CHIP:DMG: - [1689664986.198247][2352:2354] CHIP:DMG: ], - [1689664986.198285][2352:2354] CHIP:DMG: - [1689664986.198315][2352:2354] CHIP:DMG: SuppressResponse = true, - [1689664986.198347][2352:2354] CHIP:DMG: InteractionModelRevision = 1 - [1689664986.198376][2352:2354] CHIP:DMG: } - - ./chip-tool scenes read name-support 1 1 - - [1689664990.166849][2355:2357] CHIP:DMG: ReportDataMessage = - [1689664990.166908][2355:2357] CHIP:DMG: { - [1689664990.166933][2355:2357] CHIP:DMG: AttributeReportIBs = - [1689664990.166966][2355:2357] CHIP:DMG: [ - [1689664990.166992][2355:2357] CHIP:DMG: AttributeReportIB = - [1689664990.167030][2355:2357] CHIP:DMG: { - [1689664990.167058][2355:2357] CHIP:DMG: AttributeDataIB = - [1689664990.167090][2355:2357] CHIP:DMG: { - [1689664990.167125][2355:2357] CHIP:DMG: DataVersion = 0xff333f87, - [1689664990.167157][2355:2357] CHIP:DMG: AttributePathIB = - [1689664990.167193][2355:2357] CHIP:DMG: { - [1689664990.167228][2355:2357] CHIP:DMG: Endpoint = 0x1, - [1689664990.167265][2355:2357] CHIP:DMG: Cluster = 0x5, - [1689664990.167302][2355:2357] CHIP:DMG: Attribute = 0x0000_0004, - [1689664990.167338][2355:2357] CHIP:DMG: } - [1689664990.167374][2355:2357] CHIP:DMG: - [1689664990.167410][2355:2357] CHIP:DMG: Data = 128, - [1689664990.167442][2355:2357] CHIP:DMG: }, - [1689664990.167477][2355:2357] CHIP:DMG: - [1689664990.167505][2355:2357] CHIP:DMG: }, - [1689664990.167538][2355:2357] CHIP:DMG: - [1689664990.167564][2355:2357] CHIP:DMG: ], - [1689664990.167596][2355:2357] CHIP:DMG: - [1689664990.167623][2355:2357] CHIP:DMG: SuppressResponse = true, - [1689664990.167650][2355:2357] CHIP:DMG: InteractionModelRevision = 1 - [1689664990.167674][2355:2357] CHIP:DMG: } - - ./chip-tool scenes read scene-table-size 1 1 - - [1689664998.402942][2361:2363] CHIP:DMG: ReportDataMessage = - [1689664998.402980][2361:2363] CHIP:DMG: { - [1689664998.403009][2361:2363] CHIP:DMG: AttributeReportIBs = - [1689664998.403051][2361:2363] CHIP:DMG: [ - [1689664998.403085][2361:2363] CHIP:DMG: AttributeReportIB = - [1689664998.403173][2361:2363] CHIP:DMG: { - [1689664998.403212][2361:2363] CHIP:DMG: AttributeDataIB = - [1689664998.403256][2361:2363] CHIP:DMG: { - [1689664998.403300][2361:2363] CHIP:DMG: DataVersion = 0xff333f87, - [1689664998.403341][2361:2363] CHIP:DMG: AttributePathIB = - [1689664998.403386][2361:2363] CHIP:DMG: { - [1689664998.403431][2361:2363] CHIP:DMG: Endpoint = 0x1, - [1689664998.403487][2361:2363] CHIP:DMG: Cluster = 0x5, - [1689664998.403534][2361:2363] CHIP:DMG: Attribute = 0x0000_0006, - [1689664998.403578][2361:2363] CHIP:DMG: } - [1689664998.403623][2361:2363] CHIP:DMG: - [1689664998.403669][2361:2363] CHIP:DMG: Data = 0, - [1689664998.403710][2361:2363] CHIP:DMG: }, - [1689664998.403756][2361:2363] CHIP:DMG: - [1689664998.403793][2361:2363] CHIP:DMG: }, - [1689664998.403868][2361:2363] CHIP:DMG: - [1689664998.403903][2361:2363] CHIP:DMG: ], - [1689664998.403947][2361:2363] CHIP:DMG: - [1689664998.403981][2361:2363] CHIP:DMG: SuppressResponse = true, - [1689664998.404016][2361:2363] CHIP:DMG: InteractionModelRevision = 1 - [1689664998.404048][2361:2363] CHIP:DMG: } - - ./chip-tool scenes read remaining-capacity 1 1 - - [1689665008.860825][2364:2366] CHIP:DMG: ReportDataMessage = - [1689665008.860866][2364:2366] CHIP:DMG: { - [1689665008.860922][2364:2366] CHIP:DMG: AttributeReportIBs = - [1689665008.860964][2364:2366] CHIP:DMG: [ - [1689665008.860995][2364:2366] CHIP:DMG: AttributeReportIB = - [1689665008.861039][2364:2366] CHIP:DMG: { - [1689665008.861072][2364:2366] CHIP:DMG: AttributeDataIB = - [1689665008.861108][2364:2366] CHIP:DMG: { - [1689665008.861147][2364:2366] CHIP:DMG: DataVersion = 0xff333f87, - [1689665008.861187][2364:2366] CHIP:DMG: AttributePathIB = - [1689665008.861228][2364:2366] CHIP:DMG: { - [1689665008.861269][2364:2366] CHIP:DMG: Endpoint = 0x1, - [1689665008.861312][2364:2366] CHIP:DMG: Cluster = 0x5, - [1689665008.861355][2364:2366] CHIP:DMG: Attribute = 0x0000_0007, - [1689665008.861396][2364:2366] CHIP:DMG: } - [1689665008.861438][2364:2366] CHIP:DMG: - [1689665008.861481][2364:2366] CHIP:DMG: Data = 0, - [1689665008.861518][2364:2366] CHIP:DMG: }, - [1689665008.861559][2364:2366] CHIP:DMG: - [1689665008.861592][2364:2366] CHIP:DMG: }, - [1689665008.861631][2364:2366] CHIP:DMG: - [1689665008.861660][2364:2366] CHIP:DMG: ], - [1689665008.861698][2364:2366] CHIP:DMG: - [1689665008.861729][2364:2366] CHIP:DMG: SuppressResponse = true, - [1689665008.861760][2364:2366] CHIP:DMG: InteractionModelRevision = 1 - [1689665008.861789][2364:2366] CHIP:DMG: } - disabled: true - - - label: - "Step 6: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order." - PICS: S.C.AO-READ - verification: | - ./chip-tool scenes read last-configured-by 1 1 - - [1689666947.328580][4750:4752] CHIP:DMG: ReportDataMessage = - [1689666947.328619][4750:4752] CHIP:DMG: { - [1689666947.328650][4750:4752] CHIP:DMG: AttributeReportIBs = - [1689666947.328692][4750:4752] CHIP:DMG: [ - [1689666947.328723][4750:4752] CHIP:DMG: AttributeReportIB = - [1689666947.328771][4750:4752] CHIP:DMG: { - [1689666947.328806][4750:4752] CHIP:DMG: AttributeDataIB = - [1689666947.328851][4750:4752] CHIP:DMG: { - [1689666947.328892][4750:4752] CHIP:DMG: DataVersion = 0xf12a63c8, - [1689666947.328932][4750:4752] CHIP:DMG: AttributePathIB = - [1689666947.328974][4750:4752] CHIP:DMG: { - [1689666947.329015][4750:4752] CHIP:DMG: Endpoint = 0x1, - [1689666947.329060][4750:4752] CHIP:DMG: Cluster = 0x5, - [1689666947.329105][4750:4752] CHIP:DMG: Attribute = 0x0000_0005, - [1689666947.329146][4750:4752] CHIP:DMG: } - [1689666947.329189][4750:4752] CHIP:DMG: - [1689666947.329231][4750:4752] CHIP:DMG: Data = NULL - [1689666947.329270][4750:4752] CHIP:DMG: }, - [1689666947.329312][4750:4752] CHIP:DMG: - [1689666947.329346][4750:4752] CHIP:DMG: }, - [1689666947.329386][4750:4752] CHIP:DMG: - [1689666947.329416][4750:4752] CHIP:DMG: ], - [1689666947.329455][4750:4752] CHIP:DMG: - [1689666947.329486][4750:4752] CHIP:DMG: SuppressResponse = true, - [1689666947.329518][4750:4752] CHIP:DMG: InteractionModelRevision = 1 - [1689666947.329547][4750:4752] CHIP:DMG: } - disabled: true - - - label: - "Step 7: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order." - PICS: S.C.AO-WRITE - verification: | - This cluster doesn't have any writable attributes - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_1_1.yaml index c6b39dba4f8fa3..b9977898b1d5ec 100644 --- a/src/app/tests/suites/certification/Test_TC_TCCM_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCCM_1_1.yaml @@ -30,65 +30,75 @@ tests: - label: "Step 2: TH reads from the DUT the ClusterRevision attribute." verification: | - Verify that the DUT response contains the ClusterRevision attribute and has the value 1. + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read cluster-revision 1 1 + + Verify the "ClusterRevision" value is of unit16 and reflects the highest revision number 1 on the TH(Chip-tool) and below is the sample log provided for the raspi platform: + + [1690189572.337445][16132:16134] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_FFFD DataVersion: 473867547 + [1690189572.337466][16132:16134] CHIP:TOO: ClusterRevision: 1 disabled: true - label: "Step 3: TH reads from the DUT the FeatureMap attribute." verification: | - Verify that the DUT response contains the FeatureMap attribute and have the following bit set: + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read feature-map 1 1 - bit 0: SHALL be 1 if and only if TCCM.S.F00(DEPONOFF) + On the TH(Chip-tool) Log, Verify featureMap value is 1 If TCCM.S.F00(DEPONOFF) true, Otherwise 0, and below is the sample log provided for the raspi platform: + + [1690189585.723124][16135:16137] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_FFFC DataVersion: 473867547 + [1690189585.723143][16135:16137] CHIP:TOO: FeatureMap: 1 disabled: true - label: "Step 4: TH reads from the DUT the AttributeList attribute." verification: | - Verify that the DUT response contains the AttributeList attribute and have the list of supported attributes: - - The list SHALL include all the mandatory entries: - 0x0000, 0x0001, 0xfff8, 0xfff9, 0xfffa, 0xfffb, 0xfffc & 0xfffd. - - The list MAY include these optional entries: - - 0x0002: SHALL be included if and only if TCCM.S.A0002(StartUpMode) - - The list include entries based on feature support: - - - 0x0003 SHALL be included if and only if TCCM.S.F00(DEPONOFF) - - - and SHALL NOT be included otherwise. - - The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - 0x0000_4FFF) and (0x0000_F000 - 0x0000_FFFE) - + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read attribute-list 1 1 + + Verify the "AttributeList " should include the mandatory attributes (values 0, 1), + - global attributes (value 65533, 65532, 65531, 65530, 65529 and 65528) and + - list may include optional attribute(value 0x0002), if MOD.S.A0004(StartUpMode) supports, + - list contains feature dependent attribute (values 0x0003), if MOD.S.F00(DEPONOFF) is true on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + [1690189598.832157][16140:16142] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_FFFB DataVersion: 473867547 + [1690189598.832176][16140:16142] CHIP:TOO: AttributeList: 10 entries + [1690189598.832181][16140:16142] CHIP:TOO: [1]: 0 + [1690189598.832184][16140:16142] CHIP:TOO: [2]: 1 + [1690189598.832187][16140:16142] CHIP:TOO: [3]: 2 + [1690189598.832190][16140:16142] CHIP:TOO: [4]: 3 + [1690189598.832193][16140:16142] CHIP:TOO: [5]: 65528 + [1690189598.832196][16140:16142] CHIP:TOO: [6]: 65529 + [1690189598.832199][16140:16142] CHIP:TOO: [7]: 65530 + [1690189598.832202][16140:16142] CHIP:TOO: [8]: 65531 + [1690189598.832206][16140:16142] CHIP:TOO: [9]: 65532 + [1690189598.832210][16140:16142] CHIP:TOO: [10]: 65533 + disabled: true - The list MAY contain values in the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_4FFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. + - label: "Step 5: TH reads from the DUT the EventList attribute." + verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read event-list 1 1 + Verify "EventList" contains a list of supported events, for this cluster the list is emty(0 entries) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - The list SHALL NOT contain any values in the Test Vendor or invalid range: (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1) + [1690189614.840538][16147:16149] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_FFFA DataVersion: 473867547 + [1690189614.840589][16147:16149] CHIP:TOO: EventList: 0 entries disabled: true - - label: "Step 5: TH reads from the DUT the AcceptedCommandList attribute." + - label: "Step 6: TH reads from the DUT the AcceptedCommandList attribute." verification: | - Verify that the DUT response contains the AcceptedCommandList attribute and have the list of Accepted Command: - The list SHALL include all the mandatory entries: + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read accepted-command-list 1 1 - 0x00 - The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - 0x0000_00FF) + Verify the "AcceptedCommandList" contains a list of mandatory commands (value 0) on the TH (Chip-tool) and below is the sample log provided for the raspi platform: - The list MAY contain values in the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. - - The list SHALL NOT contain any values in the Test Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1) + [1690189624.827078][16152:16154] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_FFF9 DataVersion: 473867547 + [1690189624.827136][16152:16154] CHIP:TOO: AcceptedCommandList: 1 entries + [1690189624.827158][16152:16154] CHIP:TOO: [1]: 0 disabled: true - - label: "Step 6: TH reads from the DUT the GeneratedCommandList attribute." + - label: "Step 7: TH reads from the DUT the GeneratedCommandList attribute." verification: | - Verify that the DUT response contains the GeneratedCommandList attribute and have the list of Generated Command: - The list SHALL include all the mandatory entries: - - 0x01 - The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - 0x0000_00FF) + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read generated-command-list 1 1 - The list MAY contain values in the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. + Verify " GeneratedCommandList" contains a list of mandatory commands (value 1) on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - The list SHALL NOT contain any values in the Test Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1) + [1690189651.608897][16155:16157] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_FFF8 DataVersion: 473867547 + [1690189651.608955][16155:16157] CHIP:TOO: GeneratedCommandList: 1 entries + [1690189651.608973][16155:16157] CHIP:TOO: [1]: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_1_2.yaml index 7dec81834b44c9..41a95cff88e004 100644 --- a/src/app/tests/suites/certification/Test_TC_TCCM_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCCM_1_2.yaml @@ -34,42 +34,73 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: TCCM.S.A0000 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has at least one entry - - Verify that each ModeOptionsStruct entry has a unique Mode field value - - Verify that each ModeOptionsStruct entry has a unique Label field value - - Verify that each ModeOptionsStruct entry’s ModeTags field, if not empty, has: - the values of the Value fields that are not larger than 16 bits - - for each Value field: Is the semantic tag value a defined common tag value (Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster alias tag value (RapidCool, RapidFreeze) or in the MfgTags (0x8000 to 0xBFFF) range - - if the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 - - - - Verify that at least one ModeOptionsStruct entry includes either the RapidCool semantic tag or the RapidFreeze semantic tag in the SemanticTags field - - Save the Mode field values as supported_modes_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries. + - Verify that list should contain at least one entry + - Verify that each ModeOptionsStruct entry has a unique Mode field value and Label field value + - ModeOptionsStruct entry’s ModeTags field is not empty, then Verify the values of the Value fields that are not larger than 16 bits, for each Value field: Is the semantic tag value a defined common tag value (Auto(0x0000), Quick(0x0001), Quiet(0x0002), LowNoise(0x0003), LowEnergy(0x0004), Vacation(0x0005), Min(0x0006), Max(0x0007), Night(0x0008), Day(0x0009)) or a defined cluster alias tag value (RapidCool, RapidFreeze) or in the MfgTags (0x8000 to 0xBFFF) range + - If the Value field is in the MfgTags (0x8000 to 0xBFFF) range, the TagName field is a string with a length between 1 and 64 + - Verify that at least one ModeOptionsStruct entry includes either the RapidCool semantic tag or the RapidFreeze semantic tag in the SemanticTags field + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690189665.585798][16159:16161] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 473867547 + [1690189665.585885][16159:16161] CHIP:TOO: SupportedModes: 3 entries + [1690189665.585924][16159:16161] CHIP:TOO: [1]: { + [1690189665.585936][16159:16161] CHIP:TOO: Label: Normal + [1690189665.585955][16159:16161] CHIP:TOO: Mode: 0 + [1690189665.585970][16159:16161] CHIP:TOO: ModeTags: 1 entries + [1690189665.585997][16159:16161] CHIP:TOO: [1]: { + [1690189665.586008][16159:16161] CHIP:TOO: Value: 0 + [1690189665.586018][16159:16161] CHIP:TOO: } + [1690189665.586028][16159:16161] CHIP:TOO: } + [1690189665.586050][16159:16161] CHIP:TOO: [2]: { + [1690189665.586060][16159:16161] CHIP:TOO: Label: Rapid Cool + [1690189665.586068][16159:16161] CHIP:TOO: Mode: 1 + [1690189665.586081][16159:16161] CHIP:TOO: ModeTags: 1 entries + [1690189665.586094][16159:16161] CHIP:TOO: [1]: { + [1690189665.586105][16159:16161] CHIP:TOO: Value: 16384 + [1690189665.586114][16159:16161] CHIP:TOO: } + [1690189665.586124][16159:16161] CHIP:TOO: } + [1690189665.586143][16159:16161] CHIP:TOO: [3]: { + [1690189665.586152][16159:16161] CHIP:TOO: Label: Rapid Freeze + [1690189665.586162][16159:16161] CHIP:TOO: Mode: 2 + [1690189665.586175][16159:16161] CHIP:TOO: ModeTags: 1 entries + [1690189665.586189][16159:16161] CHIP:TOO: [1]: { + [1690189665.586198][16159:16161] CHIP:TOO: Value: 16385 + [1690189665.586207][16159:16161] CHIP:TOO: } + [1690189665.586217][16159:16161] CHIP:TOO: } disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer from supported_modes_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer and the value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + + [1690189682.782276][16162:16164] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 473867547 + [1690189682.782314][16162:16164] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the OnMode attribute." PICS: TCCM.S.A0003 verification: | - Verify that the DUT response contains an integer from supported_modes_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read on-mode 1 1 + + Verify on TH(chip-tool) logs, OnMode attribute value is an integer and the value is from supported_modes_dut (As per spec default value is null) , below is the sample log provided for the raspi platform, Here OnMode attribute value is Null + + [1690189699.711642][16169:16171] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0003 DataVersion: 473867547 + [1690189699.711687][16169:16171] CHIP:TOO: OnMode: null disabled: true - label: "Step 5: TH reads from the DUT the StartUpMode attribute." PICS: TCCM.S.A0002 verification: | - Verify that the DUT response contains an integer from supported_modes_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read start-up-mode 1 1 + + Verify on TH(chip-tool) logs, StartUpMode attribute value is an integer(As per spec default value is null) and value is from supported_modes_dut, below is the sample log provided for the raspi platform, Here StartUpMode attribute value is Null + + [1690189713.973520][16173:16175] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0002 DataVersion: 473867547 + [1690189713.973576][16173:16175] CHIP:TOO: StartUpMode: null disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_2_1.yaml index 1978da84910f03..90b3751ebb632f 100644 --- a/src/app/tests/suites/certification/Test_TC_TCCM_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCCM_2_1.yaml @@ -34,107 +34,183 @@ tests: - label: "Step 2: TH reads from the DUT the SupportedModes attribute." PICS: TCCM.S.A0000 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + Verify that the DUT response contains list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut on the TH (Chip-tool) and below is the sample log provided for the raspi platform: + + [1690189665.585798][16159:16161] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 473867547 + [1690189665.585885][16159:16161] CHIP:TOO: SupportedModes: 3 entries + [1690189665.585924][16159:16161] CHIP:TOO: [1]: { + [1690189665.585936][16159:16161] CHIP:TOO: Label: Normal + [1690189665.585955][16159:16161] CHIP:TOO: Mode: 0 + [1690189665.585970][16159:16161] CHIP:TOO: ModeTags: 1 entries + [1690189665.585997][16159:16161] CHIP:TOO: [1]: { + [1690189665.586008][16159:16161] CHIP:TOO: Value: 0 + [1690189665.586018][16159:16161] CHIP:TOO: } + [1690189665.586028][16159:16161] CHIP:TOO: } + [1690189665.586050][16159:16161] CHIP:TOO: [2]: { + [1690189665.586060][16159:16161] CHIP:TOO: Label: Rapid Cool + [1690189665.586068][16159:16161] CHIP:TOO: Mode: 1 + [1690189665.586081][16159:16161] CHIP:TOO: ModeTags: 1 entries + [1690189665.586094][16159:16161] CHIP:TOO: [1]: { + [1690189665.586105][16159:16161] CHIP:TOO: Value: 16384 + [1690189665.586114][16159:16161] CHIP:TOO: } + [1690189665.586124][16159:16161] CHIP:TOO: } + [1690189665.586143][16159:16161] CHIP:TOO: [3]: { + [1690189665.586152][16159:16161] CHIP:TOO: Label: Rapid Freeze + [1690189665.586162][16159:16161] CHIP:TOO: Mode: 2 + [1690189665.586175][16159:16161] CHIP:TOO: ModeTags: 1 entries + [1690189665.586189][16159:16161] CHIP:TOO: [1]: { + [1690189665.586198][16159:16161] CHIP:TOO: Value: 16385 + [1690189665.586207][16159:16161] CHIP:TOO: } + [1690189665.586217][16159:16161] CHIP:TOO: } disabled: true - - label: "Step 2: TH reads from the DUT the CurrentMode attribute." + - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 - Save the value as old_current_mode_dut + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut + - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - Select a value which is NOT in supported_modes_dut and save it as invalid_mode_th + [1690189753.281932][16180:16182] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 473867547 + [1690189753.281979][16180:16182] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 3: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 4: TH sends a ChangeToMode command to the DUT with NewMode set to old_current_mode_dut" PICS: TCCM.S.C00.Rsp verification: | - Verify that the DUT response contains a ChangeToModeResponse command w/ data fields: * Status, set to Success(0x00). + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode change-to-mode 0 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1689991627.698450][142731:142733] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Command 0x0000_0001 + [1689991627.698488][142731:142733] CHIP:TOO: ChangeToModeResponse: { + [1689991627.698499][142731:142733] CHIP:TOO: status: 0 + [1689991627.698507][142731:142733] CHIP:TOO: } disabled: true - label: - "Step 4: Manually put the device in a state from which it will FAIL to + "Step 5: Manually put the device in a state from which it will FAIL to transition to PIXIT.TCCM.MODE_CHANGE_FAIL" + PICS: PIXIT.TCCM.CAN_TEST_MODE_FAILURE verification: | - + Manual operation required disabled: true - - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + - label: "Step 6: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 - Save the value as old_current_mode_dut + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 + + [1689991744.646114][142740:142742] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 2299631070 + [1689991744.646165][142740:142742] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 6: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.TCCM.MODE_CHANGE_FAIL" - PICS: TCCM.S.C00.Rsp + PICS: PIXIT.TCCM.CAN_TEST_MODE_FAILURE && TCCM.S.C00.Rsp verification: | - Verify that the DUT responds with a ChangeToModeResponse command. + Note : Please skip this step as SDK is not enabled with this failure response - Verify that the Status field is set to GenericFailure(0x02) or in the MfgCodes (0x80 to 0xBF) range + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode change-to-mode 2 1 1 - Verify that the StatusText field has a length between 1 and 64 + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a GenericFailure(0x02) status response and below is the sample log provided for the raspi platform: + + [1690208444.427313][19616:19618] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Command 0x0000_0001 + [1690208444.427473][19616:19618] CHIP:TOO: ChangeToModeResponse: { + [1690208444.427482][19616:19618] CHIP:TOO: status: 0 + [1690208444.427486][19616:19618] CHIP:TOO: } disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value equal to old_current_mode_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + Verify on TH(chip-tool), CurrentMode attribute value is an integer value and equal to old_current_mode_dut below is the sample log provided for the raspi platform,Here CurrentMode attribute value is 0 + + [1689991744.646114][142740:142742] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 2299631070 + [1689991744.646165][142740:142742] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 8: Manually put the device in a state from which it will + "Step 9: Manually put the device in a state from which it will SUCCESSFULLY transition to PIXIT.TCCM.MODE_CHANGE_OK" verification: | - + Manual operation required disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value, + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - Save the value as old_current_mode_dut + [1689991744.646114][142740:142742] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 2299631070 + [1689991744.646165][142740:142742] CHIP:TOO: CurrentMode: 0 disabled: true - label: - "Step 10: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 11: TH sends a ChangeToMode command to the DUT with NewMode set to PIXIT.TCCM.MODE_CHANGE_OK" PICS: TCCM.S.C00.Rsp verification: | - Verify that the DUT responds with a ChangeToModeResponse command. + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode change-to-mode 1 1 1 - Verify that the Status field is set to Success(0x00) + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690189985.803199][16357:16359] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Command 0x0000_0001 + [1690189985.803213][16357:16359] CHIP:TOO: ChangeToModeResponse: { + [1690189985.803220][16357:16359] CHIP:TOO: status: 0 + [1690189985.803224][16357:16359] CHIP:TOO: } disabled: true - - label: "Step 11: TH reads from the DUT the CurrentMode attribute." + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value equal to PIXIT.TCCM.MODE_CHANGE_OK + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 11, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 + + [1690190007.564500][16361:16363] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 473867552 + [1690190007.564538][16361:16363] CHIP:TOO: CurrentMode: 1 disabled: true - label: - "Step 12: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 13: TH sends a ChangeToMode command to the DUT with NewMode set to invalid_mode_th" PICS: TCCM.S.C00.Rsp verification: | - Verify that the DUT responds with a ChangeToModeResponse command. + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode change-to-mode 3 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a UnsupportedMode(0x01) status response and below is the sample log provided for the raspi platform: - Verify that the Status field is set to UnsupportedMode(0x01). + [1690190041.868458][16365:16367] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Command 0x0000_0001 + [1690190041.868514][16365:16367] CHIP:TOO: ChangeToModeResponse: { + [1690190041.868518][16365:16367] CHIP:TOO: status: 1 + [1690190041.868521][16365:16367] CHIP:TOO: } disabled: true - - label: "Step 13: TH reads from the DUT the CurrentMode attribute." + - label: "Step 14: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value equal to PIXIT.TCCM.MODE_CHANGE_OK + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + Verify on TH(chip-tool) logs, CurrentMode attribute value is an integer value and same as step 12, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 + + [1690190081.598522][16369:16371] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 473867552 + [1690190081.598595][16369:16371] CHIP:TOO: CurrentMode: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml index 030a1fd97419d5..0999a37d8a8fae 100644 --- a/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCCM_3_1.yaml @@ -21,6 +21,27 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + 1. Refrigerator and Temperature Controlled Cabinet and OnOff clusters are available on the same endpoint + + 2. The OnMode attribute is set to a non-NULL value from the mode values indicated by the SupportedModes attribute. + disabled: true + + - label: "Note" + verification: | + To execute this test case set onmode to any integer value because as default it value has null. + + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify DUT responds with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690190139.816096][16383:16385] CHIP:DMG: StatusIB = + [1690190139.816100][16383:16385] CHIP:DMG: { + [1690190139.816102][16383:16385] CHIP:DMG: status = 0x00 (SUCCESS), + [1690190139.816105][16383:16385] CHIP:DMG: }, + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -31,31 +52,66 @@ tests: - label: "Step 2: TH reads from the DUT the OnMode attribute." PICS: TCCM.S.A0003 && TCCM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read on-mode 1 1 + + On TH(chip-tool), Verify that OnMode attribute value is an integer or Null + Save the value as on_mode_dut and below is the sample log provided for the raspi platform, here OnMode value is 0 - Save the value as on_mode_dut + [1690190167.005388][16387:16389] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0003 DataVersion: 473867556 + [1690190167.005447][16387:16389] CHIP:TOO: OnMode: 0 disabled: true - label: "Step 3: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 && TCCM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute is an integer. + Save the value as old_current_mode_dut and below is the sample log provided for the raspi platform, Here CurrentMode value is 0 - Save the value as old_current_mode_dut + NOTE: If on_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. - If on_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + [1690190333.843046][16430:16432] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 2612443001 + [1690190333.843064][16430:16432] CHIP:TOO: CurrentMode: 0 disabled: true - label: "Step 4: TH reads from the DUT the SupportedModes attribute." PICS: TCCM.S.A0000 && TCCM.S.F00 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries - - Verify that the list has two or more entries - - Save the Mode field values as supported_modes_dut - - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th. + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from on_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690190348.956716][16435:16437] CHIP:DMG: } + [1690190348.956853][16435:16437] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 2612443001 + [1690190348.956895][16435:16437] CHIP:TOO: SupportedModes: 3 entries + [1690190348.956919][16435:16437] CHIP:TOO: [1]: { + [1690190348.956924][16435:16437] CHIP:TOO: Label: Normal + [1690190348.956929][16435:16437] CHIP:TOO: Mode: 0 + [1690190348.956935][16435:16437] CHIP:TOO: ModeTags: 1 entries + [1690190348.956952][16435:16437] CHIP:TOO: [1]: { + [1690190348.956955][16435:16437] CHIP:TOO: Value: 0 + [1690190348.956958][16435:16437] CHIP:TOO: } + [1690190348.956961][16435:16437] CHIP:TOO: } + [1690190348.956967][16435:16437] CHIP:TOO: [2]: { + [1690190348.956970][16435:16437] CHIP:TOO: Label: Rapid Cool + [1690190348.956972][16435:16437] CHIP:TOO: Mode: 1 + [1690190348.956976][16435:16437] CHIP:TOO: ModeTags: 1 entries + [1690190348.956980][16435:16437] CHIP:TOO: [1]: { + [1690190348.956982][16435:16437] CHIP:TOO: Value: 16384 + [1690190348.956984][16435:16437] CHIP:TOO: } + [1690190348.956987][16435:16437] CHIP:TOO: } + [1690190348.956992][16435:16437] CHIP:TOO: [3]: { + [1690190348.956994][16435:16437] CHIP:TOO: Label: Rapid Freeze + [1690190348.956997][16435:16437] CHIP:TOO: Mode: 2 + [1690190348.957000][16435:16437] CHIP:TOO: ModeTags: 1 entries + [1690190348.957003][16435:16437] CHIP:TOO: [1]: { + [1690190348.957006][16435:16437] CHIP:TOO: Value: 16385 + [1690190348.957008][16435:16437] CHIP:TOO: } + [1690190348.957010][16435:16437] CHIP:TOO: } disabled: true - label: @@ -63,25 +119,50 @@ tests: to new_mode_th" PICS: TCCM.S.C00.Rsp && TCCM.S.F00 verification: | - Verify that the DUT response contains a ChangeToModeResponse command w/ data fields: * Status, set to Success(0x00). + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690190379.801241][16449:16451] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Command 0x0000_0001 + [1690190379.801256][16449:16451] CHIP:TOO: ChangeToModeResponse: { + [1690190379.801260][16449:16451] CHIP:TOO: status: 0 + [1690190379.801263][16449:16451] CHIP:TOO: } disabled: true - label: "Step 6: TH sends a Off command to the DUT" PICS: OO.S.C00.Rsp && TCCM.S.F00 verification: | - Verify DUT responds w/ status SUCCESS(0x00) + ./chip-tool onoff off 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1684931101.118656][20709:20711] CHIP:DMG: StatusIB = + [1684931101.118659][20709:20711] CHIP:DMG: { + [1684931101.118663][20709:20711] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931101.118665][20709:20711] CHIP:DMG: }, disabled: true - label: "Step 7: TH sends a On command to the DUT" PICS: OO.S.C01.Rsp && TCCM.S.F00 verification: | - Verify DUT responds w/ status SUCCESS(0x00) + ./chip-tool onoff on 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1684931217.055514][20729:20731] CHIP:DMG: StatusIB = + [1684931217.055517][20729:20731] CHIP:DMG: { + [1684931217.055520][20729:20731] CHIP:DMG: status = 0x00 (SUCCESS), + [1684931217.055523][20729:20731] CHIP:DMG: }, disabled: true - label: "Step 8: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 && TCCM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to on_mode_dut, below is the sample log provided for the raspi platform, here CurrentMode attribute value is 0 + - The value is equal to on_mode_dut + [1690190401.931156][16461:16463] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 2612443003 + [1690190401.931176][16461:16463] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml index 7c2b43de5486f5..d7283b93401d3b 100644 --- a/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCCM_3_2.yaml @@ -24,6 +24,19 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To Execute the TC-TCCM-3.2 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -34,50 +47,164 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: TCCM.S.A0002 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read start-up-mode 1 1 + + On TH(chip-tool), Verify that StartUpMode attribute value is an integer or Null + - Save the value as startup_mode_dut, below is the sample log provided for the raspi platform: + - If startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. + - Here startup_mode_dut is null proceed to step 3. - Save the value as startup_mode_dut + [1690541247.515223][2594:2596] CHIP:DMG: } + [1690541247.521286][2594:2596] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0002 DataVersion: 667171525 + [1690541247.523875][2594:2596] CHIP:TOO: StartUpMode: null disabled: true - - label: "Step 3: TH reads from the DUT the CurrentMode attribute." - PICS: TCCM.S.A0001 + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: TCCM.S.A0000 + verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690190590.967854][16509:16511] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 899063585 + [1690190590.967878][16509:16511] CHIP:TOO: SupportedModes: 3 entries + [1690190590.967889][16509:16511] CHIP:TOO: [1]: { + [1690190590.967892][16509:16511] CHIP:TOO: Label: Normal + [1690190590.967895][16509:16511] CHIP:TOO: Mode: 0 + [1690190590.967899][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967904][16509:16511] CHIP:TOO: [1]: { + [1690190590.967907][16509:16511] CHIP:TOO: Value: 0 + [1690190590.967910][16509:16511] CHIP:TOO: } + [1690190590.967913][16509:16511] CHIP:TOO: } + [1690190590.967918][16509:16511] CHIP:TOO: [2]: { + [1690190590.967920][16509:16511] CHIP:TOO: Label: Rapid Cool + [1690190590.967923][16509:16511] CHIP:TOO: Mode: 1 + [1690190590.967926][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967929][16509:16511] CHIP:TOO: [1]: { + [1690190590.967932][16509:16511] CHIP:TOO: Value: 16384 + [1690190590.967934][16509:16511] CHIP:TOO: } + [1690190590.967937][16509:16511] CHIP:TOO: } + [1690190590.967942][16509:16511] CHIP:TOO: [3]: { + [1690190590.967944][16509:16511] CHIP:TOO: Label: Rapid Freeze + [1690190590.967946][16509:16511] CHIP:TOO: Mode: 2 + [1690190590.967950][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967953][16509:16511] CHIP:TOO: [1]: { + [1690190590.967956][16509:16511] CHIP:TOO: Value: 16385 + [1690190590.967958][16509:16511] CHIP:TOO: } + [1690190590.967961][16509:16511] CHIP:TOO: } + disabled: true + + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: TCCM.S.A0002 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode write start-up-mode 0 1 1 - Save the value as old_current_mode_dut + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - If startup_mode_dut is equal to old_current_mode_dut proceed to step 4. Else proceed to step 6. + [1690190139.816096][16383:16385] CHIP:DMG: StatusIB = + [1690190139.816100][16383:16385] CHIP:DMG: { + [1690190139.816102][16383:16385] CHIP:DMG: status = 0x00 (SUCCESS), + [1690190139.816105][16383:16385] CHIP:DMG: }, disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: TCCM.S.A0000 + - label: "Step 5: TH reads from the DUT the CurrentMode attribute." + PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 - Verify that the list has two or more entries + On TH(chip-tool), Verify that CurrentMode attribute value is an integer + - Save the value as old_current_mode_dut, below is the sample log provided for the raspi platform: - Save the Mode field values as supported_modes_dut + NOTE: If startup_mode_dut is equal to old_current_mode_dut proceed to step 6. Else proceed to step 8 - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th. + [1690190562.418843][16505:16507] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 899063585 + [1690190562.418907][16505:16507] CHIP:TOO: CurrentMode: 0 + disabled: true + + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." + PICS: TCCM.S.A0000 + verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690190590.967854][16509:16511] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 899063585 + [1690190590.967878][16509:16511] CHIP:TOO: SupportedModes: 3 entries + [1690190590.967889][16509:16511] CHIP:TOO: [1]: { + [1690190590.967892][16509:16511] CHIP:TOO: Label: Normal + [1690190590.967895][16509:16511] CHIP:TOO: Mode: 0 + [1690190590.967899][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967904][16509:16511] CHIP:TOO: [1]: { + [1690190590.967907][16509:16511] CHIP:TOO: Value: 0 + [1690190590.967910][16509:16511] CHIP:TOO: } + [1690190590.967913][16509:16511] CHIP:TOO: } + [1690190590.967918][16509:16511] CHIP:TOO: [2]: { + [1690190590.967920][16509:16511] CHIP:TOO: Label: Rapid Cool + [1690190590.967923][16509:16511] CHIP:TOO: Mode: 1 + [1690190590.967926][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967929][16509:16511] CHIP:TOO: [1]: { + [1690190590.967932][16509:16511] CHIP:TOO: Value: 16384 + [1690190590.967934][16509:16511] CHIP:TOO: } + [1690190590.967937][16509:16511] CHIP:TOO: } + [1690190590.967942][16509:16511] CHIP:TOO: [3]: { + [1690190590.967944][16509:16511] CHIP:TOO: Label: Rapid Freeze + [1690190590.967946][16509:16511] CHIP:TOO: Mode: 2 + [1690190590.967950][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967953][16509:16511] CHIP:TOO: [1]: { + [1690190590.967956][16509:16511] CHIP:TOO: Value: 16385 + [1690190590.967958][16509:16511] CHIP:TOO: } + [1690190590.967961][16509:16511] CHIP:TOO: } disabled: true - label: - "Step 5: TH sends a ChangeToMode command to the DUT with NewMode set + "Step 7: TH sends a ChangeToMode command to the DUT with NewMode set to new_mode_th" PICS: TCCM.S.C00.Rsp verification: | - Verify that the DUT response contains a ChangeToModeResponse command w/ data fields: * Status, set to Success(0x00). + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode change-to-mode 2 1 1 + + Verify on TH(chip-tool) log, DUT responds contains a ChangeToModeResponse command with a SUCCESS (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690190614.263418][16516:16518] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Command 0x0000_0001 + [1690190614.263432][16516:16518] CHIP:TOO: ChangeToModeResponse: { + [1690190614.263438][16516:16518] CHIP:TOO: status: 0 + [1690190614.263441][16516:16518] CHIP:TOO: } + disabled: true + + - label: "Step 8: Physically power cycle the device" + verification: | + Physically power cycle the device disabled: true - - label: "Step 6: Physically power cycle the device" + - label: "Step 9: TH reads from the DUT the StartUpMode attribute." + PICS: TCCM.S.A0002 verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read start-up-mode 1 1 + + On TH(chip-tool), Verify that StartUpMode attribute value is an integer + - Save the value as new_start_up_mode_dut + - The value is equal to new_start_up_mode_th and below is the sample log provided for the raspi platform, Here StartUpMode value is 0 + [1690541859.062480][2695:2697] CHIP:DMG: } + [1690541859.062677][2695:2697] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0002 DataVersion: 1628543926 + [1690541859.062764][2695:2697] CHIP:TOO: StartUpMode: 0 disabled: true - - label: "Step 7: TH reads from the DUT the CurrentMode attribute." + - label: "Step 10: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to new_start_up_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 0 - The value is equal to startup_mode_dut + [1690190646.897310][16529:16531] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 3922115677 + [1690190646.897357][16529:16531] CHIP:TOO: CurrentMode: 0 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml b/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml index 86efebd44626e1..f8f067844dcc96 100644 --- a/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCCM_3_3.yaml @@ -26,6 +26,19 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + To Execute the TC-TCC-3.3 test case using reboot in raspi device we followed the below suggested way: + + To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps + + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app ./chip-all-clusters-app --KVS ./mytest.txt + + if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. + disabled: true + - label: "Step 1: Commission DUT to TH (can be skipped if done in a preceding test)." @@ -36,68 +49,199 @@ tests: - label: "Step 2: TH reads from the DUT the StartUpMode attribute." PICS: TCCM.S.A0002 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read start-up-mode 1 1 + + On TH(chip-tool), Verify that StartUpMode attribute value is an integer or Null + - Save the value as startup_mode_dut, below is the sample log provided for the raspi platform: + - If startup_mode_dut is null proceed to step 3. Else save startup_mode_dut as new_start_up_mode_th and proceed to step 5. + - Here startup_mode_dut is null proceed to step 3. - Save the value as startup_mode_dut + [1690541247.515223][2594:2596] CHIP:DMG: } + [1690541247.521286][2594:2596] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0002 DataVersion: 667171525 + [1690541247.523875][2594:2596] CHIP:TOO: StartUpMode: null disabled: true - - label: "Step 3: TH reads from the DUT the OnMode attribute." - PICS: TCCM.S.A0003 && TCCM.S.A0002 + - label: "Step 3: TH reads from the DUT the SupportedModes attribute." + PICS: TCCM.S.A0000 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut and save the value as new_start_up_mode_th, below is the sample log provided for the raspi platform: + + [1690190590.967854][16509:16511] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 899063585 + [1690190590.967878][16509:16511] CHIP:TOO: SupportedModes: 3 entries + [1690190590.967889][16509:16511] CHIP:TOO: [1]: { + [1690190590.967892][16509:16511] CHIP:TOO: Label: Normal + [1690190590.967895][16509:16511] CHIP:TOO: Mode: 0 + [1690190590.967899][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967904][16509:16511] CHIP:TOO: [1]: { + [1690190590.967907][16509:16511] CHIP:TOO: Value: 0 + [1690190590.967910][16509:16511] CHIP:TOO: } + [1690190590.967913][16509:16511] CHIP:TOO: } + [1690190590.967918][16509:16511] CHIP:TOO: [2]: { + [1690190590.967920][16509:16511] CHIP:TOO: Label: Rapid Cool + [1690190590.967923][16509:16511] CHIP:TOO: Mode: 1 + [1690190590.967926][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967929][16509:16511] CHIP:TOO: [1]: { + [1690190590.967932][16509:16511] CHIP:TOO: Value: 16384 + [1690190590.967934][16509:16511] CHIP:TOO: } + [1690190590.967937][16509:16511] CHIP:TOO: } + [1690190590.967942][16509:16511] CHIP:TOO: [3]: { + [1690190590.967944][16509:16511] CHIP:TOO: Label: Rapid Freeze + [1690190590.967946][16509:16511] CHIP:TOO: Mode: 2 + [1690190590.967950][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967953][16509:16511] CHIP:TOO: [1]: { + [1690190590.967956][16509:16511] CHIP:TOO: Value: 16385 + [1690190590.967958][16509:16511] CHIP:TOO: } + [1690190590.967961][16509:16511] CHIP:TOO: } + disabled: true - Save the value as old_on_mode_dut + - label: + "Step 4: TH writes to the DUT the StartUpMode attribute with the + new_start_up_mode_th value" + PICS: TCCM.S.A0002 + verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode write start-up-mode 0 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - If startup_mode_dut is equal to old_on_mode_dut proceed to step 4. Else proceed to step 6. + [1690190139.816096][16383:16385] CHIP:DMG: StatusIB = + [1690190139.816100][16383:16385] CHIP:DMG: { + [1690190139.816102][16383:16385] CHIP:DMG: status = 0x00 (SUCCESS), + [1690190139.816105][16383:16385] CHIP:DMG: }, disabled: true - - label: "Step 4: TH reads from the DUT the SupportedModes attribute." - PICS: TCCM.S.A0000 && TCCM.S.A0002 + - label: "Step 5: TH reads from the DUT the OnMode attribute." + PICS: TCCM.S.A0003 && TCCM.S.A0002 verification: | - Verify that the DUT response contains a list of ModeOptionsStruct entries + Set onmode to any integer value because as default it value has null. + + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode write on-mode 0 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: - Verify that the list has two or more entries + [1690190824.443367][16580:16582] CHIP:DMG: StatusIB = + [1690190824.443379][16580:16582] CHIP:DMG: { + [1690190824.443391][16580:16582] CHIP:DMG: status = 0x00 (SUCCESS), + [1690190824.443402][16580:16582] CHIP:DMG: }, - Save the Mode field values as supported_modes_dut + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read on-mode 1 1 - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th. + On TH(chip-tool), Verify that OnMode attribute value is an integer + -Save the value as old_on_mode_du, t below is the sample log provided for the raspi platform, here OnMode attribute value is 0 + + [1690190846.367481][16585:16587] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0003 DataVersion: 978521150 + [1690190846.367522][16585:16587] CHIP:TOO: OnMode: 0 + + If startup_mode_dut is equal to old_on_mode_dut proceed to step 6. Else proceed to step 8. + disabled: true + + - label: "Step 6: TH reads from the DUT the SupportedModes attribute." + PICS: TCCM.S.A0000 && TCCM.S.A0002 + verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read supported-modes 1 1 + + On TH(chip-tool) log, Verify DUT response contains a list of ModeOptionsStruct entries + - Verify that the list has two or more entries + - Save the Mode field values as supported_modes_dut + - Select a value from supported_modes_dut different from startup_mode_dut. Save the value as new_mode_th, below is the sample log provided for the raspi platform: + + [1690190590.967854][16509:16511] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0000 DataVersion: 899063585 + [1690190590.967878][16509:16511] CHIP:TOO: SupportedModes: 3 entries + [1690190590.967889][16509:16511] CHIP:TOO: [1]: { + [1690190590.967892][16509:16511] CHIP:TOO: Label: Normal + [1690190590.967895][16509:16511] CHIP:TOO: Mode: 0 + [1690190590.967899][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967904][16509:16511] CHIP:TOO: [1]: { + [1690190590.967907][16509:16511] CHIP:TOO: Value: 0 + [1690190590.967910][16509:16511] CHIP:TOO: } + [1690190590.967913][16509:16511] CHIP:TOO: } + [1690190590.967918][16509:16511] CHIP:TOO: [2]: { + [1690190590.967920][16509:16511] CHIP:TOO: Label: Rapid Cool + [1690190590.967923][16509:16511] CHIP:TOO: Mode: 1 + [1690190590.967926][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967929][16509:16511] CHIP:TOO: [1]: { + [1690190590.967932][16509:16511] CHIP:TOO: Value: 16384 + [1690190590.967934][16509:16511] CHIP:TOO: } + [1690190590.967937][16509:16511] CHIP:TOO: } + [1690190590.967942][16509:16511] CHIP:TOO: [3]: { + [1690190590.967944][16509:16511] CHIP:TOO: Label: Rapid Freeze + [1690190590.967946][16509:16511] CHIP:TOO: Mode: 2 + [1690190590.967950][16509:16511] CHIP:TOO: ModeTags: 1 entries + [1690190590.967953][16509:16511] CHIP:TOO: [1]: { + [1690190590.967956][16509:16511] CHIP:TOO: Value: 16385 + [1690190590.967958][16509:16511] CHIP:TOO: } + [1690190590.967961][16509:16511] CHIP:TOO: } disabled: true - label: - "Step 5: TH writes to the DUT the OnMode attribute with the + "Step 7: TH writes to the DUT the OnMode attribute with the new_mode_th value" PICS: TCCM.S.A0003 verification: | - Verify DUT responds w/ status SUCCESS(0x00) + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode write on-mode 1 1 1 + + On TH(chip-tool) log, Verify that DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690190905.134866][16594:16596] CHIP:DMG: StatusIB = + [1690190905.134869][16594:16596] CHIP:DMG: { + [1690190905.134873][16594:16596] CHIP:DMG: status = 0x00 (SUCCESS), + [1690190905.134876][16594:16596] CHIP:DMG: }, disabled: true - - label: "Step 6: TH reads from the DUT the OnMode attribute." + - label: "Step 8: TH reads from the DUT the OnMode attribute." PICS: TCCM.S.A0003 && TCCM.S.F00 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read on-mode 1 1 - Save the value as new_on_mode_dut + On TH(chip-tool), Verify that OnMode attribute value is an integer + - Save the value as new_on_mode_dut and value is equal to new_mode_th, below is the sample log provided for the raspi platform, here OnMode attribute value is 1 - The value is equal to new_mode_th + [1690190846.367481][16585:16587] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0003 DataVersion: 978521150 + [1690190846.367522][16585:16587] CHIP:TOO: OnMode: 1 disabled: true - label: - "Step 7: TH writes to the DUT the StartUpOnOff attribute with the + "Step 9: TH writes to the DUT the StartUpOnOff attribute with the value 1." PICS: OO.S.A4003 verification: | - Verify DUT responds w/ status SUCCESS(0x00) + ./chip-tool onoff write start-up-on-off 1 1 1 + + On TH(chip-tool) log, Verify DUT responds with a successful (value 0x00) status response and below is the sample log provided for the raspi platform: + + [1690180270.884152][14228:14230] CHIP:DMG: { + [1690180270.884156][14228:14230] CHIP:DMG: status = 0x00 (SUCCESS), + [1690180270.884158][14228:14230] CHIP:DMG: }, + disabled: true + + - label: "Step 10: Physically power cycle the device" + verification: | + Physically power cycle the device disabled: true - - label: "Step 8: Physically power cycle the device" + - label: "Step 11: TH reads from the DUT the StartUpMode attribute." + PICS: TCCM.S.A0002 verification: | + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read start-up-mode 1 1 + On TH(chip-tool), Verify that StartUpMode attribute value is an integer value is equal to new_start_up_mode_th, below is the sample log provided for the raspi platform , here StartUpMode is 0 + + [1690541247.515223][2594:2596] CHIP:DMG: } + [1690541247.521286][2594:2596] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0002 DataVersion: 667171525 + [1690541247.523875][2594:2596] CHIP:TOO: StartUpMode: 0 disabled: true - - label: "Step 9: TH reads from the DUT the CurrentMode attribute." + - label: "Step 12: TH reads from the DUT the CurrentMode attribute." PICS: TCCM.S.A0001 verification: | - Verify that the DUT response contains an integer value + ./chip-tool refrigeratorandtemperaturecontrolledcabinetmode read current-mode 1 1 + + On TH(chip-tool), Verify that CurrentMode attribute value is an integer value and equal to new_on_mode_dut, below is the sample log provided for the raspi platform, Here CurrentMode attribute value is 1 - The value is equal to new_on_mode_dut + [1690190945.261971][16605:16607] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0052 Attribute 0x0000_0001 DataVersion: 4180211608 + [1690190945.261982][16605:16607] CHIP:TOO: CurrentMode: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCTL_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TCTL_2_1.yaml index f70fad20638661..a31f3ccf9a1775 100644 --- a/src/app/tests/suites/certification/Test_TC_TCTL_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCTL_2_1.yaml @@ -35,4 +35,15 @@ tests: PICS: TCTL.S.A0003 verification: | ./chip-tool temperaturecontrol read step 1 1 + + On TH(chip-tool), Verify that the DUT response contains a temperature value <= TCTL.S.A0002(MaxTemperature) - TCTL.S.A0001(MinTemperature) + and (TCTL.S.A0002(MaxTemperature) - TCTL.S.A0001(MinTemperature)) % TCTL.S.A0003(Step) == 0 + + + [1689770673.417838][9280:9282] CHIP:DMG: SuppressResponse = true, + [1689770673.417845][9280:9282] CHIP:DMG: InteractionModelRevision = 1 + [1689770673.417851][9280:9282] CHIP:DMG: } + [1689770673.417920][9280:9282] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0056 Attribute 0x0000_0003 DataVersion: 2844459846 + [1689770673.417946][9280:9282] CHIP:TOO: step: 0 + [1689770673.418017][9280:9282] CHIP:EM: <<< [E:21789i S:28147 M:181187483 (Ack:172880761)] (S) Msg TX to 1:0000000000000001 [9CA1] --- Type 0000:10 (SecureChannel:StandaloneAck) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TCTL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_TCTL_2_2.yaml index 398788f4ed8802..7806d2fce732ab 100644 --- a/src/app/tests/suites/certification/Test_TC_TCTL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TCTL_2_2.yaml @@ -36,16 +36,41 @@ tests: PICS: TCTL.S.A0000 verification: | ./chip-tool temperaturecontrol read temperature-setpoint 1 1 + On TH(chip-tool), Verify that the DUT response contains a temperature with value between MinTemperature and TCTL.S.A0002(MaxTemperature) inclusive. + + [1689770673.417838][9280:9282] CHIP:DMG: SuppressResponse = true, + [1689770673.417845][9280:9282] CHIP:DMG: InteractionModelRevision = 1 + [1689770673.417851][9280:9282] CHIP:DMG: } + [1689770673.417920][9280:9282] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0056 Attribute 0x0000_0000 DataVersion: 2844459846 + [1689770673.417946][9280:9282] CHIP:TOO: TemperatureSetpoint : 0 + [1689770673.418017][9280:9282] CHIP:EM: <<< [E:21789i S:28147 M:181187483 (Ack:172880761)] (S) Msg TX to 1:0000000000000001 [9CA1] --- Type 0000:10 (SecureChannel:StandaloneAck) disabled: true - label: "Step 3: TH reads from the DUT the MinTemperature attribute" PICS: TCTL.S.A0001 verification: | ./chip-tool temperaturecontrol read min-temperature 1 1 + on TH(chip-tool), Verify that the DUT response contains a temperature with value less than TCTL.S.A0002(MaxTemperature). + + [1689770673.417838][9280:9282] CHIP:DMG: SuppressResponse = true, + [1689770673.417845][9280:9282] CHIP:DMG: InteractionModelRevision = 1 + [1689770673.417851][9280:9282] CHIP:DMG: } + [1689770673.417920][9280:9282] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0056 Attribute 0x0000_0001 DataVersion: 2844459846 + [1689770673.417946][9280:9282] CHIP:TOO: MinTemperature: 0 + [1689770673.418017][9280:9282] CHIP:EM: <<< [E:21789i S:28147 M:181187483 (Ack:172880761)] (S) Msg TX to 1:0000000000000001 [9CA1] --- Type 0000:10 (SecureChannel:StandaloneAck) disabled: true - label: "Step 4: TH reads from the DUT the MaxTemperature attribute" PICS: TCTL.S.A0002 verification: | ./chip-tool temperaturecontrol read max-temperature 1 1 + + On TH(chip-tool), Verify that the DUT response contains a temperature with value greater than TCTL.S.A0001(MinTemperature). + + [1689770673.417838][9280:9282] CHIP:DMG: SuppressResponse = true, + [1689770673.417845][9280:9282] CHIP:DMG: InteractionModelRevision = 1 + [1689770673.417851][9280:9282] CHIP:DMG: } + [1689770673.417920][9280:9282] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0056 Attribute 0x0000_0002 DataVersion: 2844459846 + [1689770673.417946][9280:9282] CHIP:TOO: MaxTemperature: 0 + [1689770673.418017][9280:9282] CHIP:EM: <<< [E:21789i S:28147 M:181187483 (Ack:172880761)] (S) Msg TX to 1:0000000000000001 [9CA1] --- Type 0000:10 (SecureChannel:StandaloneAck) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TIMESYNC_2_15.yaml b/src/app/tests/suites/certification/Test_TC_TIMESYNC_2_15.yaml deleted file mode 100644 index dea7e182c42dd1..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TIMESYNC_2_15.yaml +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright (c) 2023 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: 142.2.15. [TC-TIMESYNC-2.15] Endpoint composition with DUT as Server - -PICS: - - TIMESYNC.S - -config: - nodeId: 0x12344321 - cluster: "Basic Information" - endpoint: 0 - -tests: - - label: - "Step 1: TH does a wildcard read of the time sync cluster UTCTime - attribute across all endpoints." - verification: | - ./chip-tool timesynchronization read utctime 1 0xFFFF - - On TH(Chip-tool), Verify that only one AttributeReportIB is returned for endpoint 0. - - [1688724683.563762][13887:13889] CHIP:DMG: } - [1688724683.563834][13887:13889] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0038 Attribute 0x0000_0000 DataVersion: 2061582322 - [1688724683.563870][13887:13889] CHIP:TOO: UTCTime: 742039883563331 - [1688724683.563926][13887:13889] CHIP:EM: <<< [E:22156i S:9939 M:104620514 (Ack:265588578)] (S) Msg TX to 1:0000000000000001 [8979] --- Type 0000:10 (SecureChannel:StandaloneAck) - [1688724683.563939][13887:13889] CHIP:IN: (S) Sending msg 104620514 on secure session with LSID: 9939 - [1688724683.563964][13887:13889] CHIP:EM: Flushed pending ack for MessageCounter:265588578 on exchange 22156i - disabled: true - - - label: - "Step 2: TH does a wildcard read of the descriptor cluster ServerList - attribute across all endpoint." - verification: | - ./chip-tool descriptor read server-list 1 0xFFFF - On TH(Chip-tool), Verify that the time synchronization cluster id - 0x0038(56) is listed in the ServerList attribute from endpoint 0 and is not listed in the ServerList attribute for any other endpoints. - - [1688724759.304134][13899:13901] CHIP:DMG: } - [1688724759.304525][13899:13901] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 2397850349 - [1688724759.304584][13899:13901] CHIP:TOO: ServerList: 29 entries - [1688724759.304598][13899:13901] CHIP:TOO: [1]: 3 - [1688724759.304607][13899:13901] CHIP:TOO: [2]: 4 - [1688724759.304617][13899:13901] CHIP:TOO: [3]: 29 - [1688724759.304627][13899:13901] CHIP:TOO: [4]: 30 - [1688724759.304637][13899:13901] CHIP:TOO: [5]: 31 - [1688724759.304646][13899:13901] CHIP:TOO: [6]: 40 - [1688724759.304656][13899:13901] CHIP:TOO: [7]: 42 - [1688724759.304666][13899:13901] CHIP:TOO: [8]: 43 - [1688724759.304676][13899:13901] CHIP:TOO: [9]: 44 - [1688724759.304686][13899:13901] CHIP:TOO: [10]: 45 - [1688724759.304695][13899:13901] CHIP:TOO: [11]: 46 - [1688724759.304705][13899:13901] CHIP:TOO: [12]: 47 - [1688724759.304715][13899:13901] CHIP:TOO: [13]: 48 - [1688724759.304725][13899:13901] CHIP:TOO: [14]: 49 - [1688724759.304734][13899:13901] CHIP:TOO: [15]: 50 - [1688724759.304744][13899:13901] CHIP:TOO: [16]: 51 - [1688724759.304754][13899:13901] CHIP:TOO: [17]: 52 - [1688724759.304764][13899:13901] CHIP:TOO: [18]: 53 - [1688724759.304773][13899:13901] CHIP:TOO: [19]: 54 - [1688724759.304783][13899:13901] CHIP:TOO: [20]: 55 - [1688724759.304793][13899:13901] CHIP:TOO: [21]: 56 - [1688724759.304802][13899:13901] CHIP:TOO: [22]: 60 - [1688724759.304813][13899:13901] CHIP:TOO: [23]: 62 - [1688724759.304823][13899:13901] CHIP:TOO: [24]: 63 - [1688724759.304832][13899:13901] CHIP:TOO: [25]: 64 - [1688724759.304842][13899:13901] CHIP:TOO: [26]: 65 - [1688724759.304852][13899:13901] CHIP:TOO: [27]: 70 - [1688724759.304862][13899:13901] CHIP:TOO: [28]: 1029 - [1688724759.304872][13899:13901] CHIP:TOO: [29]: 4294048774 - [1688724759.305115][13899:13901] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1621835978 - [1688724759.305168][13899:13901] CHIP:TOO: ServerList: 69 entries - [1688724759.305177][13899:13901] CHIP:TOO: [1]: 3 - [1688724759.305187][13899:13901] CHIP:TOO: [2]: 4 - [1688724759.305197][13899:13901] CHIP:TOO: [3]: 5 - [1688724759.305207][13899:13901] CHIP:TOO: [4]: 6 - [1688724759.305217][13899:13901] CHIP:TOO: [5]: 7 - [1688724759.305226][13899:13901] CHIP:TOO: [6]: 8 - [1688724759.305236][13899:13901] CHIP:TOO: [7]: 15 - [1688724759.305246][13899:13901] CHIP:TOO: [8]: 29 - [1688724759.305256][13899:13901] CHIP:TOO: [9]: 30 - [1688724759.305265][13899:13901] CHIP:TOO: [10]: 37 - [1688724759.305275][13899:13901] CHIP:TOO: [11]: 47 - [1688724759.305285][13899:13901] CHIP:TOO: [12]: 59 - [1688724759.305295][13899:13901] CHIP:TOO: [13]: 64 - [1688724759.305304][13899:13901] CHIP:TOO: [14]: 65 - [1688724759.305314][13899:13901] CHIP:TOO: [15]: 69 - [1688724759.305323][13899:13901] CHIP:TOO: [16]: 80 - [1688724759.305333][13899:13901] CHIP:TOO: [17]: 87 - [1688724759.305343][13899:13901] CHIP:TOO: [18]: 91 - [1688724759.305353][13899:13901] CHIP:TOO: [19]: 113 - [1688724759.305362][13899:13901] CHIP:TOO: [20]: 114 - [1688724759.305372][13899:13901] CHIP:TOO: [21]: 115 - [1688724759.305382][13899:13901] CHIP:TOO: [22]: 116 - [1688724759.305392][13899:13901] CHIP:TOO: [23]: 117 - [1688724759.305402][13899:13901] CHIP:TOO: [24]: 118 - [1688724759.305411][13899:13901] CHIP:TOO: [25]: 119 - [1688724759.305421][13899:13901] CHIP:TOO: [26]: 120 - [1688724759.305431][13899:13901] CHIP:TOO: [27]: 121 - [1688724759.305441][13899:13901] CHIP:TOO: [28]: 122 - [1688724759.305450][13899:13901] CHIP:TOO: [29]: 123 - [1688724759.305460][13899:13901] CHIP:TOO: [30]: 124 - [1688724759.305470][13899:13901] CHIP:TOO: [31]: 257 - [1688724759.305480][13899:13901] CHIP:TOO: [32]: 258 - [1688724759.305490][13899:13901] CHIP:TOO: [33]: 259 - [1688724759.305499][13899:13901] CHIP:TOO: [34]: 512 - [1688724759.305509][13899:13901] CHIP:TOO: [35]: 513 - [1688724759.305519][13899:13901] CHIP:TOO: [36]: 514 - [1688724759.305529][13899:13901] CHIP:TOO: [37]: 516 - [1688724759.305539][13899:13901] CHIP:TOO: [38]: 768 - [1688724759.305549][13899:13901] CHIP:TOO: [39]: 769 - [1688724759.305558][13899:13901] CHIP:TOO: [40]: 1024 - [1688724759.305568][13899:13901] CHIP:TOO: [41]: 1026 - [1688724759.305578][13899:13901] CHIP:TOO: [42]: 1027 - [1688724759.305588][13899:13901] CHIP:TOO: [43]: 1028 - [1688724759.305598][13899:13901] CHIP:TOO: [44]: 1029 - [1688724759.305607][13899:13901] CHIP:TOO: [45]: 1030 - [1688724759.305617][13899:13901] CHIP:TOO: [46]: 1036 - [1688724759.305627][13899:13901] CHIP:TOO: [47]: 1037 - [1688724759.305637][13899:13901] CHIP:TOO: [48]: 1043 - [1688724759.305647][13899:13901] CHIP:TOO: [49]: 1045 - [1688724759.305657][13899:13901] CHIP:TOO: [50]: 1066 - [1688724759.305667][13899:13901] CHIP:TOO: [51]: 1067 - [1688724759.305676][13899:13901] CHIP:TOO: [52]: 1068 - [1688724759.305686][13899:13901] CHIP:TOO: [53]: 1069 - [1688724759.305696][13899:13901] CHIP:TOO: [54]: 1070 - [1688724759.305705][13899:13901] CHIP:TOO: [55]: 1071 - [1688724759.305715][13899:13901] CHIP:TOO: [56]: 1283 - [1688724759.305725][13899:13901] CHIP:TOO: [57]: 1284 - [1688724759.305734][13899:13901] CHIP:TOO: [58]: 1285 - [1688724759.305744][13899:13901] CHIP:TOO: [59]: 1286 - [1688724759.305754][13899:13901] CHIP:TOO: [60]: 1287 - [1688724759.305764][13899:13901] CHIP:TOO: [61]: 1288 - [1688724759.305773][13899:13901] CHIP:TOO: [62]: 1289 - [1688724759.305783][13899:13901] CHIP:TOO: [63]: 1290 - [1688724759.305793][13899:13901] CHIP:TOO: [64]: 1291 - [1688724759.305802][13899:13901] CHIP:TOO: [65]: 1292 - [1688724759.305812][13899:13901] CHIP:TOO: [66]: 1293 - [1688724759.305822][13899:13901] CHIP:TOO: [67]: 1294 - [1688724759.305832][13899:13901] CHIP:TOO: [68]: 2820 - [1688724759.305842][13899:13901] CHIP:TOO: [69]: 4294048773 - [1688724759.305881][13899:13901] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1550598832 - [1688724759.305897][13899:13901] CHIP:TOO: ServerList: 5 entries - [1688724759.305906][13899:13901] CHIP:TOO: [1]: 4 - [1688724759.305916][13899:13901] CHIP:TOO: [2]: 6 - [1688724759.305926][13899:13901] CHIP:TOO: [3]: 29 - [1688724759.305936][13899:13901] CHIP:TOO: [4]: 47 - [1688724759.305945][13899:13901] CHIP:TOO: [5]: 1030 - [1688724759.306032][13899:13901] CHIP:EM: <<< [E:9189i S:12449 M:231725041 (Ack:22667687)] (S) Msg TX to 1:0000000000000001 [8979] --- Type 0000:10 (SecureChannel:StandaloneAck) - [1688724759.306046][13899:13901] CHIP:IN: (S) Sending msg 231725041 on secure session with LSID: 12449 - [1688724759.306081][13899:13901] CHIP:EM: Flushed pending ack for MessageCounter:22667687 on exchange 9189i - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TMP_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_TMP_3_1_Simulated.yaml deleted file mode 100644 index fcef638b9e000a..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TMP_3_1_Simulated.yaml +++ /dev/null @@ -1,659 +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: 6.3.1. [TC-TMP-3.1] Attributes with client as DUT - -PICS: - - TMP.C - - TMP.C.AM-READ - - TMP.C.AO-READ - - TMP.C.AM-WRITE - - TMP.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Temperature Measurement" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Read attribute: MeasuredValue" - wait: "readAttribute" - attribute: "MeasuredValue" - - - label: "Read attribute: MinMeasuredValue" - wait: "readAttribute" - attribute: "MinMeasuredValue" - - - label: "Read attribute: MaxMeasuredValue" - wait: "readAttribute" - attribute: "MaxMeasuredValue" - - - label: "Read attribute: Tolerance" - wait: "readAttribute" - attribute: "Tolerance" - - - 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: | - 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) - To verify all below steps use all-clusters-minimal-app - - ./chip-tool temperaturemeasurement read measured-value 1 1 - Verify DUT receives measured-value attribute response on the TH(all-clusters-minimal-app) Log: - - [1666954493.877646][6087:6087] CHIP:EM: Handling via exchange: 25543r, Delegate: 0xaaaab0ad80e0 - [1666954493.877744][6087:6087] CHIP:IM: Received Read request - [1666954493.877919][6087:6087] CHIP:DMG: ReadRequestMessage = - [1666954493.877989][6087:6087] CHIP:DMG: { - [1666954493.878044][6087:6087] CHIP:DMG: AttributePathIBs = - [1666954493.878109][6087:6087] CHIP:DMG: [ - [1666954493.878172][6087:6087] CHIP:DMG: AttributePathIB = - [1666954493.878258][6087:6087] CHIP:DMG: { - [1666954493.878333][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666954493.878483][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666954493.878627][6087:6087] CHIP:DMG: Attribute = 0x0000_0000, - [1666954493.878815][6087:6087] CHIP:DMG: } - [1666954493.878899][6087:6087] CHIP:DMG: - [1666954493.878966][6087:6087] CHIP:DMG: ], - [1666954493.879039][6087:6087] CHIP:DMG: - [1666954493.879544][6087:6087] CHIP:DMG: isFabricFiltered = true, - [1666954493.879716][6087:6087] CHIP:DMG: InteractionModelRevision = 1 - [1666954493.879780][6087:6087] CHIP:DMG: }, - [1666954493.879963][6087:6087] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666954493.880294][6087:6087] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666954493.880375][6087:6087] CHIP:DMG: Cluster 402, Attribute 0 is dirty - [1666954493.880434][6087:6087] CHIP:DMG: Reading attribute: Cluster=0x0000_0402 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1666954493.880505][6087:6087] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0402 e=1 p=v - [1666954493.880583][6087:6087] CHIP:DMG: AccessControl: allowed - [1666954493.880703][6087:6087] CHIP:DMG: Sending report (payload has 36 bytes)... - [1666954493.881294][6087:6087] CHIP:EM: <<< [E:25543r M:47295307 (Ack:14766592)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666954493.881411][6087:6087] CHIP:IN: (S) Sending msg 47295307 on secure session with LSID: 1274 - [1666954493.882135][6087:6087] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:47925 | 47295307 | [Interaction Model (1) / Report Data (0x05) / Session = 17330 / Exchange = 25543] - [1666954493.882240][6087:6087] CHIP:DMG: Header Flags = - [1666954493.882298][6087:6087] CHIP:DMG: { - [1666954493.882387][6087:6087] CHIP:DMG: Exchange (0x06) = - [1666954493.882444][6087:6087] CHIP:DMG: { - [1666954493.882504][6087:6087] CHIP:DMG: AckMsg = 14766592 - [1666954493.882560][6087:6087] CHIP:DMG: NeedsAck = true - [1666954493.882607][6087:6087] CHIP:DMG: } - [1666954493.882677][6087:6087] CHIP:DMG: } - [1666954493.882776][6087:6087] CHIP:DMG: - [1666954493.882851][6087:6087] CHIP:DMG: Encrypted Payload (70 bytes) = - [1666954493.882907][6087:6087] CHIP:DMG: { - [1666954493.882963][6087:6087] CHIP:DMG: data = 00b243004babd102ad9c892c216d98202fc231b7185fd81d7cdfbbcbea762458172c6c84a150ec33023c18ec7a0b46e73335a7aaf43ca2b4e050c6d85c866bd7039f5bd37366 - [1666954493.883023][6087:6087] CHIP:DMG: buffer_ptr = 187650284036288 - [1666954493.883077][6087:6087] CHIP:DMG: } - [1666954493.883130][6087:6087] CHIP:DMG: - [1666954493.883299][6087:6087] CHIP:DMG: ReportDataMessage = - [1666954493.883367][6087:6087] CHIP:DMG: { - [1666954493.883422][6087:6087] CHIP:DMG: AttributeReportIBs = - [1666954493.883492][6087:6087] CHIP:DMG: [ - [1666954493.883554][6087:6087] CHIP:DMG: AttributeReportIB = - [1666954493.883720][6087:6087] CHIP:DMG: { - [1666954493.883803][6087:6087] CHIP:DMG: AttributeDataIB = - [1666954493.883936][6087:6087] CHIP:DMG: { - [1666954493.884016][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666954493.884157][6087:6087] CHIP:DMG: AttributePathIB = - [1666954493.884302][6087:6087] CHIP:DMG: { - [1666954493.884451][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666954493.884602][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666954493.884756][6087:6087] CHIP:DMG: Attribute = 0x0000_0000, - [1666954493.884899][6087:6087] CHIP:DMG: } - [1666954493.884985][6087:6087] CHIP:DMG: - [1666954493.885057][6087:6087] CHIP:DMG: Data = NULL - [1666954493.885135][6087:6087] CHIP:DMG: }, - [1666954493.885273][6087:6087] CHIP:DMG: - [1666954493.885350][6087:6087] CHIP:DMG: }, - [1666954493.885477][6087:6087] CHIP:DMG: - [1666954493.885544][6087:6087] CHIP:DMG: ], - - - ./chip-tool temperaturemeasurement read max-measured-value 1 1 - Verify DUT receives max-measured-value attribute response on the TH(all-clusters-minimal-app) Log: - - [1666954528.135348][6087:6087] CHIP:EM: Handling via exchange: 34550r, Delegate: 0xaaaab0ad80e0 - [1666954528.135445][6087:6087] CHIP:IM: Received Read request - [1666954528.135617][6087:6087] CHIP:DMG: ReadRequestMessage = - [1666954528.135684][6087:6087] CHIP:DMG: { - [1666954528.135738][6087:6087] CHIP:DMG: AttributePathIBs = - [1666954528.135802][6087:6087] CHIP:DMG: [ - [1666954528.135864][6087:6087] CHIP:DMG: AttributePathIB = - [1666954528.135948][6087:6087] CHIP:DMG: { - [1666954528.136021][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666954528.136243][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666954528.136334][6087:6087] CHIP:DMG: Attribute = 0x0000_0002, - [1666954528.136418][6087:6087] CHIP:DMG: } - [1666954528.136487][6087:6087] CHIP:DMG: - [1666954528.136559][6087:6087] CHIP:DMG: ], - [1666954528.136631][6087:6087] CHIP:DMG: - [1666954528.136698][6087:6087] CHIP:DMG: isFabricFiltered = true, - [1666954528.136762][6087:6087] CHIP:DMG: InteractionModelRevision = 1 - [1666954528.136821][6087:6087] CHIP:DMG: }, - [1666954528.136988][6087:6087] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666954528.137208][6087:6087] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666954528.137279][6087:6087] CHIP:DMG: Cluster 402, Attribute 2 is dirty - [1666954528.137334][6087:6087] CHIP:DMG: Reading attribute: Cluster=0x0000_0402 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) - [1666954528.137401][6087:6087] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0402 e=1 p=v - [1666954528.137477][6087:6087] CHIP:DMG: AccessControl: allowed - [1666954528.137592][6087:6087] CHIP:DMG: Sending report (payload has 36 bytes)... - [1666954528.138121][6087:6087] CHIP:EM: <<< [E:34550r M:157321696 (Ack:200937431)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666954528.138223][6087:6087] CHIP:IN: (S) Sending msg 157321696 on secure session with LSID: 1275 - [1666954528.138927][6087:6087] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:60947 | 157321696 | [Interaction Model (1) / Report Data (0x05) / Session = 47327 / Exchange = 34550] - [1666954528.139022][6087:6087] CHIP:DMG: Header Flags = - [1666954528.139080][6087:6087] CHIP:DMG: { - [1666954528.139168][6087:6087] CHIP:DMG: Exchange (0x06) = - [1666954528.139226][6087:6087] CHIP:DMG: { - [1666954528.139286][6087:6087] CHIP:DMG: AckMsg = 200937431 - [1666954528.139341][6087:6087] CHIP:DMG: NeedsAck = true - [1666954528.139394][6087:6087] CHIP:DMG: } - [1666954528.139466][6087:6087] CHIP:DMG: } - [1666954528.139521][6087:6087] CHIP:DMG: - [1666954528.139588][6087:6087] CHIP:DMG: Encrypted Payload (70 bytes) = - [1666954528.139644][6087:6087] CHIP:DMG: { - [1666954528.139699][6087:6087] CHIP:DMG: data = 00dfb800e0896009f537bfb3ee387784dd9550975d432fc9600b2c971bd4be1e94725849b9c26de6d951e18c9bd7c72e2494172492cc8f645459f0523f4e9f688827c1d68604 - [1666954528.139757][6087:6087] CHIP:DMG: buffer_ptr = 187650284039360 - [1666954528.139810][6087:6087] CHIP:DMG: } - [1666954528.139861][6087:6087] CHIP:DMG: - [1666954528.140022][6087:6087] CHIP:DMG: ReportDataMessage = - [1666954528.140087][6087:6087] CHIP:DMG: { - [1666954528.140141][6087:6087] CHIP:DMG: AttributeReportIBs = - [1666954528.140225][6087:6087] CHIP:DMG: [ - [1666954528.140287][6087:6087] CHIP:DMG: AttributeReportIB = - [1666954528.140371][6087:6087] CHIP:DMG: { - [1666954528.140442][6087:6087] CHIP:DMG: AttributeDataIB = - [1666954528.140515][6087:6087] CHIP:DMG: { - [1666954528.140596][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666954528.140679][6087:6087] CHIP:DMG: AttributePathIB = - [1666954528.140771][6087:6087] CHIP:DMG: { - [1666954528.140866][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666954528.140958][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666954528.141053][6087:6087] CHIP:DMG: Attribute = 0x0000_0002, - [1666954528.141141][6087:6087] CHIP:DMG: } - [1666954528.141237][6087:6087] CHIP:DMG: - [1666954528.141331][6087:6087] CHIP:DMG: Data = NULL - [1666954528.141410][6087:6087] CHIP:DMG: }, - [1666954528.141493][6087:6087] CHIP:DMG: - [1666954528.141563][6087:6087] CHIP:DMG: }, - [1666954528.141648][6087:6087] CHIP:DMG: - [1666954528.141715][6087:6087] CHIP:DMG: ], - - - ./chip-tool temperaturemeasurement read min-measured-value 1 1 - Verify DUT receives min-measured-value attribute response on the TH(all-clusters-minimal-app) Log: - - [1666954579.729186][6087:6087] CHIP:EM: Handling via exchange: 13627r, Delegate: 0xaaaab0ad80e0 - [1666954579.729291][6087:6087] CHIP:IM: Received Read request - [1666954579.729463][6087:6087] CHIP:DMG: ReadRequestMessage = - [1666954579.729530][6087:6087] CHIP:DMG: { - [1666954579.729585][6087:6087] CHIP:DMG: AttributePathIBs = - [1666954579.729651][6087:6087] CHIP:DMG: [ - [1666954579.729713][6087:6087] CHIP:DMG: AttributePathIB = - [1666954579.729796][6087:6087] CHIP:DMG: { - [1666954579.729871][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666954579.729948][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666954579.730024][6087:6087] CHIP:DMG: Attribute = 0x0000_0001, - [1666954579.730094][6087:6087] CHIP:DMG: } - [1666954579.730168][6087:6087] CHIP:DMG: - [1666954579.730236][6087:6087] CHIP:DMG: ], - [1666954579.730307][6087:6087] CHIP:DMG: - [1666954579.730376][6087:6087] CHIP:DMG: isFabricFiltered = true, - [1666954579.730440][6087:6087] CHIP:DMG: InteractionModelRevision = 1 - [1666954579.730499][6087:6087] CHIP:DMG: }, - [1666954579.730674][6087:6087] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666954579.730963][6087:6087] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666954579.731038][6087:6087] CHIP:DMG: Cluster 402, Attribute 1 is dirty - [1666954579.731095][6087:6087] CHIP:DMG: Reading attribute: Cluster=0x0000_0402 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) - [1666954579.731164][6087:6087] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0402 e=1 p=v - [1666954579.731240][6087:6087] CHIP:DMG: AccessControl: allowed - [1666954579.731379][6087:6087] CHIP:DMG: Sending report (payload has 36 bytes)... - [1666954579.732062][6087:6087] CHIP:EM: <<< [E:13627r M:44698905 (Ack:48846946)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666954579.732182][6087:6087] CHIP:IN: (S) Sending msg 44698905 on secure session with LSID: 1276 - [1666954579.732896][6087:6087] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:50038 | 44698905 | [Interaction Model (1) / Report Data (0x05) / Session = 14277 / Exchange = 13627] - [1666954579.733002][6087:6087] CHIP:DMG: Header Flags = - [1666954579.733059][6087:6087] CHIP:DMG: { - [1666954579.733149][6087:6087] CHIP:DMG: Exchange (0x06) = - [1666954579.733205][6087:6087] CHIP:DMG: { - [1666954579.733265][6087:6087] CHIP:DMG: AckMsg = 48846946 - [1666954579.733320][6087:6087] CHIP:DMG: NeedsAck = true - [1666954579.733374][6087:6087] CHIP:DMG: } - [1666954579.733445][6087:6087] CHIP:DMG: } - [1666954579.733501][6087:6087] CHIP:DMG: - [1666954579.733571][6087:6087] CHIP:DMG: Encrypted Payload (70 bytes) = - [1666954579.733626][6087:6087] CHIP:DMG: { - [1666954579.733682][6087:6087] CHIP:DMG: data = 00c53700190daa027a1deb577441765a1cec59927ae2370d0d2190907ce38e16fa3493923aca247183f3cc5540bd1f4683f32e86f9842fc968152ea37fc686b1aedaf7296ffb - [1666954579.733740][6087:6087] CHIP:DMG: buffer_ptr = 187650284040096 - [1666954579.733856][6087:6087] CHIP:DMG: } - [1666954579.733915][6087:6087] CHIP:DMG: - [1666954579.734086][6087:6087] CHIP:DMG: ReportDataMessage = - [1666954579.734154][6087:6087] CHIP:DMG: { - [1666954579.734205][6087:6087] CHIP:DMG: AttributeReportIBs = - [1666954579.734283][6087:6087] CHIP:DMG: [ - [1666954579.734346][6087:6087] CHIP:DMG: AttributeReportIB = - [1666954579.734427][6087:6087] CHIP:DMG: { - [1666954579.734502][6087:6087] CHIP:DMG: AttributeDataIB = - [1666954579.734595][6087:6087] CHIP:DMG: { - [1666954579.734691][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666954579.734824][6087:6087] CHIP:DMG: AttributePathIB = - [1666954579.734923][6087:6087] CHIP:DMG: { - [1666954579.735005][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666954579.735105][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666954579.735196][6087:6087] CHIP:DMG: Attribute = 0x0000_0001, - [1666954579.735292][6087:6087] CHIP:DMG: } - [1666954579.735391][6087:6087] CHIP:DMG: - [1666954579.735487][6087:6087] CHIP:DMG: Data = NULL - [1666954579.735565][6087:6087] CHIP:DMG: }, - [1666954579.735651][6087:6087] CHIP:DMG: - [1666954579.735724][6087:6087] CHIP:DMG: }, - [1666954579.735801][6087:6087] CHIP:DMG: - [1666954579.735863][6087:6087] CHIP:DMG: ], - - - ./chip-tool temperaturemeasurement read feature-map 1 1 - Verify DUT receives feature-map attribute response on the TH(all-clusters-minimal-app) Log: - - [1666955056.085472][6087:6087] CHIP:EM: Handling via exchange: 8859r, Delegate: 0xaaaab0ad80e0 - [1666955056.085572][6087:6087] CHIP:IM: Received Read request - [1666955056.085747][6087:6087] CHIP:DMG: ReadRequestMessage = - [1666955056.085819][6087:6087] CHIP:DMG: { - [1666955056.085874][6087:6087] CHIP:DMG: AttributePathIBs = - [1666955056.085954][6087:6087] CHIP:DMG: [ - [1666955056.086018][6087:6087] CHIP:DMG: AttributePathIB = - [1666955056.086107][6087:6087] CHIP:DMG: { - [1666955056.086188][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955056.086282][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955056.086373][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666955056.086451][6087:6087] CHIP:DMG: } - [1666955056.086517][6087:6087] CHIP:DMG: - [1666955056.086577][6087:6087] CHIP:DMG: ], - [1666955056.086649][6087:6087] CHIP:DMG: - [1666955056.086762][6087:6087] CHIP:DMG: isFabricFiltered = true, - [1666955056.086836][6087:6087] CHIP:DMG: InteractionModelRevision = 1 - [1666955056.086897][6087:6087] CHIP:DMG: }, - [1666955056.087072][6087:6087] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666955056.087308][6087:6087] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666955056.087385][6087:6087] CHIP:DMG: Cluster 402, Attribute fffc is dirty - [1666955056.087440][6087:6087] CHIP:DMG: Reading attribute: Cluster=0x0000_0402 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1666955056.087510][6087:6087] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0402 e=1 p=v - [1666955056.087586][6087:6087] CHIP:DMG: AccessControl: allowed - [1666955056.087705][6087:6087] CHIP:DMG: Sending report (payload has 38 bytes)... - [1666955056.088268][6087:6087] CHIP:EM: <<< [E:8859r M:73892045 (Ack:58753019)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666955056.088379][6087:6087] CHIP:IN: (S) Sending msg 73892045 on secure session with LSID: 1277 - [1666955056.089094][6087:6087] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:45653 | 73892045 | [Interaction Model (1) / Report Data (0x05) / Session = 30000 / Exchange = 8859] - [1666955056.089297][6087:6087] CHIP:DMG: Header Flags = - [1666955056.089357][6087:6087] CHIP:DMG: { - [1666955056.089448][6087:6087] CHIP:DMG: Exchange (0x06) = - [1666955056.089505][6087:6087] CHIP:DMG: { - [1666955056.089565][6087:6087] CHIP:DMG: AckMsg = 58753019 - [1666955056.089622][6087:6087] CHIP:DMG: NeedsAck = true - [1666955056.089675][6087:6087] CHIP:DMG: } - [1666955056.089748][6087:6087] CHIP:DMG: } - [1666955056.089805][6087:6087] CHIP:DMG: - [1666955056.089875][6087:6087] CHIP:DMG: Encrypted Payload (72 bytes) = - [1666955056.089933][6087:6087] CHIP:DMG: { - [1666955056.089991][6087:6087] CHIP:DMG: data = 00307500cd80670441d7379f0c2dc290cb546382bd57698bf3b434ce28da2056c754abe2015af240726bece5af2ddb6c7c4161daa7179aa455f0e17736706d0af429e76cbd119449 - [1666955056.090050][6087:6087] CHIP:DMG: buffer_ptr = 187650284037616 - [1666955056.090105][6087:6087] CHIP:DMG: } - [1666955056.090157][6087:6087] CHIP:DMG: - [1666955056.090328][6087:6087] CHIP:DMG: ReportDataMessage = - [1666955056.090397][6087:6087] CHIP:DMG: { - [1666955056.090452][6087:6087] CHIP:DMG: AttributeReportIBs = - [1666955056.090530][6087:6087] CHIP:DMG: [ - [1666955056.090593][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955056.090687][6087:6087] CHIP:DMG: { - [1666955056.090808][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955056.090887][6087:6087] CHIP:DMG: { - [1666955056.090974][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955056.091058][6087:6087] CHIP:DMG: AttributePathIB = - [1666955056.091144][6087:6087] CHIP:DMG: { - [1666955056.091234][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955056.091328][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955056.091419][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666955056.091504][6087:6087] CHIP:DMG: } - [1666955056.091596][6087:6087] CHIP:DMG: - [1666955056.091686][6087:6087] CHIP:DMG: Data = 0, - [1666955056.091767][6087:6087] CHIP:DMG: }, - [1666955056.091856][6087:6087] CHIP:DMG: - [1666955056.091929][6087:6087] CHIP:DMG: }, - [1666955056.092008][6087:6087] CHIP:DMG: - [1666955056.092071][6087:6087] CHIP:DMG: ], - - - ./chip-tool temperaturemeasurement read attribute-list 1 1 - Verify DUT receives attribute-list attribute response on the TH(all-clusters-minimal-app) Log: - - [1666955301.631931][6087:6087] CHIP:EM: Handling via exchange: 47180r, Delegate: 0xaaaab0ad80e0 - [1666955301.632028][6087:6087] CHIP:IM: Received Read request - [1666955301.632199][6087:6087] CHIP:DMG: ReadRequestMessage = - [1666955301.632265][6087:6087] CHIP:DMG: { - [1666955301.632320][6087:6087] CHIP:DMG: AttributePathIBs = - [1666955301.632385][6087:6087] CHIP:DMG: [ - [1666955301.632447][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.632523][6087:6087] CHIP:DMG: { - [1666955301.632601][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.632684][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.632772][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.632854][6087:6087] CHIP:DMG: } - [1666955301.632931][6087:6087] CHIP:DMG: - [1666955301.633002][6087:6087] CHIP:DMG: ], - [1666955301.633073][6087:6087] CHIP:DMG: - [1666955301.633141][6087:6087] CHIP:DMG: isFabricFiltered = true, - [1666955301.633206][6087:6087] CHIP:DMG: InteractionModelRevision = 1 - [1666955301.633265][6087:6087] CHIP:DMG: }, - [1666955301.633433][6087:6087] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666955301.633656][6087:6087] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666955301.633729][6087:6087] CHIP:DMG: Cluster 402, Attribute fffb is dirty - [1666955301.633785][6087:6087] CHIP:DMG: Reading attribute: Cluster=0x0000_0402 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) - [1666955301.633849][6087:6087] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0402 e=1 p=v - [1666955301.633924][6087:6087] CHIP:DMG: AccessControl: allowed - [1666955301.634106][6087:6087] CHIP:DMG: Sending report (payload has 283 bytes)... - [1666955301.634781][6087:6087] CHIP:EM: <<< [E:47180r M:264855615 (Ack:241692066)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666955301.634883][6087:6087] CHIP:IN: (S) Sending msg 264855615 on secure session with LSID: 1278 - [1666955301.635623][6087:6087] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:49059 | 264855615 | [Interaction Model (1) / Report Data (0x05) / Session = 25182 / Exchange = 47180] - [1666955301.635718][6087:6087] CHIP:DMG: Header Flags = - [1666955301.635776][6087:6087] CHIP:DMG: { - [1666955301.635863][6087:6087] CHIP:DMG: Exchange (0x06) = - [1666955301.635919][6087:6087] CHIP:DMG: { - [1666955301.635979][6087:6087] CHIP:DMG: AckMsg = 241692066 - [1666955301.636034][6087:6087] CHIP:DMG: NeedsAck = true - [1666955301.636093][6087:6087] CHIP:DMG: } - [1666955301.636165][6087:6087] CHIP:DMG: } - [1666955301.636220][6087:6087] CHIP:DMG: - [1666955301.636288][6087:6087] CHIP:DMG: Encrypted Payload (317 bytes) = - [1666955301.636343][6087:6087] CHIP:DMG: { - [1666955301.636399][6087:6087] CHIP:DMG: data = 005e62003f60c90fa085c5efdb33678732930f363ecdcb1a14a818f3d0e4922d984374a5b24f4911f05027baa4ba57ad5e9cdd5c13e89854c6aa43aab11031b96294249f35b7a273fd77ec16354ed968bbb1ede503247e17267d38a1752a1439786e9644dfb5e2161ecd397e5e6017ce7bfe17cd7f7cbedf0bc058f51a9136c0cb8b20c43d69a7af9eb49164f4017674e2e6da38a7e2cf7b23f6505d88265ef05838884f1cdfc66a37116fd0bb060e276a58b5ef4f23c3d32df2fd9d407b700239852bb02415f4019bff097b0108ee91c06ef7b9c4561de3377d54afd95b5cdf9803eddca6e9ef2a546add7c9832494c20d07d1f91bb0b4588afc28256beebfb0ecd955858e918313b98e4cbaac3458fafe13ccdec893229c50f78732eaf5dfbb8e42fc9747e765937f59a36367892f493783d9184c0aba847cffed9a4 - [1666955301.636471][6087:6087] CHIP:DMG: buffer_ptr = 187650284042032 - [1666955301.636524][6087:6087] CHIP:DMG: } - [1666955301.636576][6087:6087] CHIP:DMG: - [1666955301.637014][6087:6087] CHIP:DMG: ReportDataMessage = - [1666955301.637245][6087:6087] CHIP:DMG: { - [1666955301.637303][6087:6087] CHIP:DMG: AttributeReportIBs = - [1666955301.637382][6087:6087] CHIP:DMG: [ - [1666955301.637444][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.637532][6087:6087] CHIP:DMG: { - [1666955301.637604][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.637692][6087:6087] CHIP:DMG: { - [1666955301.637768][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.637850][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.637942][6087:6087] CHIP:DMG: { - [1666955301.638037][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.638128][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.638226][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.638318][6087:6087] CHIP:DMG: } - [1666955301.638414][6087:6087] CHIP:DMG: - [1666955301.638498][6087:6087] CHIP:DMG: Data = [ - [1666955301.638587][6087:6087] CHIP:DMG: - [1666955301.638677][6087:6087] CHIP:DMG: ], - [1666955301.638784][6087:6087] CHIP:DMG: }, - [1666955301.638873][6087:6087] CHIP:DMG: - [1666955301.638945][6087:6087] CHIP:DMG: }, - [1666955301.639042][6087:6087] CHIP:DMG: - [1666955301.639104][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.639183][6087:6087] CHIP:DMG: { - [1666955301.639248][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.639335][6087:6087] CHIP:DMG: { - [1666955301.639417][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.639658][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.639755][6087:6087] CHIP:DMG: { - [1666955301.639841][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.639933][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.640025][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.640112][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.640195][6087:6087] CHIP:DMG: } - [1666955301.640283][6087:6087] CHIP:DMG: - [1666955301.640378][6087:6087] CHIP:DMG: Data = 0, - [1666955301.640457][6087:6087] CHIP:DMG: }, - [1666955301.640543][6087:6087] CHIP:DMG: - [1666955301.640613][6087:6087] CHIP:DMG: }, - [1666955301.640708][6087:6087] CHIP:DMG: - [1666955301.640770][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.640854][6087:6087] CHIP:DMG: { - [1666955301.640925][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.641012][6087:6087] CHIP:DMG: { - [1666955301.641102][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.641190][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.641274][6087:6087] CHIP:DMG: { - [1666955301.641367][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.641466][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.641558][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.641645][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.641730][6087:6087] CHIP:DMG: } - [1666955301.641825][6087:6087] CHIP:DMG: - [1666955301.641920][6087:6087] CHIP:DMG: Data = 1, - [1666955301.642000][6087:6087] CHIP:DMG: }, - [1666955301.642094][6087:6087] CHIP:DMG: - [1666955301.642164][6087:6087] CHIP:DMG: }, - [1666955301.642261][6087:6087] CHIP:DMG: - [1666955301.642323][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.642406][6087:6087] CHIP:DMG: { - [1666955301.642476][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.642557][6087:6087] CHIP:DMG: { - [1666955301.642645][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.642752][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.642842][6087:6087] CHIP:DMG: { - [1666955301.642934][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.643024][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.643115][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.643201][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.643294][6087:6087] CHIP:DMG: } - [1666955301.643383][6087:6087] CHIP:DMG: - [1666955301.643478][6087:6087] CHIP:DMG: Data = 2, - [1666955301.643564][6087:6087] CHIP:DMG: }, - [1666955301.643657][6087:6087] CHIP:DMG: - [1666955301.643722][6087:6087] CHIP:DMG: }, - [1666955301.643817][6087:6087] CHIP:DMG: - [1666955301.643879][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.643972][6087:6087] CHIP:DMG: { - [1666955301.644043][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.644120][6087:6087] CHIP:DMG: { - [1666955301.644208][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.644289][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.644372][6087:6087] CHIP:DMG: { - [1666955301.644465][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.644558][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.644648][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.644733][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.644821][6087:6087] CHIP:DMG: } - [1666955301.644909][6087:6087] CHIP:DMG: - [1666955301.644996][6087:6087] CHIP:DMG: Data = 65528, - [1666955301.645074][6087:6087] CHIP:DMG: }, - [1666955301.645168][6087:6087] CHIP:DMG: - [1666955301.645234][6087:6087] CHIP:DMG: }, - [1666955301.645323][6087:6087] CHIP:DMG: - [1666955301.645385][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.645465][6087:6087] CHIP:DMG: { - [1666955301.645535][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.645616][6087:6087] CHIP:DMG: { - [1666955301.645704][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.645785][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.645867][6087:6087] CHIP:DMG: { - [1666955301.645960][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.646052][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.646149][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.646234][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.646318][6087:6087] CHIP:DMG: } - [1666955301.646406][6087:6087] CHIP:DMG: - [1666955301.646500][6087:6087] CHIP:DMG: Data = 65529, - [1666955301.646586][6087:6087] CHIP:DMG: }, - [1666955301.646678][6087:6087] CHIP:DMG: - [1666955301.646777][6087:6087] CHIP:DMG: }, - [1666955301.646869][6087:6087] CHIP:DMG: - [1666955301.646932][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.647016][6087:6087] CHIP:DMG: { - [1666955301.647087][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.647172][6087:6087] CHIP:DMG: { - [1666955301.647376][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.647461][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.647545][6087:6087] CHIP:DMG: { - [1666955301.647631][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.647713][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.647812][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.647907][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.647994][6087:6087] CHIP:DMG: } - [1666955301.648082][6087:6087] CHIP:DMG: - [1666955301.648168][6087:6087] CHIP:DMG: Data = 65531, - [1666955301.648254][6087:6087] CHIP:DMG: }, - [1666955301.648338][6087:6087] CHIP:DMG: - [1666955301.648408][6087:6087] CHIP:DMG: }, - [1666955301.648503][6087:6087] CHIP:DMG: - [1666955301.648564][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.648649][6087:6087] CHIP:DMG: { - [1666955301.648714][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.648800][6087:6087] CHIP:DMG: { - [1666955301.648880][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.648961][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.649050][6087:6087] CHIP:DMG: { - [1666955301.649136][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.649226][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.649314][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.649401][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.649484][6087:6087] CHIP:DMG: } - [1666955301.649579][6087:6087] CHIP:DMG: - [1666955301.649804][6087:6087] CHIP:DMG: Data = 65532, - [1666955301.649887][6087:6087] CHIP:DMG: }, - [1666955301.649973][6087:6087] CHIP:DMG: - [1666955301.650043][6087:6087] CHIP:DMG: }, - [1666955301.650137][6087:6087] CHIP:DMG: - [1666955301.650198][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955301.650282][6087:6087] CHIP:DMG: { - [1666955301.650353][6087:6087] CHIP:DMG: AttributeDataIB = - [1666955301.650440][6087:6087] CHIP:DMG: { - [1666955301.650528][6087:6087] CHIP:DMG: DataVersion = 0xe31304a9, - [1666955301.650609][6087:6087] CHIP:DMG: AttributePathIB = - [1666955301.650693][6087:6087] CHIP:DMG: { - [1666955301.650840][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955301.650934][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955301.651032][6087:6087] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666955301.651126][6087:6087] CHIP:DMG: ListIndex = Null, - [1666955301.651219][6087:6087] CHIP:DMG: } - [1666955301.651308][6087:6087] CHIP:DMG: - [1666955301.651392][6087:6087] CHIP:DMG: Data = 65533, - [1666955301.651471][6087:6087] CHIP:DMG: }, - [1666955301.651558][6087:6087] CHIP:DMG: - [1666955301.651628][6087:6087] CHIP:DMG: }, - [1666955301.651708][6087:6087] CHIP:DMG: - [1666955301.651769][6087:6087] CHIP:DMG: ], - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - 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 temperaturemeasurement read tolerance 1 1 - - Verify DUT receives tolerence attribute response on the TH(all-clusters-minimal-app) Log: - - [1666955343.056928][6087:6087] CHIP:EM: Handling via exchange: 21936r, Delegate: 0xaaaab0ad80e0 - [1666955343.057022][6087:6087] CHIP:IM: Received Read request - [1666955343.057192][6087:6087] CHIP:DMG: ReadRequestMessage = - [1666955343.057258][6087:6087] CHIP:DMG: { - [1666955343.057313][6087:6087] CHIP:DMG: AttributePathIBs = - [1666955343.057378][6087:6087] CHIP:DMG: [ - [1666955343.057440][6087:6087] CHIP:DMG: AttributePathIB = - [1666955343.057515][6087:6087] CHIP:DMG: { - [1666955343.057649][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955343.057746][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955343.057820][6087:6087] CHIP:DMG: Attribute = 0x0000_0003, - [1666955343.057902][6087:6087] CHIP:DMG: } - [1666955343.057980][6087:6087] CHIP:DMG: - [1666955343.058050][6087:6087] CHIP:DMG: ], - [1666955343.058122][6087:6087] CHIP:DMG: - [1666955343.058256][6087:6087] CHIP:DMG: isFabricFiltered = true, - [1666955343.058325][6087:6087] CHIP:DMG: InteractionModelRevision = 1 - [1666955343.058385][6087:6087] CHIP:DMG: }, - [1666955343.058552][6087:6087] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666955343.058812][6087:6087] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666955343.058888][6087:6087] CHIP:DMG: Cluster 402, Attribute 3 is dirty - [1666955343.058943][6087:6087] CHIP:DMG: Reading attribute: Cluster=0x0000_0402 Endpoint=1 AttributeId=0x0000_0003 (expanded=0) - [1666955343.059055][6087:6087] CHIP:DMG: Sending report (payload has 34 bytes)... - [1666955343.059564][6087:6087] CHIP:EM: <<< [E:21936r M:135520016 (Ack:7304816)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666955343.059664][6087:6087] CHIP:IN: (S) Sending msg 135520016 on secure session with LSID: 1279 - [1666955343.060484][6087:6087] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:33713 | 135520016 | [Interaction Model (1) / Report Data (0x05) / Session = 15458 / Exchange = 21936] - [1666955343.060581][6087:6087] CHIP:DMG: Header Flags = - [1666955343.060638][6087:6087] CHIP:DMG: { - [1666955343.060725][6087:6087] CHIP:DMG: Exchange (0x06) = - [1666955343.060783][6087:6087] CHIP:DMG: { - [1666955343.060842][6087:6087] CHIP:DMG: AckMsg = 7304816 - [1666955343.060898][6087:6087] CHIP:DMG: NeedsAck = true - [1666955343.060952][6087:6087] CHIP:DMG: } - [1666955343.061024][6087:6087] CHIP:DMG: } - [1666955343.061079][6087:6087] CHIP:DMG: - [1666955343.061146][6087:6087] CHIP:DMG: Encrypted Payload (68 bytes) = - [1666955343.061201][6087:6087] CHIP:DMG: { - [1666955343.061256][6087:6087] CHIP:DMG: data = 00623c0010df1308fd3223e8f68f0d869707d560703cf1ab9c49624bdfa75abcf3c360a19db17c7f2a325e41b371932dbcbc9d41f2b617d0e98154f3d11f237da69cf343 - [1666955343.061314][6087:6087] CHIP:DMG: buffer_ptr = 187650284050608 - [1666955343.061368][6087:6087] CHIP:DMG: } - [1666955343.061420][6087:6087] CHIP:DMG: - [1666955343.061568][6087:6087] CHIP:DMG: ReportDataMessage = - [1666955343.061634][6087:6087] CHIP:DMG: { - [1666955343.061689][6087:6087] CHIP:DMG: AttributeReportIBs = - [1666955343.061774][6087:6087] CHIP:DMG: [ - [1666955343.061837][6087:6087] CHIP:DMG: AttributeReportIB = - [1666955343.061919][6087:6087] CHIP:DMG: { - [1666955343.061991][6087:6087] CHIP:DMG: AttributeStatusIB = - [1666955343.062082][6087:6087] CHIP:DMG: { - [1666955343.062167][6087:6087] CHIP:DMG: AttributePathIB = - [1666955343.062258][6087:6087] CHIP:DMG: { - [1666955343.062355][6087:6087] CHIP:DMG: Endpoint = 0x1, - [1666955343.062437][6087:6087] CHIP:DMG: Cluster = 0x402, - [1666955343.062528][6087:6087] CHIP:DMG: Attribute = 0x0000_0003, - [1666955343.062603][6087:6087] CHIP:DMG: } - [1666955343.062697][6087:6087] CHIP:DMG: - [1666955343.062822][6087:6087] CHIP:DMG: StatusIB = - [1666955343.062911][6087:6087] CHIP:DMG: { - [1666955343.062997][6087:6087] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1666955343.063081][6087:6087] CHIP:DMG: }, - [1666955343.063167][6087:6087] CHIP:DMG: - [1666955343.063236][6087:6087] CHIP:DMG: }, - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - 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 - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml index d43b6e8cf7cde1..0ec5d4dfe2d042 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml @@ -31,13 +31,27 @@ tests: - name: "nodeId" value: nodeId + #Issue: https://github.com/project-chip/connectedhomeip/issues/26601 - label: "Step 2: Read the global attribute: ClusterRevision" - command: "readAttribute" - attribute: "ClusterRevision" - response: - value: 5 - constraints: - type: int16u + verification: | + ./chip-tool thermostat read cluster-revision 1 1 + + On TH(chip-tool), verify that DUT responsds ClusterRevision attribute value as 6 + + [1654082369.006076][7829:7834] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_FFFD DataVersion: 2954689426 + [1654082369.006146][7829:7834] CHIP:TOO: ClusterRevision: 5 + [1654082369.006241][7829:7834] CHIP:EM: Sending Standalone Ack for MessageCounter:4310083 on exchange 63290i + + This log and comment are as per the latest sdk but the vaue is wrong https://github.com/project-chip/connectedhomeip/issues/26601 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_USER_PROMPT + arguments: + values: + - name: "message" + value: "Please enter 'y' for success" + - name: "expectedValue" + value: "y" - label: "Step 3a: Read the global attribute: FeatureMap" PICS: @@ -116,6 +130,17 @@ tests: type: bitmap32 hasMasksSet: [0x20] + - label: + "Step 3h: Given TSTAT.S.F06(LTNE) ensure featuremap has the correct + bit set" + PICS: TSTAT.S.F06 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x40] + - label: "Step 4a: Read the global attribute: AttributeList" PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" @@ -232,16 +257,318 @@ tests: type: list contains: [55, 56, 57] - - label: "Step 5a: Read the global attribute: AcceptedCommandList" + - label: "Step 4k: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0001 command: "readAttribute" - attribute: "AcceptedCommandList" + attribute: "AttributeList" response: constraints: type: list - contains: [0] + contains: [1] + + - label: "Step 4l: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0009 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [9] + + - label: "Step 4m: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0010 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [16] + + - label: "Step 4n: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A001a + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [26] + + - label: "Step 4o: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A001d + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [29] + + - label: "Step 4p: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0023 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [35] + + - label: "Step 4q: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0024 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [36] + + - label: "Step 4r: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0025 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [37] + + - label: "Step 4s: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0029 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [41] + + - label: "Step 4t: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0030 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [48] + + - label: "Step 4u: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0031 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [49] + + - label: "Step 4x: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0032 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [50] + + - label: "Step 5y: Read the optional attribute: AttributeList" + PICS: TSTAT.S.A003a + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [58] + + - label: "Step 4z: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0040 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [64] + + - label: "Step 4A: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0041 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [65] + + - label: "Step 4B: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0042 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [66] + + - label: "Step 4C: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0043 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [67] + + - label: "Step 5D: Read the optional attribute: AttributeList" + PICS: TSTAT.S.A0044 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [68] + + - label: "Step 4E: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0045 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [69] + + - label: "Step 4F: Read the optional attribute in AttributeList" + PICS: TSTAT.S.A0046 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [70] + + - label: "Step 5G: Read the optional attribute: AttributeList" + PICS: TSTAT.S.A0047 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [71] + + - label: + "Step 4H: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional + attribute in AttributeList" + PICS: TSTAT.S.F00 && TSTAT.S.A0003 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [3] + + - label: + "Step 4I: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional + attribute in AttributeList" + PICS: TSTAT.S.F00 && TSTAT.S.A0004 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [4] + + - label: + "Step 4J: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional + attribute in AttributeList" + PICS: TSTAT.S.F00 && TSTAT.S.A0008 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [8] + + - label: + "Step 4K: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional + attribute in AttributeList" + PICS: TSTAT.S.F00 && TSTAT.S.A0015 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [21] + + - label: + "Step 4L: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional + attribute in AttributeList" + PICS: TSTAT.S.F00 && TSTAT.S.A0016 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [22] + + - label: + "Step 4M: Read the Feature dependent(TSTAT.S.F01(COOL)) optional + attribute in AttributeList" + PICS: TSTAT.S.F01 && TSTAT.S.A0005 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [5] + + - label: + "Step 4N: Read the Feature dependent(TSTAT.S.F01(COOL)) optional + attribute in AttributeList" + PICS: TSTAT.S.F01 && TSTAT.S.A0007 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [6] + + - label: + "Step 4O: Read the Feature dependent(TSTAT.S.F01(COOL)) optional + attribute in AttributeList" + PICS: TSTAT.S.F01 && TSTAT.S.A0007 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [7] + + - label: + "Step 4P: Read the Feature dependent(TSTAT.S.F01(COOL)) optional + attribute in AttributeList" + PICS: TSTAT.S.F01 && TSTAT.S.A0017 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [23] + + - label: + "Step 4Q: Read the Feature dependent(TSTAT.S.F01(COOL)) optional + attribute in AttributeList" + PICS: TSTAT.S.F01 && TSTAT.S.A0018 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [24] - label: - "Step 5b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in + "Step 4R: Read the Feature dependent(TSTAT.S.F05(AUTO)) optional + attribute in AttributeList" + PICS: TSTAT.S.F05 && TSTAT.S.A001e + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [30] + + - label: + "Step 5a: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList" PICS: TSTAT.S.F03 command: "readAttribute" @@ -251,6 +578,15 @@ tests: type: list contains: [0, 1, 2, 3] + - label: "Step 5b: Read the optional attribute: AcceptedCommandList" + PICS: TSTAT.S.C04.Rsp + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [4] + - label: "Step 6a: Read the global attribute: GeneratedCommandList" PICS: " !TSTAT.S.C04.Rsp && !TSTAT.S.C02.Rsp " command: "readAttribute" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml deleted file mode 100644 index 2166efc583592e..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml +++ /dev/null @@ -1,979 +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: 41.3.1. [TC-TSTAT-3.1] Attributes with client as DUT - -PICS: - - TSTAT.C - - TSTAT.C.AM-READ - - TSTAT.C.AO-READ - - TSTAT.C.AM-WRITE - - TSTAT.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: - "Step 1: DUT reads all supported mandatory attributes from TH one at a - time in a manufacturer specific order" - PICS: TSTAT.C.AM-READ - 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 thermostat read local-temperature 1 1 - - Verify the ReadRequestMessage on TH(thermostat-app) - - [1666952132.254664][5523:5523] CHIP:EM: Handling via exchange: 45183r, Delegate: 0xaaaad0bf6d38 - [1666952132.254810][5523:5523] CHIP:IM: Received Read request - [1666952132.254984][5523:5523] CHIP:DMG: ReadRequestMessage = - [1666952132.255049][5523:5523] CHIP:DMG: { - [1666952132.255104][5523:5523] CHIP:DMG: AttributePathIBs = - [1666952132.255170][5523:5523] CHIP:DMG: [ - [1666952132.255231][5523:5523] CHIP:DMG: AttributePathIB = - [1666952132.255311][5523:5523] CHIP:DMG: { - [1666952132.255383][5523:5523] CHIP:DMG: Endpoint = 0x1, - [1666952132.255465][5523:5523] CHIP:DMG: Cluster = 0x201, - [1666952132.255552][5523:5523] CHIP:DMG: Attribute = 0x0000_0000, - [1666952132.255634][5523:5523] CHIP:DMG: } - [1666952132.255711][5523:5523] CHIP:DMG: - [1666952132.255939][5523:5523] CHIP:DMG: ], - [1666952132.256019][5523:5523] CHIP:DMG: - [1666952132.256086][5523:5523] CHIP:DMG: isFabricFiltered = true, - [1666952132.256150][5523:5523] CHIP:DMG: InteractionModelRevision = 1 - [1666952132.256209][5523:5523] CHIP:DMG: }, - [1666952132.256374][5523:5523] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952132.256579][5523:5523] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952132.256650][5523:5523] CHIP:DMG: Cluster 201, Attribute 0 is dirty - [1666952132.256704][5523:5523] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1666952132.256770][5523:5523] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666952132.256846][5523:5523] CHIP:DMG: AccessControl: allowed - [1666952132.256956][5523:5523] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666952132.257462][5523:5523] CHIP:EM: <<< [E:45183r M:211664667 (Ack:20415204)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666952132.257559][5523:5523] CHIP:IN: (S) Sending msg 211664667 on secure session with LSID: 58857 - [1666952132.258207][5523:5523] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:57054 | 211664667 | [Interaction Model (1) / Report Data (0x05) / Session = 30657 / Exchange = 45183] - [1666952132.258305][5523:5523] CHIP:DMG: Header Flags = - [1666952132.258362][5523:5523] CHIP:DMG: { - [1666952132.258450][5523:5523] CHIP:DMG: Exchange (0x06) = - [1666952132.258506][5523:5523] CHIP:DMG: { - [1666952132.258566][5523:5523] CHIP:DMG: AckMsg = 20415204 - [1666952132.258620][5523:5523] CHIP:DMG: NeedsAck = true - [1666952132.258674][5523:5523] CHIP:DMG: } - [1666952132.258795][5523:5523] CHIP:DMG: } - [1666952132.258854][5523:5523] CHIP:DMG: - [1666952132.258922][5523:5523] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666952132.258978][5523:5523] CHIP:DMG: { - [1666952132.259034][5523:5523] CHIP:DMG: data = 00c177001bbf9d0c8d034854664a7ad1e4d8a6e4d761fe52deb0e743e0c31922d77d53fe79bdb2ad8046791f6a61818db2b483479c011ab934bf0781e9f97d136c8b15e3fbc00f - [1666952132.259092][5523:5523] CHIP:DMG: buffer_ptr = 187651103265312 - [1666952132.259145][5523:5523] CHIP:DMG: } - [1666952132.259197][5523:5523] CHIP:DMG: - [1666952132.259352][5523:5523] CHIP:DMG: ReportDataMessage = - [1666952132.259419][5523:5523] CHIP:DMG: { - [1666952132.259472][5523:5523] CHIP:DMG: AttributeReportIBs = - [1666952132.259557][5523:5523] CHIP:DMG: [ - [1666952132.259619][5523:5523] CHIP:DMG: AttributeReportIB = - [1666952132.259699][5523:5523] CHIP:DMG: { - [1666952132.259769][5523:5523] CHIP:DMG: AttributeDataIB = - [1666952132.259856][5523:5523] CHIP:DMG: { - [1666952132.259941][5523:5523] CHIP:DMG: DataVersion = 0x20b42cf7, - [1666952132.260026][5523:5523] CHIP:DMG: AttributePathIB = - [1666952132.260109][5523:5523] CHIP:DMG: { - [1666952132.260197][5523:5523] CHIP:DMG: Endpoint = 0x1, - [1666952132.260294][5523:5523] CHIP:DMG: Cluster = 0x201, - [1666952132.260389][5523:5523] CHIP:DMG: Attribute = 0x0000_0000, - [1666952132.260465][5523:5523] CHIP:DMG: } - [1666952132.260537][5523:5523] CHIP:DMG: - [1666952132.260608][5523:5523] CHIP:DMG: Data = 0, - [1666952132.260671][5523:5523] CHIP:DMG: }, - [1666952132.260741][5523:5523] CHIP:DMG: - [1666952132.260805][5523:5523] CHIP:DMG: }, - [1666952132.260886][5523:5523] CHIP:DMG: - [1666952132.260947][5523:5523] CHIP:DMG: ], - - - - ./chip-tool thermostat read control-sequence-of-operation 1 1 - - - Verify the ReadRequestMessage on TH(thermostat-app) - - [1666952211.603156][5523:5523] CHIP:EM: Handling via exchange: 32228r, Delegate: 0xaaaad0bf6d38 - [1666952211.603251][5523:5523] CHIP:IM: Received Read request - [1666952211.603444][5523:5523] CHIP:DMG: ReadRequestMessage = - [1666952211.603512][5523:5523] CHIP:DMG: { - [1666952211.603592][5523:5523] CHIP:DMG: AttributePathIBs = - [1666952211.603658][5523:5523] CHIP:DMG: [ - [1666952211.603740][5523:5523] CHIP:DMG: AttributePathIB = - [1666952211.603818][5523:5523] CHIP:DMG: { - [1666952211.603917][5523:5523] CHIP:DMG: Endpoint = 0x1, - [1666952211.604002][5523:5523] CHIP:DMG: Cluster = 0x201, - [1666952211.604112][5523:5523] CHIP:DMG: Attribute = 0x0000_001B, - [1666952211.604197][5523:5523] CHIP:DMG: } - [1666952211.604297][5523:5523] CHIP:DMG: - [1666952211.604372][5523:5523] CHIP:DMG: ], - [1666952211.604464][5523:5523] CHIP:DMG: - [1666952211.604533][5523:5523] CHIP:DMG: isFabricFiltered = true, - [1666952211.604598][5523:5523] CHIP:DMG: InteractionModelRevision = 1 - [1666952211.604657][5523:5523] CHIP:DMG: }, - [1666952211.604851][5523:5523] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952211.605110][5523:5523] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952211.605181][5523:5523] CHIP:DMG: Cluster 201, Attribute 1b is dirty - [1666952211.605259][5523:5523] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_001B (expanded=0) - [1666952211.605329][5523:5523] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666952211.605404][5523:5523] CHIP:DMG: AccessControl: allowed - [1666952211.605514][5523:5523] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666952211.606307][5523:5523] CHIP:EM: <<< [E:32228r M:122580976 (Ack:109657417)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666952211.606407][5523:5523] CHIP:IN: (S) Sending msg 122580976 on secure session with LSID: 58858 - [1666952211.607192][5523:5523] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:59185 | 122580976 | [Interaction Model (1) / Report Data (0x05) / Session = 34789 / Exchange = 32228] - [1666952211.607290][5523:5523] CHIP:DMG: Header Flags = - [1666952211.607348][5523:5523] CHIP:DMG: { - [1666952211.607436][5523:5523] CHIP:DMG: Exchange (0x06) = - [1666952211.607491][5523:5523] CHIP:DMG: { - [1666952211.607551][5523:5523] CHIP:DMG: AckMsg = 109657417 - [1666952211.607637][5523:5523] CHIP:DMG: NeedsAck = true - [1666952211.607692][5523:5523] CHIP:DMG: } - [1666952211.607764][5523:5523] CHIP:DMG: } - [1666952211.607844][5523:5523] CHIP:DMG: - [1666952211.607912][5523:5523] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666952211.608153][5523:5523] CHIP:DMG: { - [1666952211.608217][5523:5523] CHIP:DMG: data = 00e58700f06f4e07aad692eabd077933fb8541496ae905808d17a81c3427464da89dc5f0d6bb92eedfca8a57e327fbb528f459b2636428a845bbc22a64e87328cb458a5dd459e1 - [1666952211.608274][5523:5523] CHIP:DMG: buffer_ptr = 187651103269664 - [1666952211.608327][5523:5523] CHIP:DMG: } - [1666952211.608378][5523:5523] CHIP:DMG: - [1666952211.608544][5523:5523] CHIP:DMG: ReportDataMessage = - [1666952211.608609][5523:5523] CHIP:DMG: { - [1666952211.608664][5523:5523] CHIP:DMG: AttributeReportIBs = - [1666952211.608748][5523:5523] CHIP:DMG: [ - [1666952211.608811][5523:5523] CHIP:DMG: AttributeReportIB = - [1666952211.608896][5523:5523] CHIP:DMG: { - [1666952211.608966][5523:5523] CHIP:DMG: AttributeDataIB = - [1666952211.609052][5523:5523] CHIP:DMG: { - [1666952211.609142][5523:5523] CHIP:DMG: DataVersion = 0x20b42cf7, - [1666952211.609224][5523:5523] CHIP:DMG: AttributePathIB = - [1666952211.609315][5523:5523] CHIP:DMG: { - [1666952211.609402][5523:5523] CHIP:DMG: Endpoint = 0x1, - [1666952211.609500][5523:5523] CHIP:DMG: Cluster = 0x201, - [1666952211.609589][5523:5523] CHIP:DMG: Attribute = 0x0000_001B, - [1666952211.609672][5523:5523] CHIP:DMG: } - [1666952211.609760][5523:5523] CHIP:DMG: - [1666952211.609848][5523:5523] CHIP:DMG: Data = 4, - [1666952211.609934][5523:5523] CHIP:DMG: }, - [1666952211.610017][5523:5523] CHIP:DMG: - [1666952211.610087][5523:5523] CHIP:DMG: }, - [1666952211.610167][5523:5523] CHIP:DMG: - [1666952211.610227][5523:5523] CHIP:DMG: ], - - - ./chip-tool thermostat read system-mode 1 1 - - Verify the ReadRequestMessage on TH(thermostat-app) - [1666952247.579164][5523:5523] CHIP:EM: Handling via exchange: 50210r, Delegate: 0xaaaad0bf6d38 - [1666952247.579281][5523:5523] CHIP:IM: Received Read request - [1666952247.579476][5523:5523] CHIP:DMG: ReadRequestMessage = - [1666952247.579543][5523:5523] CHIP:DMG: { - [1666952247.579625][5523:5523] CHIP:DMG: AttributePathIBs = - [1666952247.579691][5523:5523] CHIP:DMG: [ - [1666952247.579753][5523:5523] CHIP:DMG: AttributePathIB = - [1666952247.579830][5523:5523] CHIP:DMG: { - [1666952247.579928][5523:5523] CHIP:DMG: Endpoint = 0x1, - [1666952247.580019][5523:5523] CHIP:DMG: Cluster = 0x201, - [1666952247.580119][5523:5523] CHIP:DMG: Attribute = 0x0000_001C, - [1666952247.580201][5523:5523] CHIP:DMG: } - [1666952247.580299][5523:5523] CHIP:DMG: - [1666952247.580370][5523:5523] CHIP:DMG: ], - [1666952247.580440][5523:5523] CHIP:DMG: - [1666952247.580529][5523:5523] CHIP:DMG: isFabricFiltered = true, - [1666952247.580594][5523:5523] CHIP:DMG: InteractionModelRevision = 1 - [1666952247.580673][5523:5523] CHIP:DMG: }, - [1666952247.580869][5523:5523] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952247.581075][5523:5523] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952247.581171][5523:5523] CHIP:DMG: Cluster 201, Attribute 1c is dirty - [1666952247.581228][5523:5523] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_001C (expanded=0) - [1666952247.581294][5523:5523] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666952247.581397][5523:5523] CHIP:DMG: AccessControl: allowed - [1666952247.581509][5523:5523] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666952247.582161][5523:5523] CHIP:EM: <<< [E:50210r M:165064456 (Ack:89022834)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666952247.582273][5523:5523] CHIP:IN: (S) Sending msg 165064456 on secure session with LSID: 58859 - [1666952247.583141][5523:5523] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:56721 | 165064456 | [Interaction Model (1) / Report Data (0x05) / Session = 58238 / Exchange = 50210] - [1666952247.583242][5523:5523] CHIP:DMG: Header Flags = - [1666952247.583300][5523:5523] CHIP:DMG: { - [1666952247.583392][5523:5523] CHIP:DMG: Exchange (0x06) = - [1666952247.583448][5523:5523] CHIP:DMG: { - [1666952247.583508][5523:5523] CHIP:DMG: AckMsg = 89022834 - [1666952247.583592][5523:5523] CHIP:DMG: NeedsAck = true - [1666952247.583647][5523:5523] CHIP:DMG: } - [1666952247.583720][5523:5523] CHIP:DMG: } - [1666952247.583798][5523:5523] CHIP:DMG: - [1666952247.583867][5523:5523] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666952247.583923][5523:5523] CHIP:DMG: { - [1666952247.584002][5523:5523] CHIP:DMG: data = 007ee30008afd6097d214467e50b2d76866fd8607b4ce9b1edf46c7178b36f801076b9660a84298c1205a215dd5fb346203daaadd1d55a849de8778e02811b15cba9abdf49bdc8 - [1666952247.584060][5523:5523] CHIP:DMG: buffer_ptr = 187651103269840 - [1666952247.584114][5523:5523] CHIP:DMG: } - [1666952247.584190][5523:5523] CHIP:DMG: - [1666952247.584385][5523:5523] CHIP:DMG: ReportDataMessage = - [1666952247.584453][5523:5523] CHIP:DMG: { - [1666952247.584529][5523:5523] CHIP:DMG: AttributeReportIBs = - [1666952247.584610][5523:5523] CHIP:DMG: [ - [1666952247.584673][5523:5523] CHIP:DMG: AttributeReportIB = - [1666952247.584758][5523:5523] CHIP:DMG: { - [1666952247.584848][5523:5523] CHIP:DMG: AttributeDataIB = - [1666952247.584930][5523:5523] CHIP:DMG: { - [1666952247.585036][5523:5523] CHIP:DMG: DataVersion = 0x20b42cf7, - [1666952247.585118][5523:5523] CHIP:DMG: AttributePathIB = - [1666952247.585237][5523:5523] CHIP:DMG: { - [1666952247.585335][5523:5523] CHIP:DMG: Endpoint = 0x1, - [1666952247.585448][5523:5523] CHIP:DMG: Cluster = 0x201, - [1666952247.585537][5523:5523] CHIP:DMG: Attribute = 0x0000_001C, - [1666952247.585654][5523:5523] CHIP:DMG: } - [1666952247.585765][5523:5523] CHIP:DMG: - [1666952247.585856][5523:5523] CHIP:DMG: Data = 1, - [1666952247.585957][5523:5523] CHIP:DMG: }, - [1666952247.586053][5523:5523] CHIP:DMG: - [1666952247.586145][5523:5523] CHIP:DMG: }, - [1666952247.586229][5523:5523] CHIP:DMG: - [1666952247.586291][5523:5523] CHIP:DMG: ], - disabled: true - - - label: - "Step 2: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order" - PICS: TSTAT.C.AO-READ - verification: | - Most of optional attribute is not implemented in SDK - - - https://github.com/project-chip/connectedhomeip/issues/15626 - disabled: true - - - label: - "Step 3: DUT writes a suitable value to all supported mandatory - attributes on the TH one at a time in a manufacturer specific order" - PICS: TSTAT.C.AM-WRITE - 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 thermostat write system-mode 2 1 1 - - Verify the WriteRequestMessage on TH(thermostat-app) - - [1666952315.223166][5547:5547] CHIP:EM: Handling via exchange: 40014r, Delegate: 0xaaaabacd6d38 - [1666952315.223290][5547:5547] CHIP:IM: Received Write request - [1666952315.223349][5547:5547] CHIP:DMG: IM WH moving to [Initialized] - [1666952315.223501][5547:5547] CHIP:DMG: WriteRequestMessage = - [1666952315.223587][5547:5547] CHIP:DMG: { - [1666952315.223647][5547:5547] CHIP:DMG: suppressResponse = false, - [1666952315.223715][5547:5547] CHIP:DMG: timedRequest = false, - [1666952315.223799][5547:5547] CHIP:DMG: AttributeDataIBs = - [1666952315.223876][5547:5547] CHIP:DMG: [ - [1666952315.223938][5547:5547] CHIP:DMG: AttributeDataIB = - [1666952315.224046][5547:5547] CHIP:DMG: { - [1666952315.224118][5547:5547] CHIP:DMG: AttributePathIB = - [1666952315.224237][5547:5547] CHIP:DMG: { - [1666952315.224344][5547:5547] CHIP:DMG: Endpoint = 0x1, - [1666952315.224434][5547:5547] CHIP:DMG: Cluster = 0x201, - [1666952315.224548][5547:5547] CHIP:DMG: Attribute = 0x0000_001C, - [1666952315.224630][5547:5547] CHIP:DMG: } - [1666952315.224735][5547:5547] CHIP:DMG: - [1666952315.224822][5547:5547] CHIP:DMG: Data = 2, - [1666952315.224916][5547:5547] CHIP:DMG: }, - [1666952315.224999][5547:5547] CHIP:DMG: - [1666952315.225061][5547:5547] CHIP:DMG: ], - [1666952315.225156][5547:5547] CHIP:DMG: - [1666952315.225407][5547:5547] CHIP:DMG: moreChunkedMessages = false, - [1666952315.225499][5547:5547] CHIP:DMG: InteractionModelRevision = 1 - [1666952315.225558][5547:5547] CHIP:DMG: }, - [1666952315.225770][5547:5547] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=m - [1666952315.225877][5547:5547] CHIP:DMG: AccessControl: allowed - [1666952315.225993][5547:5547] CHIP:DMG: Endpoint 1, Cluster 0x0000_0201 update version to 26951d9b - [1666952315.226108][5547:5547] CHIP:DMG: IM WH moving to [AddStatus] - [1666952315.226827][5547:5547] CHIP:EM: <<< [E:40014r M:9653961 (Ack:42468606)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:07 (IM:WriteResponse) - [1666952315.226938][5547:5547] CHIP:IN: (S) Sending msg 9653961 on secure session with LSID: 64565 - [1666952315.227822][5547:5547] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:33368 | 9653961 | [Interaction Model (1) / Write Response (0x07) / Session = 53259 / Exchange = 40014] - [1666952315.227925][5547:5547] CHIP:DMG: Header Flags = - [1666952315.227983][5547:5547] CHIP:DMG: { - [1666952315.228073][5547:5547] CHIP:DMG: Exchange (0x06) = - [1666952315.228130][5547:5547] CHIP:DMG: { - [1666952315.228190][5547:5547] CHIP:DMG: AckMsg = 42468606 - [1666952315.228270][5547:5547] CHIP:DMG: NeedsAck = true - [1666952315.228327][5547:5547] CHIP:DMG: } - [1666952315.228402][5547:5547] CHIP:DMG: } - [1666952315.228485][5547:5547] CHIP:DMG: - [1666952315.228556][5547:5547] CHIP:DMG: Encrypted Payload (63 bytes) = - [1666952315.228614][5547:5547] CHIP:DMG: { - [1666952315.228693][5547:5547] CHIP:DMG: data = 000bd000c94e9300ba13b443ba129f21dda5c76aca803ace28abeb29f3026e08be154db2f5f310a70ad76121537736e6e5554a952c9b1180fec8c1c3660be6 - [1666952315.228751][5547:5547] CHIP:DMG: buffer_ptr = 187650847962096 - [1666952315.228805][5547:5547] CHIP:DMG: } - [1666952315.228878][5547:5547] CHIP:DMG: - [1666952315.229004][5547:5547] CHIP:DMG: WriteResponseMessage = - [1666952315.229073][5547:5547] CHIP:DMG: { - [1666952315.229127][5547:5547] CHIP:DMG: AttributeStatusIBs = - [1666952315.229206][5547:5547] CHIP:DMG: [ - [1666952315.229267][5547:5547] CHIP:DMG: AttributeStatusIB = - [1666952315.229349][5547:5547] CHIP:DMG: { - [1666952315.229424][5547:5547] CHIP:DMG: AttributePathIB = - [1666952315.229506][5547:5547] CHIP:DMG: { - [1666952315.229591][5547:5547] CHIP:DMG: Endpoint = 0x1, - [1666952315.229677][5547:5547] CHIP:DMG: Cluster = 0x201, - [1666952315.229764][5547:5547] CHIP:DMG: Attribute = 0x0000_001C, - [1666952315.229844][5547:5547] CHIP:DMG: } - [1666952315.229937][5547:5547] CHIP:DMG: - [1666952315.230015][5547:5547] CHIP:DMG: StatusIB = - [1666952315.230098][5547:5547] CHIP:DMG: { - [1666952315.230179][5547:5547] CHIP:DMG: status = 0x00 (SUCCESS), - [1666952315.230260][5547:5547] CHIP:DMG: }, - [1666952315.230340][5547:5547] CHIP:DMG: - [1666952315.230412][5547:5547] CHIP:DMG: }, - - - - - ./chip-tool thermostat write control-sequence-of-operation 1 1 1 - Verify the WriteRequestMessage on TH(thermostat-app) - - [1666952355.926940][5547:5547] CHIP:EM: Handling via exchange: 19955r, Delegate: 0xaaaabacd6d38 - [1666952355.927042][5547:5547] CHIP:IM: Received Write request - [1666952355.927101][5547:5547] CHIP:DMG: IM WH moving to [Initialized] - [1666952355.927258][5547:5547] CHIP:DMG: WriteRequestMessage = - [1666952355.927347][5547:5547] CHIP:DMG: { - [1666952355.927407][5547:5547] CHIP:DMG: suppressResponse = false, - [1666952355.927476][5547:5547] CHIP:DMG: timedRequest = false, - [1666952355.927563][5547:5547] CHIP:DMG: AttributeDataIBs = - [1666952355.927643][5547:5547] CHIP:DMG: [ - [1666952355.927706][5547:5547] CHIP:DMG: AttributeDataIB = - [1666952355.927789][5547:5547] CHIP:DMG: { - [1666952355.927859][5547:5547] CHIP:DMG: AttributePathIB = - [1666952355.927982][5547:5547] CHIP:DMG: { - [1666952355.928078][5547:5547] CHIP:DMG: Endpoint = 0x1, - [1666952355.928193][5547:5547] CHIP:DMG: Cluster = 0x201, - [1666952355.928292][5547:5547] CHIP:DMG: Attribute = 0x0000_001B, - [1666952355.928406][5547:5547] CHIP:DMG: } - [1666952355.928493][5547:5547] CHIP:DMG: - [1666952355.928610][5547:5547] CHIP:DMG: Data = 1, - [1666952355.928698][5547:5547] CHIP:DMG: }, - [1666952355.928802][5547:5547] CHIP:DMG: - [1666952355.928866][5547:5547] CHIP:DMG: ], - [1666952355.928940][5547:5547] CHIP:DMG: - [1666952355.929027][5547:5547] CHIP:DMG: moreChunkedMessages = false, - [1666952355.929092][5547:5547] CHIP:DMG: InteractionModelRevision = 1 - [1666952355.929179][5547:5547] CHIP:DMG: }, - [1666952355.929392][5547:5547] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=m - [1666952355.929479][5547:5547] CHIP:DMG: AccessControl: allowed - [1666952355.929592][5547:5547] CHIP:DMG: Endpoint 1, Cluster 0x0000_0201 update version to 26951d9c - [1666952355.929708][5547:5547] CHIP:DMG: IM WH moving to [AddStatus] - [1666952355.930385][5547:5547] CHIP:EM: <<< [E:19955r M:206996235 (Ack:164787467)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:07 (IM:WriteResponse) - [1666952355.930495][5547:5547] CHIP:IN: (S) Sending msg 206996235 on secure session with LSID: 64566 - [1666952355.931306][5547:5547] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:50950 | 206996235 | [Interaction Model (1) / Write Response (0x07) / Session = 54514 / Exchange = 19955] - [1666952355.931417][5547:5547] CHIP:DMG: Header Flags = - [1666952355.931476][5547:5547] CHIP:DMG: { - [1666952355.931566][5547:5547] CHIP:DMG: Exchange (0x06) = - [1666952355.931625][5547:5547] CHIP:DMG: { - [1666952355.931686][5547:5547] CHIP:DMG: AckMsg = 164787467 - [1666952355.931742][5547:5547] CHIP:DMG: NeedsAck = true - [1666952355.931797][5547:5547] CHIP:DMG: } - [1666952355.931897][5547:5547] CHIP:DMG: } - [1666952355.931954][5547:5547] CHIP:DMG: - [1666952355.932046][5547:5547] CHIP:DMG: Encrypted Payload (63 bytes) = - [1666952355.932104][5547:5547] CHIP:DMG: { - [1666952355.932160][5547:5547] CHIP:DMG: data = 00f2d4000b83560c39c00c331a1baabb444bf9962b11291cbd1d92449cb00ebf401dd998b1d4f268a51ad2591f11215b2592b676fe2d53587ad6c5c6b6722a - [1666952355.932217][5547:5547] CHIP:DMG: buffer_ptr = 187650847961312 - [1666952355.932272][5547:5547] CHIP:DMG: } - [1666952355.932351][5547:5547] CHIP:DMG: - [1666952355.932482][5547:5547] CHIP:DMG: WriteResponseMessage = - [1666952355.932573][5547:5547] CHIP:DMG: { - [1666952355.932628][5547:5547] CHIP:DMG: AttributeStatusIBs = - [1666952355.932729][5547:5547] CHIP:DMG: [ - [1666952355.932795][5547:5547] CHIP:DMG: AttributeStatusIB = - [1666952355.932877][5547:5547] CHIP:DMG: { - [1666952355.932972][5547:5547] CHIP:DMG: AttributePathIB = - [1666952355.933067][5547:5547] CHIP:DMG: { - [1666952355.933182][5547:5547] CHIP:DMG: Endpoint = 0x1, - [1666952355.933281][5547:5547] CHIP:DMG: Cluster = 0x201, - [1666952355.933404][5547:5547] CHIP:DMG: Attribute = 0x0000_001B, - [1666952355.933494][5547:5547] CHIP:DMG: } - [1666952355.933617][5547:5547] CHIP:DMG: - [1666952355.933707][5547:5547] CHIP:DMG: StatusIB = - [1666952355.933815][5547:5547] CHIP:DMG: { - [1666952355.933909][5547:5547] CHIP:DMG: status = 0x00 (SUCCESS), - [1666952355.934025][5547:5547] CHIP:DMG: }, - [1666952355.934117][5547:5547] CHIP:DMG: - [1666952355.934189][5547:5547] CHIP:DMG: }, - [1666952355.934304][5547:5547] CHIP:DMG: - [1666952355.934366][5547:5547] CHIP:DMG: ], - disabled: true - - - label: - "Step 4: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order" - PICS: TSTAT.C.AO-WRITE - verification: | - Verify by sending the optional attribute which is mentioned in spec - - Most of optional attribute is not implemented in SDK - disabled: true - - - label: - "Step 5: 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: | - 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) - To verify all below steps use all-clusters-minimal-app - - ./chip-tool thermostat read feature-map 1 1 - verify on TH(all-cluster-minimal-app) receives the Read Request Message - - [1666952645.116645][5988:5988] CHIP:EM: Handling via exchange: 48700r, Delegate: 0xaaaad96680e0 - [1666952645.116825][5988:5988] CHIP:IM: Received Read request - [1666952645.117083][5988:5988] CHIP:DMG: ReadRequestMessage = - [1666952645.117235][5988:5988] CHIP:DMG: { - [1666952645.117363][5988:5988] CHIP:DMG: AttributePathIBs = - [1666952645.117611][5988:5988] CHIP:DMG: [ - [1666952645.117805][5988:5988] CHIP:DMG: AttributePathIB = - [1666952645.118031][5988:5988] CHIP:DMG: { - [1666952645.118263][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666952645.118526][5988:5988] CHIP:DMG: Cluster = 0x201, - [1666952645.118930][5988:5988] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666952645.119197][5988:5988] CHIP:DMG: } - [1666952645.119429][5988:5988] CHIP:DMG: - [1666952645.119654][5988:5988] CHIP:DMG: ], - [1666952645.119856][5988:5988] CHIP:DMG: - [1666952645.120055][5988:5988] CHIP:DMG: isFabricFiltered = true, - [1666952645.120246][5988:5988] CHIP:DMG: InteractionModelRevision = 1 - [1666952645.120432][5988:5988] CHIP:DMG: }, - [1666952645.120684][5988:5988] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952645.121016][5988:5988] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952645.121177][5988:5988] CHIP:DMG: Cluster 201, Attribute fffc is dirty - [1666952645.121309][5988:5988] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1666952645.121454][5988:5988] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666952645.121605][5988:5988] CHIP:DMG: AccessControl: allowed - [1666952645.121808][5988:5988] CHIP:DMG: Sending report (payload has 38 bytes)... - [1666952645.122505][5988:5988] CHIP:EM: <<< [E:48700r M:122322767 (Ack:59445400)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666952645.122637][5988:5988] CHIP:IN: (S) Sending msg 122322767 on secure session with LSID: 10696 - [1666952645.123579][5988:5988] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:59359 | 122322767 | [Interaction Model (1) / Report Data (0x05) / Session = 64481 / Exchange = 48700] - [1666952645.123699][5988:5988] CHIP:DMG: Header Flags = - [1666952645.123761][5988:5988] CHIP:DMG: { - [1666952645.123855][5988:5988] CHIP:DMG: Exchange (0x06) = - [1666952645.123914][5988:5988] CHIP:DMG: { - [1666952645.123976][5988:5988] CHIP:DMG: AckMsg = 59445400 - [1666952645.124033][5988:5988] CHIP:DMG: NeedsAck = true - [1666952645.124088][5988:5988] CHIP:DMG: } - [1666952645.124163][5988:5988] CHIP:DMG: } - [1666952645.124211][5988:5988] CHIP:DMG: - [1666952645.124282][5988:5988] CHIP:DMG: Encrypted Payload (72 bytes) = - [1666952645.124340][5988:5988] CHIP:DMG: { - [1666952645.124398][5988:5988] CHIP:DMG: data = 00e1fb004f7f4a074bda6ee4183c1a50a28662f1c9f84586706ba9e4e4898ff69072838a343d12fad2c257b8a73bcc5eef3a63ce34c7450b8c51c12db004a68eafd1afa8c88ff6ca - [1666952645.124459][5988:5988] CHIP:DMG: buffer_ptr = 187650777052944 - [1666952645.124514][5988:5988] CHIP:DMG: } - [1666952645.124568][5988:5988] CHIP:DMG: - [1666952645.124742][5988:5988] CHIP:DMG: ReportDataMessage = - [1666952645.124814][5988:5988] CHIP:DMG: { - [1666952645.124872][5988:5988] CHIP:DMG: AttributeReportIBs = - [1666952645.124951][5988:5988] CHIP:DMG: [ - [1666952645.125016][5988:5988] CHIP:DMG: AttributeReportIB = - [1666952645.125107][5988:5988] CHIP:DMG: { - [1666952645.125181][5988:5988] CHIP:DMG: AttributeDataIB = - [1666952645.125272][5988:5988] CHIP:DMG: { - [1666952645.125367][5988:5988] CHIP:DMG: DataVersion = 0xdc2e5914, - [1666952645.125460][5988:5988] CHIP:DMG: AttributePathIB = - [1666952645.125554][5988:5988] CHIP:DMG: { - [1666952645.125652][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666952645.125753][5988:5988] CHIP:DMG: Cluster = 0x201, - [1666952645.125836][5988:5988] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666952645.125935][5988:5988] CHIP:DMG: } - [1666952645.126035][5988:5988] CHIP:DMG: - [1666952645.126134][5988:5988] CHIP:DMG: Data = 1, - [1666952645.126223][5988:5988] CHIP:DMG: }, - [1666952645.126310][5988:5988] CHIP:DMG: - [1666952645.126383][5988:5988] CHIP:DMG: }, - [1666952645.126467][5988:5988] CHIP:DMG: - - - ./chip-tool thermostat read attribute-list 1 1 - verify on TH(all-cluster-minimal-app) receives the Read Request Message - - [1666951258.078426][5466:5466] CHIP:EM: Handling via exchange: 13120r, Delegate: 0xaaaab26280e0 - [1666951258.078521][5466:5466] CHIP:IM: Received Read request - [1666951258.078689][5466:5466] CHIP:DMG: ReadRequestMessage = - [1666951258.078833][5466:5466] CHIP:DMG: { - [1666951258.078894][5466:5466] CHIP:DMG: AttributePathIBs = - [1666951258.078961][5466:5466] CHIP:DMG: [ - [1666951258.079023][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.079105][5466:5466] CHIP:DMG: { - [1666951258.079178][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.079268][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.079356][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.079438][5466:5466] CHIP:DMG: } - [1666951258.079517][5466:5466] CHIP:DMG: - [1666951258.079587][5466:5466] CHIP:DMG: ], - [1666951258.079658][5466:5466] CHIP:DMG: - [1666951258.079725][5466:5466] CHIP:DMG: isFabricFiltered = true, - [1666951258.079791][5466:5466] CHIP:DMG: InteractionModelRevision = 1 - [1666951258.079850][5466:5466] CHIP:DMG: }, - [1666951258.080022][5466:5466] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666951258.080237][5466:5466] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666951258.080310][5466:5466] CHIP:DMG: Cluster 201, Attribute fffb is dirty - [1666951258.080366][5466:5466] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_FFFB (expanded=0) - [1666951258.080430][5466:5466] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666951258.080506][5466:5466] CHIP:DMG: AccessControl: allowed - [1666951258.080690][5466:5466] CHIP:DMG: Sending report (payload has 313 bytes)... - [1666951258.081302][5466:5466] CHIP:EM: <<< [E:13120r M:26460859 (Ack:143052534)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666951258.081405][5466:5466] CHIP:IN: (S) Sending msg 26460859 on secure session with LSID: 45983 - [1666951258.082333][5466:5466] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%wlan0]:59536 | 26460859 | [Interaction Model (1) / Report Data (0x05) / Session = 40269 / Exchange = 13120] - [1666951258.082432][5466:5466] CHIP:DMG: Header Flags = - [1666951258.082490][5466:5466] CHIP:DMG: { - [1666951258.082577][5466:5466] CHIP:DMG: Exchange (0x06) = - [1666951258.082634][5466:5466] CHIP:DMG: { - [1666951258.082695][5466:5466] CHIP:DMG: AckMsg = 143052534 - [1666951258.082792][5466:5466] CHIP:DMG: NeedsAck = true - [1666951258.082848][5466:5466] CHIP:DMG: } - [1666951258.082920][5466:5466] CHIP:DMG: } - [1666951258.082976][5466:5466] CHIP:DMG: - [1666951258.083045][5466:5466] CHIP:DMG: Encrypted Payload (347 bytes) = - [1666951258.083100][5466:5466] CHIP:DMG: { - [1666951258.083155][5466:5466] CHIP:DMG: data = 004d9d00bbc29301194a6d83521606e6f1531417acbf717a18722f6d5200bc788506e7b07690cd42f23c3731f427415d294482395bd940ded7d98438041ae9fe5042d90a883bab2a9ca2a4b96ca2c3aa64508a6a50d819db68f58e17b5e011bad06e9302c05ba7682596074c05029edf4f5b1433230c16b709f683e2d88333867528db1bd800de3c563f83dc7afccf2b965d4864d8370028cadb90e438275fb34268d9493a76cdcfec3c2eeec55b3a986dcea555fbfeb44aba1393925b5e07181d612f24be3170a87a46f86398dc2a9cbeac3b338cea029e0eb23490aec479668569ba2d3ca12a8eecbd05ab26dedc4dcda11aba7a4ba9d8d36b2690a01b190f0627f4ba8f59ca2301c7ec7b8e3d5ac43fb73eeec6ccb1bf00c4d25a1fcd9838c2294da6ff9995b3bc059b873169d3fc6572eeda760f7f3c4cd72f813169afc7d1c3b2586833eff3c9f1f684606ebfa7e02a950b6d5d84ce8c9dcb - [1666951258.083229][5466:5466] CHIP:DMG: buffer_ptr = 187651008656048 - [1666951258.083282][5466:5466] CHIP:DMG: } - [1666951258.083334][5466:5466] CHIP:DMG: - [1666951258.083929][5466:5466] CHIP:DMG: ReportDataMessage = - [1666951258.084001][5466:5466] CHIP:DMG: { - [1666951258.084057][5466:5466] CHIP:DMG: AttributeReportIBs = - [1666951258.084145][5466:5466] CHIP:DMG: [ - [1666951258.084209][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.084295][5466:5466] CHIP:DMG: { - [1666951258.084367][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.084452][5466:5466] CHIP:DMG: { - [1666951258.084534][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.084624][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.084717][5466:5466] CHIP:DMG: { - [1666951258.084801][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.084894][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.085060][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.085153][5466:5466] CHIP:DMG: } - [1666951258.085242][5466:5466] CHIP:DMG: - [1666951258.085318][5466:5466] CHIP:DMG: Data = [ - [1666951258.085401][5466:5466] CHIP:DMG: - [1666951258.085497][5466:5466] CHIP:DMG: ], - [1666951258.085577][5466:5466] CHIP:DMG: }, - [1666951258.085664][5466:5466] CHIP:DMG: - [1666951258.085734][5466:5466] CHIP:DMG: }, - [1666951258.085831][5466:5466] CHIP:DMG: - [1666951258.085893][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.085977][5466:5466] CHIP:DMG: { - [1666951258.086049][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.086127][5466:5466] CHIP:DMG: { - [1666951258.086218][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.086306][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.086397][5466:5466] CHIP:DMG: { - [1666951258.086483][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.086582][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.086679][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.086889][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.086978][5466:5466] CHIP:DMG: } - [1666951258.087075][5466:5466] CHIP:DMG: - [1666951258.087171][5466:5466] CHIP:DMG: Data = 0, - [1666951258.087250][5466:5466] CHIP:DMG: }, - [1666951258.087331][5466:5466] CHIP:DMG: - [1666951258.087400][5466:5466] CHIP:DMG: }, - [1666951258.087497][5466:5466] CHIP:DMG: - [1666951258.087559][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.087644][5466:5466] CHIP:DMG: { - [1666951258.087723][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.087809][5466:5466] CHIP:DMG: { - [1666951258.087896][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.087978][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.088060][5466:5466] CHIP:DMG: { - [1666951258.088146][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.088245][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.088337][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.088428][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.088521][5466:5466] CHIP:DMG: } - [1666951258.088608][5466:5466] CHIP:DMG: - [1666951258.088695][5466:5466] CHIP:DMG: Data = 18, - [1666951258.088773][5466:5466] CHIP:DMG: }, - [1666951258.088860][5466:5466] CHIP:DMG: - [1666951258.088930][5466:5466] CHIP:DMG: }, - [1666951258.089026][5466:5466] CHIP:DMG: - [1666951258.089087][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.089171][5466:5466] CHIP:DMG: { - [1666951258.089323][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.089416][5466:5466] CHIP:DMG: { - [1666951258.089499][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.089573][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.089663][5466:5466] CHIP:DMG: { - [1666951258.089748][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.089837][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.089927][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.090013][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.090098][5466:5466] CHIP:DMG: } - [1666951258.090186][5466:5466] CHIP:DMG: - [1666951258.090273][5466:5466] CHIP:DMG: Data = 27, - [1666951258.090345][5466:5466] CHIP:DMG: }, - [1666951258.090431][5466:5466] CHIP:DMG: - [1666951258.090502][5466:5466] CHIP:DMG: }, - [1666951258.090607][5466:5466] CHIP:DMG: - [1666951258.090675][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.090788][5466:5466] CHIP:DMG: { - [1666951258.090941][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.091026][5466:5466] CHIP:DMG: { - [1666951258.091116][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.091190][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.091272][5466:5466] CHIP:DMG: { - [1666951258.091585][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.091690][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.091840][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.091924][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.092005][5466:5466] CHIP:DMG: } - [1666951258.092090][5466:5466] CHIP:DMG: - [1666951258.092176][5466:5466] CHIP:DMG: Data = 28, - [1666951258.092263][5466:5466] CHIP:DMG: }, - [1666951258.092351][5466:5466] CHIP:DMG: - [1666951258.092422][5466:5466] CHIP:DMG: }, - [1666951258.092519][5466:5466] CHIP:DMG: - [1666951258.092582][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.092668][5466:5466] CHIP:DMG: { - [1666951258.092740][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.092820][5466:5466] CHIP:DMG: { - [1666951258.092903][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.092984][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.093068][5466:5466] CHIP:DMG: { - [1666951258.093161][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.093253][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.093342][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.093429][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.093522][5466:5466] CHIP:DMG: } - [1666951258.093610][5466:5466] CHIP:DMG: - [1666951258.093696][5466:5466] CHIP:DMG: Data = 65528, - [1666951258.093776][5466:5466] CHIP:DMG: }, - [1666951258.094154][5466:5466] CHIP:DMG: - [1666951258.094233][5466:5466] CHIP:DMG: }, - [1666951258.094331][5466:5466] CHIP:DMG: - [1666951258.094476][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.094566][5466:5466] CHIP:DMG: { - [1666951258.094639][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.094799][5466:5466] CHIP:DMG: { - [1666951258.094888][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.095033][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.095133][5466:5466] CHIP:DMG: { - [1666951258.095220][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.095319][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.095416][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.095506][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.095654][5466:5466] CHIP:DMG: } - [1666951258.095742][5466:5466] CHIP:DMG: - [1666951258.095882][5466:5466] CHIP:DMG: Data = 65529, - [1666951258.095975][5466:5466] CHIP:DMG: }, - [1666951258.096063][5466:5466] CHIP:DMG: - [1666951258.096142][5466:5466] CHIP:DMG: }, - [1666951258.096242][5466:5466] CHIP:DMG: - [1666951258.096304][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.096397][5466:5466] CHIP:DMG: { - [1666951258.096477][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.096627][5466:5466] CHIP:DMG: { - [1666951258.096718][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.096799][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.096884][5466:5466] CHIP:DMG: { - [1666951258.096977][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.097069][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.097162][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.097248][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.097335][5466:5466] CHIP:DMG: } - [1666951258.097430][5466:5466] CHIP:DMG: - [1666951258.097516][5466:5466] CHIP:DMG: Data = 65531, - [1666951258.097661][5466:5466] CHIP:DMG: }, - [1666951258.097748][5466:5466] CHIP:DMG: - [1666951258.097818][5466:5466] CHIP:DMG: }, - [1666951258.097914][5466:5466] CHIP:DMG: - [1666951258.097976][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.098059][5466:5466] CHIP:DMG: { - [1666951258.098139][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.098218][5466:5466] CHIP:DMG: { - [1666951258.098292][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.098373][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.098457][5466:5466] CHIP:DMG: { - [1666951258.098542][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.098640][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.098758][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.098845][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.098928][5466:5466] CHIP:DMG: } - [1666951258.099017][5466:5466] CHIP:DMG: - [1666951258.099103][5466:5466] CHIP:DMG: Data = 65532, - [1666951258.099188][5466:5466] CHIP:DMG: }, - [1666951258.099274][5466:5466] CHIP:DMG: - [1666951258.099344][5466:5466] CHIP:DMG: }, - [1666951258.099438][5466:5466] CHIP:DMG: - [1666951258.099499][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951258.099582][5466:5466] CHIP:DMG: { - [1666951258.099653][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951258.099739][5466:5466] CHIP:DMG: { - [1666951258.099818][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951258.099899][5466:5466] CHIP:DMG: AttributePathIB = - [1666951258.099989][5466:5466] CHIP:DMG: { - [1666951258.100073][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951258.100171][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951258.100259][5466:5466] CHIP:DMG: Attribute = 0x0000_FFFB, - [1666951258.100353][5466:5466] CHIP:DMG: ListIndex = Null, - [1666951258.100443][5466:5466] CHIP:DMG: } - [1666951258.100538][5466:5466] CHIP:DMG: - [1666951258.100623][5466:5466] CHIP:DMG: Data = 65533, - [1666951258.100709][5466:5466] CHIP:DMG: }, - [1666951258.100795][5466:5466] CHIP:DMG: - [1666951258.100863][5466:5466] CHIP:DMG: }, - [1666951258.100940][5466:5466] CHIP:DMG: - [1666951258.101000][5466:5466] CHIP:DMG: ], - - - - - ./chip-tool thermostat read local-temperature 1 1 - verify on TH(all-cluster-minimal-app) receives the Read Request Message - - [1666951485.740766][5466:5466] CHIP:EM: Handling via exchange: 11893r, Delegate: 0xaaaab26280e0 - [1666951485.740865][5466:5466] CHIP:IM: Received Read request - [1666951485.741040][5466:5466] CHIP:DMG: ReadRequestMessage = - [1666951485.741108][5466:5466] CHIP:DMG: { - [1666951485.741163][5466:5466] CHIP:DMG: AttributePathIBs = - [1666951485.741229][5466:5466] CHIP:DMG: [ - [1666951485.741400][5466:5466] CHIP:DMG: AttributePathIB = - [1666951485.741488][5466:5466] CHIP:DMG: { - [1666951485.741569][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951485.741667][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951485.741750][5466:5466] CHIP:DMG: Attribute = 0x0000_0000, - [1666951485.741827][5466:5466] CHIP:DMG: } - [1666951485.742035][5466:5466] CHIP:DMG: - [1666951485.742115][5466:5466] CHIP:DMG: ], - [1666951485.742188][5466:5466] CHIP:DMG: - [1666951485.742258][5466:5466] CHIP:DMG: isFabricFiltered = true, - [1666951485.742324][5466:5466] CHIP:DMG: InteractionModelRevision = 1 - [1666951485.742383][5466:5466] CHIP:DMG: }, - [1666951485.742555][5466:5466] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666951485.743017][5466:5466] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666951485.743101][5466:5466] CHIP:DMG: Cluster 201, Attribute 0 is dirty - [1666951485.743158][5466:5466] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1666951485.743310][5466:5466] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666951485.743387][5466:5466] CHIP:DMG: AccessControl: allowed - [1666951485.743510][5466:5466] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666951485.744094][5466:5466] CHIP:EM: <<< [E:11893r M:246688943 (Ack:135368864)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666951485.744209][5466:5466] CHIP:IN: (S) Sending msg 246688943 on secure session with LSID: 45984 - [1666951485.744932][5466:5466] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:40236 | 246688943 | [Interaction Model (1) / Report Data (0x05) / Session = 16201 / Exchange = 11893] - [1666951485.745037][5466:5466] CHIP:DMG: Header Flags = - [1666951485.745096][5466:5466] CHIP:DMG: { - [1666951485.745187][5466:5466] CHIP:DMG: Exchange (0x06) = - [1666951485.745244][5466:5466] CHIP:DMG: { - [1666951485.745304][5466:5466] CHIP:DMG: AckMsg = 135368864 - [1666951485.745360][5466:5466] CHIP:DMG: NeedsAck = true - [1666951485.745414][5466:5466] CHIP:DMG: } - [1666951485.745487][5466:5466] CHIP:DMG: } - [1666951485.745542][5466:5466] CHIP:DMG: - [1666951485.745610][5466:5466] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666951485.745665][5466:5466] CHIP:DMG: { - [1666951485.745720][5466:5466] CHIP:DMG: data = 00493f00af2cb40e068c846db1feac48acc0f7d42291e7ab0758921068f9eea40375dc80ba3edc283a193f288e8820bcdd707b47b1bc1ac105ea01e423d92bfed065447dc3bb21 - [1666951485.745778][5466:5466] CHIP:DMG: buffer_ptr = 187651008656224 - [1666951485.745832][5466:5466] CHIP:DMG: } - [1666951485.745884][5466:5466] CHIP:DMG: - [1666951485.746048][5466:5466] CHIP:DMG: ReportDataMessage = - [1666951485.746117][5466:5466] CHIP:DMG: { - [1666951485.746172][5466:5466] CHIP:DMG: AttributeReportIBs = - [1666951485.746250][5466:5466] CHIP:DMG: [ - [1666951485.746312][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951485.746404][5466:5466] CHIP:DMG: { - [1666951485.746480][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951485.746564][5466:5466] CHIP:DMG: { - [1666951485.746776][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951485.746862][5466:5466] CHIP:DMG: AttributePathIB = - [1666951485.746950][5466:5466] CHIP:DMG: { - [1666951485.747041][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951485.747133][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951485.747224][5466:5466] CHIP:DMG: Attribute = 0x0000_0000, - [1666951485.747423][5466:5466] CHIP:DMG: } - [1666951485.747523][5466:5466] CHIP:DMG: - [1666951485.747617][5466:5466] CHIP:DMG: Data = 0, - [1666951485.747699][5466:5466] CHIP:DMG: }, - [1666951485.747786][5466:5466] CHIP:DMG: - [1666951485.747860][5466:5466] CHIP:DMG: }, - [1666951485.747945][5466:5466] CHIP:DMG: - [1666951485.748008][5466:5466] CHIP:DMG: ], - - - - ./chip-tool thermostat read control-sequence-of-operation 1 1 - - Verify the ReadRequestMessage on TH(all-cluster-minimal-app) - - [1666951649.029221][5466:5466] CHIP:EM: Handling via exchange: 52404r, Delegate: 0xaaaab26280e0 - [1666951649.029318][5466:5466] CHIP:IM: Received Read request - [1666951649.029488][5466:5466] CHIP:DMG: ReadRequestMessage = - [1666951649.029555][5466:5466] CHIP:DMG: { - [1666951649.029609][5466:5466] CHIP:DMG: AttributePathIBs = - [1666951649.029674][5466:5466] CHIP:DMG: [ - [1666951649.029736][5466:5466] CHIP:DMG: AttributePathIB = - [1666951649.029823][5466:5466] CHIP:DMG: { - [1666951649.029896][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951649.029985][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951649.030072][5466:5466] CHIP:DMG: Attribute = 0x0000_001B, - [1666951649.030149][5466:5466] CHIP:DMG: } - [1666951649.030227][5466:5466] CHIP:DMG: - [1666951649.030297][5466:5466] CHIP:DMG: ], - [1666951649.030369][5466:5466] CHIP:DMG: - [1666951649.030437][5466:5466] CHIP:DMG: isFabricFiltered = true, - [1666951649.030501][5466:5466] CHIP:DMG: InteractionModelRevision = 1 - [1666951649.030560][5466:5466] CHIP:DMG: }, - [1666951649.030781][5466:5466] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666951649.030999][5466:5466] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666951649.031072][5466:5466] CHIP:DMG: Cluster 201, Attribute 1b is dirty - [1666951649.031131][5466:5466] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_001B (expanded=0) - [1666951649.031199][5466:5466] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666951649.031275][5466:5466] CHIP:DMG: AccessControl: allowed - [1666951649.031392][5466:5466] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666951649.031898][5466:5466] CHIP:EM: <<< [E:52404r M:80802549 (Ack:174395409)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666951649.032001][5466:5466] CHIP:IN: (S) Sending msg 80802549 on secure session with LSID: 45985 - [1666951649.032653][5466:5466] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:37686 | 80802549 | [Interaction Model (1) / Report Data (0x05) / Session = 45395 / Exchange = 52404] - [1666951649.032750][5466:5466] CHIP:DMG: Header Flags = - [1666951649.032807][5466:5466] CHIP:DMG: { - [1666951649.032895][5466:5466] CHIP:DMG: Exchange (0x06) = - [1666951649.032951][5466:5466] CHIP:DMG: { - [1666951649.033010][5466:5466] CHIP:DMG: AckMsg = 174395409 - [1666951649.033065][5466:5466] CHIP:DMG: NeedsAck = true - [1666951649.033118][5466:5466] CHIP:DMG: } - [1666951649.033190][5466:5466] CHIP:DMG: } - [1666951649.033245][5466:5466] CHIP:DMG: - [1666951649.033310][5466:5466] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666951649.033365][5466:5466] CHIP:DMG: { - [1666951649.033419][5466:5466] CHIP:DMG: data = 0053b100f5f2d004f96a4d70c4b16122f251e4d299237245e6542fab668c2571f0b7aa5c4900c9af4e4f8c3e609ce74aa50968f953121b25ac374736a62e348ae61a263128350d - [1666951649.033477][5466:5466] CHIP:DMG: buffer_ptr = 187651008663600 - [1666951649.033529][5466:5466] CHIP:DMG: } - [1666951649.033581][5466:5466] CHIP:DMG: - [1666951649.033735][5466:5466] CHIP:DMG: ReportDataMessage = - [1666951649.033959][5466:5466] CHIP:DMG: { - [1666951649.034017][5466:5466] CHIP:DMG: AttributeReportIBs = - [1666951649.034097][5466:5466] CHIP:DMG: [ - [1666951649.034159][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951649.034246][5466:5466] CHIP:DMG: { - [1666951649.034318][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951649.034406][5466:5466] CHIP:DMG: { - [1666951649.034490][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951649.034572][5466:5466] CHIP:DMG: AttributePathIB = - [1666951649.034657][5466:5466] CHIP:DMG: { - [1666951649.034782][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951649.034885][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951649.034982][5466:5466] CHIP:DMG: Attribute = 0x0000_001B, - [1666951649.035068][5466:5466] CHIP:DMG: } - [1666951649.035157][5466:5466] CHIP:DMG: - [1666951649.035244][5466:5466] CHIP:DMG: Data = 4, - [1666951649.035323][5466:5466] CHIP:DMG: }, - [1666951649.035416][5466:5466] CHIP:DMG: - [1666951649.035486][5466:5466] CHIP:DMG: }, - [1666951649.035567][5466:5466] CHIP:DMG: - [1666951649.035629][5466:5466] CHIP:DMG: ], - - - ./chip-tool thermostat read system-mode 1 1 - - Verify the ReadRequestMessage on TH(all-clusters-app) - - [1666951722.178349][5466:5466] CHIP:EM: Handling via exchange: 21521r, Delegate: 0xaaaab26280e0 - [1666951722.178443][5466:5466] CHIP:IM: Received Read request - [1666951722.178611][5466:5466] CHIP:DMG: ReadRequestMessage = - [1666951722.178678][5466:5466] CHIP:DMG: { - [1666951722.178800][5466:5466] CHIP:DMG: AttributePathIBs = - [1666951722.178878][5466:5466] CHIP:DMG: [ - [1666951722.178950][5466:5466] CHIP:DMG: AttributePathIB = - [1666951722.179021][5466:5466] CHIP:DMG: { - [1666951722.179094][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951722.179322][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951722.179408][5466:5466] CHIP:DMG: Attribute = 0x0000_001C, - [1666951722.179490][5466:5466] CHIP:DMG: } - [1666951722.179572][5466:5466] CHIP:DMG: - [1666951722.179644][5466:5466] CHIP:DMG: ], - [1666951722.179715][5466:5466] CHIP:DMG: - [1666951722.179782][5466:5466] CHIP:DMG: isFabricFiltered = true, - [1666951722.179846][5466:5466] CHIP:DMG: InteractionModelRevision = 1 - [1666951722.179905][5466:5466] CHIP:DMG: }, - [1666951722.180070][5466:5466] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666951722.180283][5466:5466] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666951722.180355][5466:5466] CHIP:DMG: Cluster 201, Attribute 1c is dirty - [1666951722.180410][5466:5466] CHIP:DMG: Reading attribute: Cluster=0x0000_0201 Endpoint=1 AttributeId=0x0000_001C (expanded=0) - [1666951722.180477][5466:5466] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0201 e=1 p=v - [1666951722.180552][5466:5466] CHIP:DMG: AccessControl: allowed - [1666951722.180666][5466:5466] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666951722.181184][5466:5466] CHIP:EM: <<< [E:21521r M:214108728 (Ack:40689834)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666951722.181285][5466:5466] CHIP:IN: (S) Sending msg 214108728 on secure session with LSID: 45986 - [1666951722.181932][5466:5466] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:34735 | 214108728 | [Interaction Model (1) / Report Data (0x05) / Session = 17453 / Exchange = 21521] - [1666951722.182029][5466:5466] CHIP:DMG: Header Flags = - [1666951722.182087][5466:5466] CHIP:DMG: { - [1666951722.182176][5466:5466] CHIP:DMG: Exchange (0x06) = - [1666951722.182232][5466:5466] CHIP:DMG: { - [1666951722.182292][5466:5466] CHIP:DMG: AckMsg = 40689834 - [1666951722.182348][5466:5466] CHIP:DMG: NeedsAck = true - [1666951722.182412][5466:5466] CHIP:DMG: } - [1666951722.182485][5466:5466] CHIP:DMG: } - [1666951722.182540][5466:5466] CHIP:DMG: - [1666951722.182609][5466:5466] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666951722.182665][5466:5466] CHIP:DMG: { - [1666951722.182755][5466:5466] CHIP:DMG: data = 002d4400380ac30cae2c21e379f109decb71da8dc524b60de5152814b3d68a18cd13cf300991a58665898f260bcf99b588f9b77f2d11ee591b91ac16c48364267779b65ccd7eb8 - [1666951722.182819][5466:5466] CHIP:DMG: buffer_ptr = 187651008665008 - [1666951722.182872][5466:5466] CHIP:DMG: } - [1666951722.182924][5466:5466] CHIP:DMG: - [1666951722.183085][5466:5466] CHIP:DMG: ReportDataMessage = - [1666951722.183151][5466:5466] CHIP:DMG: { - [1666951722.183205][5466:5466] CHIP:DMG: AttributeReportIBs = - [1666951722.183288][5466:5466] CHIP:DMG: [ - [1666951722.183350][5466:5466] CHIP:DMG: AttributeReportIB = - [1666951722.183436][5466:5466] CHIP:DMG: { - [1666951722.183510][5466:5466] CHIP:DMG: AttributeDataIB = - [1666951722.183583][5466:5466] CHIP:DMG: { - [1666951722.183672][5466:5466] CHIP:DMG: DataVersion = 0x5f8a90b0, - [1666951722.183754][5466:5466] CHIP:DMG: AttributePathIB = - [1666951722.183838][5466:5466] CHIP:DMG: { - [1666951722.183926][5466:5466] CHIP:DMG: Endpoint = 0x1, - [1666951722.184024][5466:5466] CHIP:DMG: Cluster = 0x201, - [1666951722.184115][5466:5466] CHIP:DMG: Attribute = 0x0000_001C, - [1666951722.184208][5466:5466] CHIP:DMG: } - [1666951722.184306][5466:5466] CHIP:DMG: - [1666951722.184402][5466:5466] CHIP:DMG: Data = 1, - [1666951722.184482][5466:5466] CHIP:DMG: }, - [1666951722.184575][5466:5466] CHIP:DMG: - [1666951722.184646][5466:5466] CHIP:DMG: }, - [1666951722.184726][5466:5466] CHIP:DMG: - [1666951722.184788][5466:5466] CHIP:DMG: ], - disabled: true - - - label: - "Step 6: DUT reads all supported optional attributes from TH one at a - time in a manufacturer specific order" - PICS: TSTAT.C.AO-READ - verification: | - Verify by sending the optional attribute which is mentioned in spec - - Most of optional attribute is not implemented in SDK - disabled: true - - - label: - "Step 7: DUT writes a suitable value to all supported optional - attributes on the TH one at a time in a manufacturer specific order" - PICS: TSTAT.C.AO-WRITE - verification: | - Verify by sending the optional attribute which is mentioned in spec - - Most of optional attribute is not implemented in SDK - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1_Simulated.yaml deleted file mode 100644 index dd1aa9b26296bb..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1_Simulated.yaml +++ /dev/null @@ -1,635 +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: 12.3.1. [TC-TSUIC-3.1] Attributes with client as DUT - -PICS: - - TSUIC.C - - TSUIC.C.AM-READ - - TSUIC.C.AO-READ - - TSUIC.C.AM-WRITE - - TSUIC.C.AO-WRITE - -config: - nodeId: 0x12344321 - cluster: "Thermostat User Interface Configuration" - endpoint: 0 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "DUT reads TemperatureDisplayMode attribute from TH" - wait: "readAttribute" - attribute: "TemperatureDisplayMode" - - - label: "DUT reads KeypadLockout attribute from TH" - wait: "readAttribute" - attribute: "KeypadLockout" - - - label: "DUT reads ScheduleProgrammingVisibility attribute from TH" - wait: "readAttribute" - attribute: "ScheduleProgrammingVisibility" - - - label: "DUT writes TemperatureDisplayMode attribute from TH" - wait: "writeAttribute" - attribute: "TemperatureDisplayMode" - arguments: - value: - - - label: "DUT writes KeypadLockout attribute from TH" - wait: "writeAttribute" - attribute: "KeypadLockout" - arguments: - value: - - - label: "DUT writes ScheduleProgrammingVisibility attribute from TH" - wait: "writeAttribute" - attribute: "ScheduleProgrammingVisibility" - arguments: - value: - - - 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: | - 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 thermostatuserinterfaceconfiguration read temperature-display-mode 1 1 - Verify DUT receives temperature-display-mode attribute response on the TH(all-clusters-minimal-app) Log: - - [1666952907.484910][5988:5988] CHIP:EM: Handling via exchange: 55230r, Delegate: 0xaaaad96680e0 - [1666952907.485012][5988:5988] CHIP:IM: Received Read request - [1666952907.485181][5988:5988] CHIP:DMG: ReadRequestMessage = - [1666952907.485247][5988:5988] CHIP:DMG: { - [1666952907.485298][5988:5988] CHIP:DMG: AttributePathIBs = - [1666952907.485363][5988:5988] CHIP:DMG: [ - [1666952907.485425][5988:5988] CHIP:DMG: AttributePathIB = - [1666952907.485499][5988:5988] CHIP:DMG: { - [1666952907.485577][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666952907.485654][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666952907.485743][5988:5988] CHIP:DMG: Attribute = 0x0000_0000, - [1666952907.485825][5988:5988] CHIP:DMG: } - [1666952907.485957][5988:5988] CHIP:DMG: - [1666952907.486032][5988:5988] CHIP:DMG: ], - [1666952907.486105][5988:5988] CHIP:DMG: - [1666952907.486173][5988:5988] CHIP:DMG: isFabricFiltered = true, - [1666952907.486237][5988:5988] CHIP:DMG: InteractionModelRevision = 1 - [1666952907.486296][5988:5988] CHIP:DMG: }, - [1666952907.486459][5988:5988] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952907.486859][5988:5988] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952907.486933][5988:5988] CHIP:DMG: Cluster 204, Attribute 0 is dirty - [1666952907.486988][5988:5988] CHIP:DMG: Reading attribute: Cluster=0x0000_0204 Endpoint=1 AttributeId=0x0000_0000 (expanded=0) - [1666952907.487056][5988:5988] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0204 e=1 p=v - [1666952907.487130][5988:5988] CHIP:DMG: AccessControl: allowed - [1666952907.487245][5988:5988] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666952907.487768][5988:5988] CHIP:EM: <<< [E:55230r M:41825397 (Ack:212794457)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666952907.487871][5988:5988] CHIP:IN: (S) Sending msg 41825397 on secure session with LSID: 10697 - [1666952907.488513][5988:5988] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:53323 | 41825397 | [Interaction Model (1) / Report Data (0x05) / Session = 25917 / Exchange = 55230] - [1666952907.488608][5988:5988] CHIP:DMG: Header Flags = - [1666952907.488665][5988:5988] CHIP:DMG: { - [1666952907.488754][5988:5988] CHIP:DMG: Exchange (0x06) = - [1666952907.488810][5988:5988] CHIP:DMG: { - [1666952907.488871][5988:5988] CHIP:DMG: AckMsg = 212794457 - [1666952907.488927][5988:5988] CHIP:DMG: NeedsAck = true - [1666952907.488980][5988:5988] CHIP:DMG: } - [1666952907.489052][5988:5988] CHIP:DMG: } - [1666952907.489107][5988:5988] CHIP:DMG: - [1666952907.489174][5988:5988] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666952907.489229][5988:5988] CHIP:DMG: { - [1666952907.489284][5988:5988] CHIP:DMG: data = 003d650075347e020776c6e49e846255494afb7162d53375ec47e3a81865d9dfed7bd0d3b81c282e6d345a46b6f7188f38a62af2bf68f61d7a2e93bdb8b638416d20b1afe793b1 - [1666952907.489342][5988:5988] CHIP:DMG: buffer_ptr = 187650777049920 - [1666952907.489395][5988:5988] CHIP:DMG: } - [1666952907.489446][5988:5988] CHIP:DMG: - [1666952907.489604][5988:5988] CHIP:DMG: ReportDataMessage = - [1666952907.489670][5988:5988] CHIP:DMG: { - [1666952907.489724][5988:5988] CHIP:DMG: AttributeReportIBs = - [1666952907.489807][5988:5988] CHIP:DMG: [ - [1666952907.489869][5988:5988] CHIP:DMG: AttributeReportIB = - [1666952907.489948][5988:5988] CHIP:DMG: { - [1666952907.490153][5988:5988] CHIP:DMG: AttributeDataIB = - [1666952907.490246][5988:5988] CHIP:DMG: { - [1666952907.490331][5988:5988] CHIP:DMG: DataVersion = 0x97fedc88, - [1666952907.490412][5988:5988] CHIP:DMG: AttributePathIB = - [1666952907.490496][5988:5988] CHIP:DMG: { - [1666952907.490583][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666952907.490681][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666952907.490841][5988:5988] CHIP:DMG: Attribute = 0x0000_0000, - [1666952907.490919][5988:5988] CHIP:DMG: } - [1666952907.491017][5988:5988] CHIP:DMG: - [1666952907.491104][5988:5988] CHIP:DMG: Data = 0, - [1666952907.491182][5988:5988] CHIP:DMG: }, - [1666952907.491276][5988:5988] CHIP:DMG: - [1666952907.491346][5988:5988] CHIP:DMG: }, - - - - ./chip-tool thermostatuserinterfaceconfiguration read keypad-lockout 1 1 - Verify DUT receives keypad-lockout attribute response on the TH(all-clusters-minimal-app) Log: - - [1666952951.992449][5988:5988] CHIP:EM: Handling via exchange: 31337r, Delegate: 0xaaaad96680e0 - [1666952951.992544][5988:5988] CHIP:IM: Received Read request - [1666952951.992711][5988:5988] CHIP:DMG: ReadRequestMessage = - [1666952951.992778][5988:5988] CHIP:DMG: { - [1666952951.992824][5988:5988] CHIP:DMG: AttributePathIBs = - [1666952951.992880][5988:5988] CHIP:DMG: [ - [1666952951.992950][5988:5988] CHIP:DMG: AttributePathIB = - [1666952951.993026][5988:5988] CHIP:DMG: { - [1666952951.993105][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666952951.993195][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666952951.993284][5988:5988] CHIP:DMG: Attribute = 0x0000_0001, - [1666952951.993366][5988:5988] CHIP:DMG: } - [1666952951.993444][5988:5988] CHIP:DMG: - [1666952951.993509][5988:5988] CHIP:DMG: ], - [1666952951.993592][5988:5988] CHIP:DMG: - [1666952951.993660][5988:5988] CHIP:DMG: isFabricFiltered = true, - [1666952951.993724][5988:5988] CHIP:DMG: InteractionModelRevision = 1 - [1666952951.993783][5988:5988] CHIP:DMG: }, - [1666952951.993951][5988:5988] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666952951.994166][5988:5988] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666952951.994239][5988:5988] CHIP:DMG: Cluster 204, Attribute 1 is dirty - [1666952951.994294][5988:5988] CHIP:DMG: Reading attribute: Cluster=0x0000_0204 Endpoint=1 AttributeId=0x0000_0001 (expanded=0) - [1666952951.994363][5988:5988] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0204 e=1 p=v - [1666952951.994439][5988:5988] CHIP:DMG: AccessControl: allowed - [1666952951.994556][5988:5988] CHIP:DMG: Sending report (payload has 37 bytes)... - [1666952951.995160][5988:5988] CHIP:EM: <<< [E:31337r M:163238133 (Ack:50767302)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666952951.995264][5988:5988] CHIP:IN: (S) Sending msg 163238133 on secure session with LSID: 10698 - [1666952951.995933][5988:5988] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:58247 | 163238133 | [Interaction Model (1) / Report Data (0x05) / Session = 7537 / Exchange = 31337] - [1666952951.996031][5988:5988] CHIP:DMG: Header Flags = - [1666952951.996088][5988:5988] CHIP:DMG: { - [1666952951.996177][5988:5988] CHIP:DMG: Exchange (0x06) = - [1666952951.996234][5988:5988] CHIP:DMG: { - [1666952951.996294][5988:5988] CHIP:DMG: AckMsg = 50767302 - [1666952951.996350][5988:5988] CHIP:DMG: NeedsAck = true - [1666952951.996404][5988:5988] CHIP:DMG: } - [1666952951.996477][5988:5988] CHIP:DMG: } - [1666952951.996533][5988:5988] CHIP:DMG: - [1666952951.996599][5988:5988] CHIP:DMG: Encrypted Payload (71 bytes) = - [1666952951.996655][5988:5988] CHIP:DMG: { - [1666952951.996711][5988:5988] CHIP:DMG: data = 00711d00f5d0ba0905d1ce49007c130f1c76302873da95826c5bbbadebfad86b93a5b9a743e3a29b5dd500582640433c06f3f22159b09129938868c073478e30209ebdbeddc96b - [1666952951.996932][5988:5988] CHIP:DMG: buffer_ptr = 187650777054064 - [1666952951.996990][5988:5988] CHIP:DMG: } - [1666952951.997042][5988:5988] CHIP:DMG: - [1666952951.997203][5988:5988] CHIP:DMG: ReportDataMessage = - [1666952951.997270][5988:5988] CHIP:DMG: { - [1666952951.997325][5988:5988] CHIP:DMG: AttributeReportIBs = - [1666952951.997400][5988:5988] CHIP:DMG: [ - [1666952951.997462][5988:5988] CHIP:DMG: AttributeReportIB = - [1666952951.997549][5988:5988] CHIP:DMG: { - [1666952951.997615][5988:5988] CHIP:DMG: AttributeDataIB = - [1666952951.997692][5988:5988] CHIP:DMG: { - [1666952951.997781][5988:5988] CHIP:DMG: DataVersion = 0x97fedc88, - [1666952951.997856][5988:5988] CHIP:DMG: AttributePathIB = - [1666952951.997946][5988:5988] CHIP:DMG: { - [1666952951.998041][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666952951.998132][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666952951.998227][5988:5988] CHIP:DMG: Attribute = 0x0000_0001, - [1666952951.998319][5988:5988] CHIP:DMG: } - [1666952951.998414][5988:5988] CHIP:DMG: - [1666952951.998503][5988:5988] CHIP:DMG: Data = 0, - [1666952951.998582][5988:5988] CHIP:DMG: }, - [1666952951.998666][5988:5988] CHIP:DMG: - [1666952951.998772][5988:5988] CHIP:DMG: }, - [1666952951.998858][5988:5988] CHIP:DMG: - [1666952951.998925][5988:5988] CHIP:DMG: ], - - - ./chip-tool thermostatuserinterfaceconfiguration read feature-map 1 1 - Verify DUT receives feature-map attribute response on the TH(all-clusters-minimal-app) Log: - - [1666953011.987486][5988:5988] CHIP:EM: Handling via exchange: 41581r, Delegate: 0xaaaad96680e0 - [1666953011.987582][5988:5988] CHIP:IM: Received Read request - [1666953011.987754][5988:5988] CHIP:DMG: ReadRequestMessage = - [1666953011.987820][5988:5988] CHIP:DMG: { - [1666953011.987875][5988:5988] CHIP:DMG: AttributePathIBs = - [1666953011.987940][5988:5988] CHIP:DMG: [ - [1666953011.988002][5988:5988] CHIP:DMG: AttributePathIB = - [1666953011.988140][5988:5988] CHIP:DMG: { - [1666953011.988218][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666953011.988315][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666953011.988399][5988:5988] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666953011.988476][5988:5988] CHIP:DMG: } - [1666953011.988557][5988:5988] CHIP:DMG: - [1666953011.988630][5988:5988] CHIP:DMG: ], - [1666953011.988703][5988:5988] CHIP:DMG: - [1666953011.988771][5988:5988] CHIP:DMG: isFabricFiltered = true, - [1666953011.988837][5988:5988] CHIP:DMG: InteractionModelRevision = 1 - [1666953011.988895][5988:5988] CHIP:DMG: }, - [1666953011.989066][5988:5988] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666953011.989956][5988:5988] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666953011.990037][5988:5988] CHIP:DMG: Cluster 204, Attribute fffc is dirty - [1666953011.990096][5988:5988] CHIP:DMG: Reading attribute: Cluster=0x0000_0204 Endpoint=1 AttributeId=0x0000_FFFC (expanded=0) - [1666953011.990167][5988:5988] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0204 e=1 p=v - [1666953011.990245][5988:5988] CHIP:DMG: AccessControl: allowed - [1666953011.990366][5988:5988] CHIP:DMG: Sending report (payload has 38 bytes)... - [1666953011.991110][5988:5988] CHIP:EM: <<< [E:41581r M:126419151 (Ack:121750119)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666953011.991234][5988:5988] CHIP:IN: (S) Sending msg 126419151 on secure session with LSID: 10699 - [1666953011.991978][5988:5988] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:51918 | 126419151 | [Interaction Model (1) / Report Data (0x05) / Session = 4917 / Exchange = 41581] - [1666953011.992080][5988:5988] CHIP:DMG: Header Flags = - [1666953011.992141][5988:5988] CHIP:DMG: { - [1666953011.992223][5988:5988] CHIP:DMG: Exchange (0x06) = - [1666953011.992270][5988:5988] CHIP:DMG: { - [1666953011.992334][5988:5988] CHIP:DMG: AckMsg = 121750119 - [1666953011.992393][5988:5988] CHIP:DMG: NeedsAck = true - [1666953011.992449][5988:5988] CHIP:DMG: } - [1666953011.992523][5988:5988] CHIP:DMG: } - [1666953011.992578][5988:5988] CHIP:DMG: - [1666953011.992648][5988:5988] CHIP:DMG: Encrypted Payload (72 bytes) = - [1666953011.992704][5988:5988] CHIP:DMG: { - [1666953011.992760][5988:5988] CHIP:DMG: data = 00351300cf0089075485011d70effa9c929aff24c827bbf7a3c248a568ad130358506703e7b2bab3a825a30775202aee61f0ac21a9f3de9f2d64cb1cb4f9fa2fb10449d125921408 - [1666953011.992818][5988:5988] CHIP:DMG: buffer_ptr = 187650777054672 - [1666953011.992872][5988:5988] CHIP:DMG: } - [1666953011.993094][5988:5988] CHIP:DMG: - [1666953011.993274][5988:5988] CHIP:DMG: ReportDataMessage = - [1666953011.993332][5988:5988] CHIP:DMG: { - [1666953011.993378][5988:5988] CHIP:DMG: AttributeReportIBs = - [1666953011.993663][5988:5988] CHIP:DMG: [ - [1666953011.993735][5988:5988] CHIP:DMG: AttributeReportIB = - [1666953011.993827][5988:5988] CHIP:DMG: { - [1666953011.993903][5988:5988] CHIP:DMG: AttributeDataIB = - [1666953011.993986][5988:5988] CHIP:DMG: { - [1666953011.994072][5988:5988] CHIP:DMG: DataVersion = 0x97fedc88, - [1666953011.994156][5988:5988] CHIP:DMG: AttributePathIB = - [1666953011.994242][5988:5988] CHIP:DMG: { - [1666953011.994331][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666953011.994423][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666953011.994515][5988:5988] CHIP:DMG: Attribute = 0x0000_FFFC, - [1666953011.994599][5988:5988] CHIP:DMG: } - [1666953011.994690][5988:5988] CHIP:DMG: - [1666953011.994825][5988:5988] CHIP:DMG: Data = 0, - [1666953011.994908][5988:5988] CHIP:DMG: }, - [1666953011.995069][5988:5988] CHIP:DMG: - [1666953011.995147][5988:5988] CHIP:DMG: }, - [1666953011.995233][5988:5988] CHIP:DMG: - [1666953011.995296][5988:5988] CHIP:DMG: ], - - - ./chip-tool thermostatuserinterfaceconfiguration read attribute-list 1 1 - Verify DUT receives attribute-list attribute response on the TH(all-clusters-minimal-app) Log: - - [1676893524.772970][14579:14579] CHIP:DMG: ReportDataMessage = - [1676893524.772985][14579:14579] CHIP:DMG: { - [1676893524.772995][14579:14579] CHIP:DMG: AttributeReportIBs = - [1676893524.773014][14579:14579] CHIP:DMG: [ - [1676893524.773026][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.773046][14579:14579] CHIP:DMG: { - [1676893524.773060][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.773075][14579:14579] CHIP:DMG: { - [1676893524.773092][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.773109][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.773126][14579:14579] CHIP:DMG: { - [1676893524.773143][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.773160][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.773180][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.773197][14579:14579] CHIP:DMG: } - [1676893524.773216][14579:14579] CHIP:DMG: - [1676893524.773232][14579:14579] CHIP:DMG: Data = [ - [1676893524.773251][14579:14579] CHIP:DMG: - [1676893524.773268][14579:14579] CHIP:DMG: ], - [1676893524.773283][14579:14579] CHIP:DMG: }, - [1676893524.773303][14579:14579] CHIP:DMG: - [1676893524.773316][14579:14579] CHIP:DMG: }, - [1676893524.773345][14579:14579] CHIP:DMG: - [1676893524.773358][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.773381][14579:14579] CHIP:DMG: { - [1676893524.773394][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.773409][14579:14579] CHIP:DMG: { - [1676893524.773425][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.773439][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.773455][14579:14579] CHIP:DMG: { - [1676893524.773471][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.773488][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.773505][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.773521][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.773536][14579:14579] CHIP:DMG: } - [1676893524.773558][14579:14579] CHIP:DMG: - [1676893524.773575][14579:14579] CHIP:DMG: Data = 0, - [1676893524.773589][14579:14579] CHIP:DMG: }, - [1676893524.773609][14579:14579] CHIP:DMG: - [1676893524.773623][14579:14579] CHIP:DMG: }, - [1676893524.773651][14579:14579] CHIP:DMG: - [1676893524.773665][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.773686][14579:14579] CHIP:DMG: { - [1676893524.773699][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.773714][14579:14579] CHIP:DMG: { - [1676893524.773729][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.773744][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.773760][14579:14579] CHIP:DMG: { - [1676893524.773775][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.773792][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.773809][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.773826][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.773841][14579:14579] CHIP:DMG: } - [1676893524.773860][14579:14579] CHIP:DMG: - [1676893524.773877][14579:14579] CHIP:DMG: Data = 1, - [1676893524.773893][14579:14579] CHIP:DMG: }, - [1676893524.773915][14579:14579] CHIP:DMG: - [1676893524.773928][14579:14579] CHIP:DMG: }, - [1676893524.773955][14579:14579] CHIP:DMG: - [1676893524.773968][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.773989][14579:14579] CHIP:DMG: { - [1676893524.774002][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.774018][14579:14579] CHIP:DMG: { - [1676893524.774032][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.774047][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.774063][14579:14579] CHIP:DMG: { - [1676893524.774079][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.774095][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.774111][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.774127][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.774142][14579:14579] CHIP:DMG: } - [1676893524.774161][14579:14579] CHIP:DMG: - [1676893524.774177][14579:14579] CHIP:DMG: Data = 65528, - [1676893524.774193][14579:14579] CHIP:DMG: }, - [1676893524.774212][14579:14579] CHIP:DMG: - [1676893524.774227][14579:14579] CHIP:DMG: }, - [1676893524.774255][14579:14579] CHIP:DMG: - [1676893524.774268][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.774288][14579:14579] CHIP:DMG: { - [1676893524.774301][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.774316][14579:14579] CHIP:DMG: { - [1676893524.774331][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.774346][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.774361][14579:14579] CHIP:DMG: { - [1676893524.774377][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.774395][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.774412][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.774428][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.774443][14579:14579] CHIP:DMG: } - [1676893524.774464][14579:14579] CHIP:DMG: - [1676893524.774480][14579:14579] CHIP:DMG: Data = 65529, - [1676893524.774494][14579:14579] CHIP:DMG: }, - [1676893524.774514][14579:14579] CHIP:DMG: - [1676893524.774528][14579:14579] CHIP:DMG: }, - [1676893524.774555][14579:14579] CHIP:DMG: - [1676893524.774568][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.774589][14579:14579] CHIP:DMG: { - [1676893524.774602][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.774617][14579:14579] CHIP:DMG: { - [1676893524.774633][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.774648][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.774664][14579:14579] CHIP:DMG: { - [1676893524.774679][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.774695][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.774713][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.774729][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.774744][14579:14579] CHIP:DMG: } - [1676893524.774763][14579:14579] CHIP:DMG: - [1676893524.774779][14579:14579] CHIP:DMG: Data = 65530, - [1676893524.774794][14579:14579] CHIP:DMG: }, - [1676893524.774813][14579:14579] CHIP:DMG: - [1676893524.774827][14579:14579] CHIP:DMG: }, - [1676893524.774854][14579:14579] CHIP:DMG: - [1676893524.774867][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.774887][14579:14579] CHIP:DMG: { - [1676893524.774900][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.774915][14579:14579] CHIP:DMG: { - [1676893524.774955][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.774971][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.774987][14579:14579] CHIP:DMG: { - [1676893524.775002][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.775018][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.775038][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.775054][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.775070][14579:14579] CHIP:DMG: } - [1676893524.775088][14579:14579] CHIP:DMG: - [1676893524.775105][14579:14579] CHIP:DMG: Data = 65531, - [1676893524.775120][14579:14579] CHIP:DMG: }, - [1676893524.775139][14579:14579] CHIP:DMG: - [1676893524.775153][14579:14579] CHIP:DMG: }, - [1676893524.775180][14579:14579] CHIP:DMG: - [1676893524.775194][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.775214][14579:14579] CHIP:DMG: { - [1676893524.775227][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.775242][14579:14579] CHIP:DMG: { - [1676893524.775258][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.775273][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.775290][14579:14579] CHIP:DMG: { - [1676893524.775306][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.775321][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.775338][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.775355][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.775371][14579:14579] CHIP:DMG: } - [1676893524.775390][14579:14579] CHIP:DMG: - [1676893524.775406][14579:14579] CHIP:DMG: Data = 65532, - [1676893524.775421][14579:14579] CHIP:DMG: }, - [1676893524.775440][14579:14579] CHIP:DMG: - [1676893524.775454][14579:14579] CHIP:DMG: }, - [1676893524.775480][14579:14579] CHIP:DMG: - [1676893524.775493][14579:14579] CHIP:DMG: AttributeReportIB = - [1676893524.775513][14579:14579] CHIP:DMG: { - [1676893524.775526][14579:14579] CHIP:DMG: AttributeDataIB = - [1676893524.775542][14579:14579] CHIP:DMG: { - [1676893524.775557][14579:14579] CHIP:DMG: DataVersion = 0xceda3005, - [1676893524.775572][14579:14579] CHIP:DMG: AttributePathIB = - [1676893524.775588][14579:14579] CHIP:DMG: { - [1676893524.775604][14579:14579] CHIP:DMG: Endpoint = 0x1, - [1676893524.775623][14579:14579] CHIP:DMG: Cluster = 0x204, - [1676893524.775640][14579:14579] CHIP:DMG: Attribute = 0x0000_FFFB, - [1676893524.775656][14579:14579] CHIP:DMG: ListIndex = Null, - [1676893524.775672][14579:14579] CHIP:DMG: } - [1676893524.775691][14579:14579] CHIP:DMG: - [1676893524.775707][14579:14579] CHIP:DMG: Data = 65533, - [1676893524.775722][14579:14579] CHIP:DMG: }, - [1676893524.775745][14579:14579] CHIP:DMG: - [1676893524.775759][14579:14579] CHIP:DMG: }, - [1676893524.775778][14579:14579] CHIP:DMG: - [1676893524.775791][14579:14579] CHIP:DMG: ], - [1676893524.775862][14579:14579] CHIP:DMG: - [1676893524.775877][14579:14579] CHIP:DMG: SuppressResponse = true, - [1676893524.775891][14579:14579] CHIP:DMG: InteractionModelRevision = 1 - [1676893524.775903][14579:14579] CHIP:DMG: } - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT reads all supported optional attributes from TH one at a time in - a manufacturer specific order" - 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 thermostatuserinterfaceconfiguration read schedule-programming-visibility 1 1 - - Verify DUT receives schedule-programming-visibility attribute response on the TH(all-clusters-minimal-app) Log: - - [1666953130.730282][5988:5988] CHIP:EM: Handling via exchange: 19762r, Delegate: 0xaaaad96680e0 - [1666953130.730438][5988:5988] CHIP:IM: Received Read request - [1666953130.730662][5988:5988] CHIP:DMG: ReadRequestMessage = - [1666953130.730769][5988:5988] CHIP:DMG: { - [1666953130.730828][5988:5988] CHIP:DMG: AttributePathIBs = - [1666953130.730893][5988:5988] CHIP:DMG: [ - [1666953130.730955][5988:5988] CHIP:DMG: AttributePathIB = - [1666953130.731032][5988:5988] CHIP:DMG: { - [1666953130.731110][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666953130.731200][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666953130.731287][5988:5988] CHIP:DMG: Attribute = 0x0000_0002, - [1666953130.731370][5988:5988] CHIP:DMG: } - [1666953130.731447][5988:5988] CHIP:DMG: - [1666953130.731512][5988:5988] CHIP:DMG: ], - [1666953130.731582][5988:5988] CHIP:DMG: - [1666953130.731649][5988:5988] CHIP:DMG: isFabricFiltered = true, - [1666953130.731714][5988:5988] CHIP:DMG: InteractionModelRevision = 1 - [1666953130.731772][5988:5988] CHIP:DMG: }, - [1666953130.731937][5988:5988] CHIP:DMG: IM RH moving to [GeneratingReports] - [1666953130.732148][5988:5988] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 - [1666953130.732219][5988:5988] CHIP:DMG: Cluster 204, Attribute 2 is dirty - [1666953130.732275][5988:5988] CHIP:DMG: Reading attribute: Cluster=0x0000_0204 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) - [1666953130.732383][5988:5988] CHIP:DMG: Sending report (payload has 34 bytes)... - [1666953130.732896][5988:5988] CHIP:EM: <<< [E:19762r M:73354864 (Ack:39436104)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:05 (IM:ReportData) - [1666953130.732993][5988:5988] CHIP:IN: (S) Sending msg 73354864 on secure session with LSID: 10701 - [1666953130.733819][5988:5988] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:39423 | 73354864 | [Interaction Model (1) / Report Data (0x05) / Session = 51855 / Exchange = 19762] - [1666953130.733918][5988:5988] CHIP:DMG: Header Flags = - [1666953130.733975][5988:5988] CHIP:DMG: { - [1666953130.734062][5988:5988] CHIP:DMG: Exchange (0x06) = - [1666953130.734120][5988:5988] CHIP:DMG: { - [1666953130.734180][5988:5988] CHIP:DMG: AckMsg = 39436104 - [1666953130.734237][5988:5988] CHIP:DMG: NeedsAck = true - [1666953130.734295][5988:5988] CHIP:DMG: } - [1666953130.734367][5988:5988] CHIP:DMG: } - [1666953130.734422][5988:5988] CHIP:DMG: - [1666953130.734490][5988:5988] CHIP:DMG: Encrypted Payload (68 bytes) = - [1666953130.734545][5988:5988] CHIP:DMG: { - [1666953130.734600][5988:5988] CHIP:DMG: data = 008fca00704e5f040d933cd2a06139a038a30bdd479e10884e5b1d470d816f6dedc00aa71193a9ad3702ed39ea7c8d8d9b99ca1fe4c24cfdc365fa24300f32d9a8bcefde - [1666953130.734659][5988:5988] CHIP:DMG: buffer_ptr = 187650777059872 - [1666953130.734712][5988:5988] CHIP:DMG: } - [1666953130.734817][5988:5988] CHIP:DMG: - [1666953130.734969][5988:5988] CHIP:DMG: ReportDataMessage = - [1666953130.735035][5988:5988] CHIP:DMG: { - [1666953130.735089][5988:5988] CHIP:DMG: AttributeReportIBs = - [1666953130.735166][5988:5988] CHIP:DMG: [ - [1666953130.735228][5988:5988] CHIP:DMG: AttributeReportIB = - [1666953130.735318][5988:5988] CHIP:DMG: { - [1666953130.735389][5988:5988] CHIP:DMG: AttributeStatusIB = - [1666953130.735478][5988:5988] CHIP:DMG: { - [1666953130.735556][5988:5988] CHIP:DMG: AttributePathIB = - [1666953130.735640][5988:5988] CHIP:DMG: { - [1666953130.735729][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666953130.735819][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666953130.735917][5988:5988] CHIP:DMG: Attribute = 0x0000_0002, - [1666953130.736010][5988:5988] CHIP:DMG: } - [1666953130.736104][5988:5988] CHIP:DMG: - [1666953130.736187][5988:5988] CHIP:DMG: StatusIB = - [1666953130.736272][5988:5988] CHIP:DMG: { - [1666953130.736366][5988:5988] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1666953130.736449][5988:5988] CHIP:DMG: }, - [1666953130.736533][5988:5988] CHIP:DMG: - [1666953130.736616][5988:5988] CHIP:DMG: }, - [1666953130.736709][5988:5988] CHIP:DMG: - [1666953130.736927][5988:5988] CHIP:DMG: }, - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" - - - label: - "DUT writes a suitable value to all supported optional attributes on - the TH one at a time in a manufacturer specific order" - 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 thermostatuserinterfaceconfiguration write schedule-programming-visibility 1 1 1 - - Verify DUT receives schedule-programming-visibility attribute write response on the TH(all-clusters-minimal-app) Log: - - [1666953180.787649][5988:5988] CHIP:EM: Handling via exchange: 274r, Delegate: 0xaaaad96680e0 - [1666953180.787747][5988:5988] CHIP:IM: Received Write request - [1666953180.787806][5988:5988] CHIP:DMG: IM WH moving to [Initialized] - [1666953180.787936][5988:5988] CHIP:DMG: WriteRequestMessage = - [1666953180.788002][5988:5988] CHIP:DMG: { - [1666953180.788061][5988:5988] CHIP:DMG: suppressResponse = false, - [1666953180.788128][5988:5988] CHIP:DMG: timedRequest = false, - [1666953180.788191][5988:5988] CHIP:DMG: AttributeDataIBs = - [1666953180.788266][5988:5988] CHIP:DMG: [ - [1666953180.788329][5988:5988] CHIP:DMG: AttributeDataIB = - [1666953180.788479][5988:5988] CHIP:DMG: { - [1666953180.788565][5988:5988] CHIP:DMG: AttributePathIB = - [1666953180.788700][5988:5988] CHIP:DMG: { - [1666953180.788844][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666953180.788939][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666953180.789077][5988:5988] CHIP:DMG: Attribute = 0x0000_0002, - [1666953180.789216][5988:5988] CHIP:DMG: } - [1666953180.789355][5988:5988] CHIP:DMG: - [1666953180.789498][5988:5988] CHIP:DMG: Data = 1, - [1666953180.789630][5988:5988] CHIP:DMG: }, - [1666953180.789717][5988:5988] CHIP:DMG: - [1666953180.789780][5988:5988] CHIP:DMG: ], - [1666953180.789855][5988:5988] CHIP:DMG: - [1666953180.789918][5988:5988] CHIP:DMG: moreChunkedMessages = false, - [1666953180.789984][5988:5988] CHIP:DMG: InteractionModelRevision = 1 - [1666953180.790043][5988:5988] CHIP:DMG: }, - [1666953180.790251][5988:5988] CHIP:DMG: IM WH moving to [AddStatus] - [1666953180.790936][5988:5988] CHIP:EM: <<< [E:274r M:42261800 (Ack:75748820)] (S) Msg TX to 1:000000000001B669 [C7F7] --- Type 0001:07 (IM:WriteResponse) - [1666953180.791049][5988:5988] CHIP:IN: (S) Sending msg 42261800 on secure session with LSID: 10702 - [1666953180.791742][5988:5988] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0e:be37%eth0]:58417 | 42261800 | [Interaction Model (1) / Write Response (0x07) / Session = 57550 / Exchange = 274] - [1666953180.791843][5988:5988] CHIP:DMG: Header Flags = - [1666953180.791900][5988:5988] CHIP:DMG: { - [1666953180.791986][5988:5988] CHIP:DMG: Exchange (0x06) = - [1666953180.792043][5988:5988] CHIP:DMG: { - [1666953180.792104][5988:5988] CHIP:DMG: AckMsg = 75748820 - [1666953180.792161][5988:5988] CHIP:DMG: NeedsAck = true - [1666953180.792215][5988:5988] CHIP:DMG: } - [1666953180.792288][5988:5988] CHIP:DMG: } - [1666953180.792343][5988:5988] CHIP:DMG: - [1666953180.792410][5988:5988] CHIP:DMG: Encrypted Payload (63 bytes) = - [1666953180.792466][5988:5988] CHIP:DMG: { - [1666953180.792521][5988:5988] CHIP:DMG: data = 00cee00028dd84020da296796a531f41d840f78b8736adc0b9e024d7096618010c89ca2aaa0435215f2f43aff228e1c004bf0fe22f4c42b20602d0e9d683ce - [1666953180.792580][5988:5988] CHIP:DMG: buffer_ptr = 187650777059872 - [1666953180.792634][5988:5988] CHIP:DMG: } - [1666953180.792685][5988:5988] CHIP:DMG: - [1666953180.792805][5988:5988] CHIP:DMG: WriteResponseMessage = - [1666953180.792871][5988:5988] CHIP:DMG: { - [1666953180.792924][5988:5988] CHIP:DMG: AttributeStatusIBs = - [1666953180.793003][5988:5988] CHIP:DMG: [ - [1666953180.793066][5988:5988] CHIP:DMG: AttributeStatusIB = - [1666953180.793150][5988:5988] CHIP:DMG: { - [1666953180.793217][5988:5988] CHIP:DMG: AttributePathIB = - [1666953180.793300][5988:5988] CHIP:DMG: { - [1666953180.793385][5988:5988] CHIP:DMG: Endpoint = 0x1, - [1666953180.793472][5988:5988] CHIP:DMG: Cluster = 0x204, - [1666953180.793558][5988:5988] CHIP:DMG: Attribute = 0x0000_0002, - [1666953180.793639][5988:5988] CHIP:DMG: } - [1666953180.793731][5988:5988] CHIP:DMG: - [1666953180.793810][5988:5988] CHIP:DMG: StatusIB = - [1666953180.793892][5988:5988] CHIP:DMG: { - [1666953180.793975][5988:5988] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1666953180.794124][5988:5988] CHIP:DMG: }, - [1666953180.794221][5988:5988] CHIP:DMG: - [1666953180.794294][5988:5988] CHIP:DMG: }, - [1666953180.794379][5988:5988] CHIP:DMG: - [1666953180.794440][5988:5988] CHIP:DMG: ], - cluster: "LogCommands" - command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP - arguments: - values: - - name: "message" - value: "Enter 'y' after success" - - name: "expectedValue" - value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_TVOCCONC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TVOCCONC_1_1.yaml index 4b27410e01e79f..4dfe7de1773721 100644 --- a/src/app/tests/suites/certification/Test_TC_TVOCCONC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TVOCCONC_1_1.yaml @@ -34,31 +34,30 @@ tests: - label: "Step 2: Read the global attribute: ClusterRevision" command: "readAttribute" attribute: "ClusterRevision" - PICS: TVOCCONC.S.Afffd response: value: 3 constraints: type: int16u - # TODO: Re-enable when #27248 is fixed - label: "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set" + PICS: + " !TVOCCONC.S.F00 && !TVOCCONC.S.F01 && !TVOCCONC.S.F02 && + !TVOCCONC.S.F03 && !TVOCCONC.S.F04 && !TVOCCONC.S.F05 " command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc response: + value: 0 constraints: type: bitmap32 - hasMasksSet: [0x03] - disabled: true - label: "Step 3b: Given TVOCCONC.S.F00(MEA) ensure featuremap has the correct bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && TVOCCONC.S.F00 + PICS: TVOCCONC.S.F00 response: constraints: type: bitmap32 @@ -69,7 +68,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && !TVOCCONC.S.F00 + PICS: " !TVOCCONC.S.F00 " response: constraints: type: bitmap32 @@ -80,7 +79,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && TVOCCONC.S.F01 + PICS: TVOCCONC.S.F01 response: constraints: type: bitmap32 @@ -91,7 +90,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && !TVOCCONC.S.F01 + PICS: " !TVOCCONC.S.F01 " response: constraints: type: bitmap32 @@ -102,7 +101,7 @@ tests: bit set" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && TVOCCONC.S.F02 + PICS: TVOCCONC.S.F02 && TVOCCONC.S.F01 response: constraints: type: bitmap32 @@ -113,7 +112,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && !TVOCCONC.S.F02 + PICS: " !TVOCCONC.S.F02 && !TVOCCONC.S.F01 " response: constraints: type: bitmap32 @@ -124,7 +123,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && TVOCCONC.S.F03 + PICS: TVOCCONC.S.F03 && TVOCCONC.S.F01 response: constraints: type: bitmap32 @@ -135,7 +134,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && !TVOCCONC.S.F03 + PICS: " !TVOCCONC.S.F03 && !TVOCCONC.S.F01" response: constraints: type: bitmap32 @@ -146,7 +145,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && TVOCCONC.S.F04 + PICS: TVOCCONC.S.F04 && TVOCCONC.S.F00 response: constraints: type: bitmap32 @@ -157,7 +156,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && !TVOCCONC.S.F04 + PICS: " !TVOCCONC.S.F04 && !TVOCCONC.S.F00 " response: constraints: type: bitmap32 @@ -168,7 +167,7 @@ tests: bits set" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && TVOCCONC.S.F05 + PICS: TVOCCONC.S.F05 && TVOCCONC.S.F00 response: constraints: type: bitmap32 @@ -179,7 +178,7 @@ tests: the correct bit clear" command: "readAttribute" attribute: "FeatureMap" - PICS: TVOCCONC.S.Afffc && !TVOCCONC.S.F05 + PICS: " !TVOCCONC.S.F05 && !TVOCCONC.S.F00 " response: constraints: type: bitmap32 @@ -188,7 +187,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffb + PICS: PICS_EVENT_LIST_ENABLED response: constraints: type: list @@ -197,7 +196,7 @@ tests: - label: "Step 4a: Read the global attribute: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: "!PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffb" + PICS: "!PICS_EVENT_LIST_ENABLED" response: constraints: type: list @@ -206,7 +205,7 @@ tests: - label: "Step 4b: Read the optional attribute Uncertainty in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && TVOCCONC.S.A0007 && TVOCCONC.S.F00 + PICS: TVOCCONC.S.A0007 && TVOCCONC.S.F00 response: constraints: type: list @@ -217,7 +216,7 @@ tests: AttributeList when TVOCCONC.S.A0007 is not set" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && !TVOCCONC.S.A0007 + PICS: " !TVOCCONC.S.A0007 " response: constraints: type: list @@ -229,7 +228,7 @@ tests: in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && TVOCCONC.S.F00 + PICS: TVOCCONC.S.F00 response: constraints: type: list @@ -241,7 +240,7 @@ tests: AttributeList when TVOCCONC.S.F00 (MEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && !TVOCCONC.S.F00 + PICS: " !TVOCCONC.S.F00 " response: constraints: type: list @@ -252,7 +251,7 @@ tests: PeakMeasuredValue & PeakMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && TVOCCONC.S.F04 + PICS: TVOCCONC.S.F04 response: constraints: type: list @@ -263,7 +262,7 @@ tests: excluded from AttributeList when TVOCCONC.S.F04 (PEA) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && !TVOCCONC.S.F04 + PICS: " !TVOCCONC.S.F04 " response: constraints: type: list @@ -274,7 +273,7 @@ tests: AverageMeasuredValue AverageMeasuredValueWindow in AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && TVOCCONC.S.F05 + PICS: TVOCCONC.S.F05 response: constraints: type: list @@ -286,7 +285,7 @@ tests: TVOCCONC.S.F05 (AVG) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && !TVOCCONC.S.F05 + PICS: " !TVOCCONC.S.F05 " response: constraints: type: list @@ -297,7 +296,7 @@ tests: AttributeList" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && TVOCCONC.S.F01 + PICS: TVOCCONC.S.F01 response: constraints: type: list @@ -308,7 +307,7 @@ tests: TVOCCONC.S.F01 (LEV) is not set" command: "readAttribute" attribute: "AttributeList" - PICS: TVOCCONC.S.Afffb && !TVOCCONC.S.F01 + PICS: " !TVOCCONC.S.F01 " response: constraints: type: list @@ -317,7 +316,7 @@ tests: - label: "Step 5l: Read the global attribute: EventList" command: "readAttribute" attribute: "EventList" - PICS: PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffa + PICS: PICS_EVENT_LIST_ENABLED response: value: [] constraints: @@ -326,7 +325,6 @@ tests: - label: "Step 6: Read the global attribute: AcceptedCommandList" command: "readAttribute" attribute: "AcceptedCommandList" - PICS: TVOCCONC.S.Afff9 response: value: [] constraints: @@ -335,7 +333,6 @@ tests: - label: "Step 7: Read the global attribute: GeneratedCommandList" command: "readAttribute" attribute: "GeneratedCommandList" - PICS: TVOCCONC.S.Afff8 response: value: [] constraints: 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 deleted file mode 100644 index 87a9a977a1a714..00000000000000 --- a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1_Simulated.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2021 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: 95.3.1. [TC-ULABEL-3.1] User label cluster [DUT-client] - -PICS: - - ULABEL.C - -config: - nodeId: 0x12344321 - cluster: "User Label" - endpoint: 1 - -tests: - #- label: "Wait for the device to be commissioned" - # cluster: "DelayCommands" - # command: "WaitForCommissioning" - - - label: "Step 1: Read attribute: LabelList" - PICS: ULABEL.C.A0000 - wait: "readAttribute" - attribute: "LabelList" - - - label: "Step 2: write attribute: LabelList" - PICS: ULABEL.C.A0000 - wait: "writeAttribute" - attribute: "LabelList" - arguments: - value: diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 4267b90a2388dc..24826e89021967 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -340,6 +340,8 @@ DISHM.S.A0003=1 DISHM.S.C00.Rsp=1 DISHM.S.C01.Tx=1 +PIXIT.DISHM.CAN_TEST_MODE_FAILURE=1 + # MEDIA CLUSTER # App Launcher APPLAUNCHER.S=1 @@ -673,6 +675,10 @@ G.S.C04.Rsp=0 S.S.AM=0 S.S.AO=0 S.S.F00=0 +S.S.F01=0 +S.S.F02=0 +S.S.F03=0 +PICS_SC_RECALL_SCENE_TRANSITION_TIME=1 S.C=0 S.C.C00.Tx=0 @@ -775,6 +781,8 @@ LWM.S.F00=1 LWM.S.C00.Rsp=1 LWM.S.C01.Tx=1 +PIXIT.LWM.CAN_TEST_MODE_FAILURE=1 + # Time Format Localization Cluster LTIME.S=1 LTIME.S.A0000=1 @@ -1950,6 +1958,7 @@ TSTAT.S.F02=0 TSTAT.S.F03=0 TSTAT.S.F04=0 TSTAT.S.F05=1 +TSTAT.S.F06=0 TSTAT.S.A0000=1 TSTAT.S.A0001=0 @@ -2082,13 +2091,7 @@ DESC.S.A0000=1 DESC.S.A0001=1 DESC.S.A0002=1 DESC.S.A0003=1 - -DESC.S.Afffd=1 -DESC.S.Afffc=1 -DESC.S.Afffb=1 -DESC.S.Afffa=1 -DESC.S.Afff9=1 -DESC.S.Afff8=1 +DESC.S.A0004=1 DESC.C=1 DESC.C.A0000=1 @@ -2181,6 +2184,7 @@ BRBINFO.C.E02=1 BRBINFO.C.E03=1 # Interaction Data Model +ICDM.S=1 MCORE.IDM.C=1 MCORE.IDM.C.InvokeRequest=1 MCORE.IDM.C.ReadRequest=1 @@ -2325,12 +2329,6 @@ CDOCONC.S.A0007=1 CDOCONC.S.A0008=1 CDOCONC.S.A0009=1 CDOCONC.S.A000a=1 -CDOCONC.S.Afff8=1 -CDOCONC.S.Afff9=1 -CDOCONC.S.Afffa=1 -CDOCONC.S.Afffb=1 -CDOCONC.S.Afffc=1 -CDOCONC.S.Afffd=1 CMOCONC.C=0 CMOCONC.S=1 @@ -2351,12 +2349,6 @@ CMOCONC.S.A0007=1 CMOCONC.S.A0008=1 CMOCONC.S.A0009=1 CMOCONC.S.A000a=1 -CMOCONC.S.Afff8=1 -CMOCONC.S.Afff9=1 -CMOCONC.S.Afffa=1 -CMOCONC.S.Afffb=1 -CMOCONC.S.Afffc=1 -CMOCONC.S.Afffd=1 NDOCONC.C=0 NDOCONC.S=1 @@ -2377,12 +2369,6 @@ NDOCONC.S.A0007=1 NDOCONC.S.A0008=1 NDOCONC.S.A0009=1 NDOCONC.S.A000a=1 -NDOCONC.S.Afff8=1 -NDOCONC.S.Afff9=1 -NDOCONC.S.Afffa=1 -NDOCONC.S.Afffb=1 -NDOCONC.S.Afffc=1 -NDOCONC.S.Afffd=1 OZCONC.C=0 OZCONC.S=1 @@ -2403,12 +2389,6 @@ OZCONC.S.A0007=1 OZCONC.S.A0008=1 OZCONC.S.A0009=1 OZCONC.S.A000a=1 -OZCONC.S.Afff8=1 -OZCONC.S.Afff9=1 -OZCONC.S.Afffa=1 -OZCONC.S.Afffb=1 -OZCONC.S.Afffc=1 -OZCONC.S.Afffd=1 PMICONC.C=0 PMICONC.S=1 @@ -2429,12 +2409,6 @@ PMICONC.S.A0007=1 PMICONC.S.A0008=1 PMICONC.S.A0009=1 PMICONC.S.A000a=1 -PMICONC.S.Afff8=1 -PMICONC.S.Afff9=1 -PMICONC.S.Afffa=1 -PMICONC.S.Afffb=1 -PMICONC.S.Afffc=1 -PMICONC.S.Afffd=1 FLDCONC.C=0 FLDCONC.S=1 @@ -2455,12 +2429,6 @@ FLDCONC.S.A0007=1 FLDCONC.S.A0008=1 FLDCONC.S.A0009=1 FLDCONC.S.A000a=1 -FLDCONC.S.Afff8=1 -FLDCONC.S.Afff9=1 -FLDCONC.S.Afffa=1 -FLDCONC.S.Afffb=1 -FLDCONC.S.Afffc=1 -FLDCONC.S.Afffd=1 PMHCONC.C=0 PMHCONC.S=1 @@ -2481,12 +2449,6 @@ PMHCONC.S.A0007=1 PMHCONC.S.A0008=1 PMHCONC.S.A0009=1 PMHCONC.S.A000a=1 -PMHCONC.S.Afff8=1 -PMHCONC.S.Afff9=1 -PMHCONC.S.Afffa=1 -PMHCONC.S.Afffb=1 -PMHCONC.S.Afffc=1 -PMHCONC.S.Afffd=1 PMKCONC.C=0 PMKCONC.S=1 @@ -2507,12 +2469,6 @@ PMKCONC.S.A0007=1 PMKCONC.S.A0008=1 PMKCONC.S.A0009=1 PMKCONC.S.A000a=1 -PMKCONC.S.Afff8=1 -PMKCONC.S.Afff9=1 -PMKCONC.S.Afffa=1 -PMKCONC.S.Afffb=1 -PMKCONC.S.Afffc=1 -PMKCONC.S.Afffd=1 TVOCCONC.C=0 TVOCCONC.S=1 @@ -2533,12 +2489,6 @@ TVOCCONC.S.A0007=1 TVOCCONC.S.A0008=1 TVOCCONC.S.A0009=1 TVOCCONC.S.A000a=1 -TVOCCONC.S.Afff8=1 -TVOCCONC.S.Afff9=1 -TVOCCONC.S.Afffa=1 -TVOCCONC.S.Afffb=1 -TVOCCONC.S.Afffc=1 -TVOCCONC.S.Afffd=1 # TEMPERATURE CONTROL CLUSTER @@ -2582,12 +2532,6 @@ RNCONC.S.A0007=1 RNCONC.S.A0008=1 RNCONC.S.A0009=1 RNCONC.S.A000a=1 -RNCONC.S.Afff8=1 -RNCONC.S.Afff9=1 -RNCONC.S.Afffa=1 -RNCONC.S.Afffb=1 -RNCONC.S.Afffc=1 -RNCONC.S.Afffd=1 # REFRIGERATOR ALARM CLUSTER REFALM.S=1 @@ -2623,6 +2567,8 @@ RVCCLEANM.S.F00=1 RVCCLEANM.S.C00.Rsp=1 RVCCLEANM.S.C01.Tx=1 +PIXIT.RVCCLEANM.CAN_TEST_MODE_FAILURE=1 + # RVC OPERATIONAL STATE CLUSTER RVCOPSTATE.S=1 RVCOPSTATE.C=1 @@ -2641,8 +2587,8 @@ RVCOPSTATE.S.A0005=1 #Commands RVCOPSTATE.S.C00.Rsp=1 -RVCOPSTATE.S.C01.Rsp=1 -RVCOPSTATE.S.C02.Rsp=1 +RVCOPSTATE.S.C01.Rsp=0 +RVCOPSTATE.S.C02.Rsp=0 RVCOPSTATE.S.C03.Rsp=1 RVCOPSTATE.S.C04.Tx=1 RVCOPSTATE.C.C00.Tx=1 @@ -2666,6 +2612,8 @@ RVCRUNM.S.Afffa=1 RVCRUNM.S.C00.Rsp=1 RVCRUNM.S.C01.Tx=1 +PIXIT.RVCRUNM.CAN_TEST_MODE_FAILURE=1 + #Refrigerator and Temperature Controlled Cabinet Mode Cluster(TCCM) TCCM.S=1 @@ -2737,19 +2685,8 @@ ICDM.S.C03.Rsp=1 ICDM.C.C00.Rsp=1 ICDM.S.C01.Tx=1 -#RVC Clean Mode Select -RVCCLEANMS.S.F00=1 -RVCCLEANMS.S.F01=0 -RVCCLEANMS.S.F02=0 -#Attributes: -RVCCLEANMS.S.A0004=1 -RVCCLEANMS.S.A0005=1 -#Commands: -RVCCLEANMS.S.C00.Rsp=1 -RVCCLEANMS.S.C01.Rsp=1 -RVCCLEANMS.S.C03.Tx=1 # Smoke CO Alarm Cluster SMOKECO.S=1 @@ -2797,6 +2734,8 @@ TCCM.S.A0003=1 TCCM.S.C00.Rsp=1 TCCM.S.C01.Tx=1 +PIXIT.TCCM.CAN_TEST_MODE_FAILURE=1 + #Temperature Control TCTL.S=1 TCTL.C=1 diff --git a/src/app/tests/suites/ciTests.json b/src/app/tests/suites/ciTests.json index 30f793e64c6f46..25ba9a6b338a2b 100644 --- a/src/app/tests/suites/ciTests.json +++ b/src/app/tests/suites/ciTests.json @@ -73,6 +73,7 @@ ], "GeneralCommissioning": ["Test_TC_CGEN_1_1", "Test_TC_CGEN_2_1"], "GeneralDiagnostics": ["Test_TC_DGGEN_1_1", "Test_TC_DGGEN_2_1"], + "GroupKeyManagement": ["Test_TC_GRPKEY_1_1"], "IcdManagement": ["Test_TC_ICDM_1_1", "Test_TC_ICDM_2_1"], "Identify": [ "Test_TC_I_1_1", @@ -301,6 +302,7 @@ "Test_TC_G_2_1" ], "Scenes": ["Test_TC_S_1_1"], + "RVCOperationalState": ["Test_TC_RVCOPSTATE_1_1"], "ResourceMonitoring": [ "TestActivatedCarbonFilterMonitoring", "TestHepaFilterMonitoring", @@ -351,6 +353,7 @@ "FanControl", "GeneralCommissioning", "GeneralDiagnostics", + "GroupKeyManagement", "IcdManagement", "Identify", "IlluminanceMeasurement", @@ -373,6 +376,7 @@ "SecureChannel", "SmokeCOAlarm", "Switch", + "RVCOperationalState", "TemperatureMeasurement", "Thermostat", "ThermostatUserConfiguration", diff --git a/src/app/tests/suites/manualTests.json b/src/app/tests/suites/manualTests.json index cde28a356d9e97..c57af2d95df63d 100644 --- a/src/app/tests/suites/manualTests.json +++ b/src/app/tests/suites/manualTests.json @@ -40,6 +40,7 @@ "TestGroupDemoConfig", "Test_TC_G_2_2", "Test_TC_G_2_3", + "Test_TC_G_2_4", "Test_TC_G_3_2" ], "BulkDataExchangeProtocol": [ @@ -102,9 +103,6 @@ "Test_TC_CNET_4_14", "Test_TC_CNET_4_15", "Test_TC_CNET_4_16", - "Test_TC_CNET_4_17", - "Test_TC_CNET_4_18", - "Test_TC_CNET_4_19", "Test_TC_CNET_4_20", "Test_TC_CNET_4_21", "Test_TC_CNET_4_22" @@ -115,13 +113,9 @@ "Test_TC_DLOG_3_1" ], "Descriptor": ["Test_TC_DESC_2_1"], - "FanControl": ["Test_TC_FAN_3_3", "Test_TC_FAN_3_5"], + "FanControl": [], "GeneralCommissioning": ["Test_TC_CGEN_2_2"], - "GeneralDiagnostics": [ - "Test_TC_DGGEN_2_2", - "Test_TC_DGGEN_2_3", - "Test_TC_DGGEN_3_1" - ], + "GeneralDiagnostics": ["Test_TC_DGGEN_2_2", "Test_TC_DGGEN_2_3"], "Identify": ["Test_TC_I_3_2"], "IcdManagement": ["Test_TC_ICDM_2_2", "Test_TC_ICDM_2_3"], "IlluminanceMeasurement": [], @@ -142,7 +136,9 @@ "Test_TC_IDM_6_3", "Test_TC_IDM_6_4", "Test_TC_IDM_7_1", - "Test_TC_IDM_8_1" + "Test_TC_IDM_8_1", + "Test_TC_IDM_10_1", + "Test_TC_IDM_11_1" ], "MediaControl": [ "Test_TC_LOWPOWER_2_2", @@ -191,7 +187,9 @@ "Test_TC_CADMIN_1_10", "Test_TC_CADMIN_1_13", "Test_TC_CADMIN_1_23", - "Test_TC_CADMIN_1_24" + "Test_TC_CADMIN_1_24", + "Test_TC_CADMIN_1_25", + "Test_TC_CADMIN_1_26" ], "ModeSelect": [ "Test_TC_MOD_1_2", @@ -267,9 +265,9 @@ "Test_TC_CC_9_2", "Test_TC_CC_9_3" ], - "DoorLock": ["Test_TC_DRLK_2_10", "Test_TC_DRLK_3_2", "Test_TC_DRLK_3_3"], + "DoorLock": ["Test_TC_DRLK_2_10", "Test_TC_DRLK_3_2"], "LocalizationConfiguration": ["Test_TC_LCFG_2_1"], - "LevelControl": ["Test_TC_LVL_8_1"], + "LevelControl": [], "LaundryWasherMode": [ "Test_TC_LWM_1_1", "Test_TC_LWM_1_2", @@ -331,23 +329,19 @@ "Test_TC_TCTL_3_3" ], "TemperatureMeasurement": ["Test_TC_TMP_2_2"], - "Thermostat": ["Test_TC_TSTAT_3_1", "Test_TC_TSTAT_3_2"], + "Thermostat": ["Test_TC_TSTAT_3_2"], "ThermostatUserConfiguration": [], "ThreadNetworkDiagnostics": ["Test_TC_DGTHREAD_2_5"], "Actions": ["Test_TC_ACT_2_1", "Test_TC_ACT_2_2", "Test_TC_ACT_3_2"], - "TimeFormatLocalization": ["Test_TC_LTIME_2_1", "Test_TC_LTIME_3_1"], - "TimeSynchronization": ["Test_TC_TIMESYNC_2_15"], + "TimeFormatLocalization": ["Test_TC_LTIME_3_1"], + "TimeSynchronization": [], "UnitLocalization": [], "Binding": ["Test_TC_BIND_2_1", "Test_TC_BIND_2_2", "Test_TC_BIND_2_3"], "Scenes": [ "Test_TC_S_1_1", "Test_TC_S_2_1", - "Test_TC_S_2_2", - "Test_TC_S_2_3", - "Test_TC_S_2_4", "Test_TC_S_2_5", - "Test_TC_S_2_6", - "Test_TC_S_3_1" + "Test_TC_S_2_6" ], "PumpConfigurationControl": [], "AccessControl": [], diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index cdb7b4274c4968..b64115bee8df00 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -125,6 +125,7 @@ class TestList : public Command printf("Test_TC_CGEN_2_1\n"); printf("Test_TC_DGGEN_1_1\n"); printf("Test_TC_DGGEN_2_1\n"); + printf("Test_TC_GRPKEY_1_1\n"); printf("Test_TC_ICDM_1_1\n"); printf("Test_TC_ICDM_2_1\n"); printf("Test_TC_I_1_1\n"); @@ -218,6 +219,7 @@ class TestList : public Command printf("Test_TC_SMOKECO_2_6\n"); printf("Test_TC_SWTCH_1_1\n"); printf("Test_TC_SWTCH_2_1\n"); + printf("Test_TC_RVCOPSTATE_1_1\n"); printf("Test_TC_TMP_1_1\n"); printf("Test_TC_TMP_2_1\n"); printf("Test_TC_TSTAT_1_1\n"); @@ -376,6 +378,7 @@ class ManualTestList : public Command printf("TestGroupDemoConfig\n"); printf("Test_TC_G_2_2\n"); printf("Test_TC_G_2_3\n"); + printf("Test_TC_G_2_4\n"); printf("Test_TC_G_3_2\n"); printf("Test_TC_BDX_1_1\n"); printf("Test_TC_BDX_1_2\n"); @@ -417,9 +420,6 @@ class ManualTestList : public Command printf("Test_TC_CNET_4_14\n"); printf("Test_TC_CNET_4_15\n"); printf("Test_TC_CNET_4_16\n"); - printf("Test_TC_CNET_4_17\n"); - printf("Test_TC_CNET_4_18\n"); - printf("Test_TC_CNET_4_19\n"); printf("Test_TC_CNET_4_20\n"); printf("Test_TC_CNET_4_21\n"); printf("Test_TC_CNET_4_22\n"); @@ -441,12 +441,9 @@ class ManualTestList : public Command printf("Test_TC_DISHM_3_2\n"); printf("Test_TC_DISHM_3_3\n"); printf("Test_TC_DESC_2_1\n"); - printf("Test_TC_FAN_3_3\n"); - printf("Test_TC_FAN_3_5\n"); printf("Test_TC_CGEN_2_2\n"); printf("Test_TC_DGGEN_2_2\n"); printf("Test_TC_DGGEN_2_3\n"); - printf("Test_TC_DGGEN_3_1\n"); printf("Test_TC_ICDM_2_2\n"); printf("Test_TC_ICDM_2_3\n"); printf("Test_TC_I_3_2\n"); @@ -467,6 +464,8 @@ class ManualTestList : public Command printf("Test_TC_IDM_6_4\n"); printf("Test_TC_IDM_7_1\n"); printf("Test_TC_IDM_8_1\n"); + printf("Test_TC_IDM_10_1\n"); + printf("Test_TC_IDM_11_1\n"); printf("Test_TC_LOWPOWER_2_2\n"); printf("Test_TC_APPLAUNCHER_3_7_1\n"); printf("Test_TC_APPLAUNCHER_3_8_1\n"); @@ -512,6 +511,8 @@ class ManualTestList : public Command printf("Test_TC_CADMIN_1_13\n"); printf("Test_TC_CADMIN_1_23\n"); printf("Test_TC_CADMIN_1_24\n"); + printf("Test_TC_CADMIN_1_25\n"); + printf("Test_TC_CADMIN_1_26\n"); printf("Test_TC_MOD_1_2\n"); printf("Test_TC_MOD_1_3\n"); printf("Test_TC_MOD_2_1\n"); @@ -576,9 +577,7 @@ class ManualTestList : public Command printf("Test_TC_CC_9_3\n"); printf("Test_TC_DRLK_2_10\n"); printf("Test_TC_DRLK_3_2\n"); - printf("Test_TC_DRLK_3_3\n"); printf("Test_TC_LCFG_2_1\n"); - printf("Test_TC_LVL_8_1\n"); printf("Test_TC_LWM_1_1\n"); printf("Test_TC_LWM_1_2\n"); printf("Test_TC_LWM_2_1\n"); @@ -624,26 +623,19 @@ class ManualTestList : public Command printf("Test_TC_TCTL_3_2\n"); printf("Test_TC_TCTL_3_3\n"); printf("Test_TC_TMP_2_2\n"); - printf("Test_TC_TSTAT_3_1\n"); printf("Test_TC_TSTAT_3_2\n"); printf("Test_TC_DGTHREAD_2_5\n"); printf("Test_TC_ACT_2_1\n"); printf("Test_TC_ACT_2_2\n"); printf("Test_TC_ACT_3_2\n"); - printf("Test_TC_LTIME_2_1\n"); printf("Test_TC_LTIME_3_1\n"); - printf("Test_TC_TIMESYNC_2_15\n"); printf("Test_TC_BIND_2_1\n"); printf("Test_TC_BIND_2_2\n"); printf("Test_TC_BIND_2_3\n"); printf("Test_TC_S_1_1\n"); printf("Test_TC_S_2_1\n"); - printf("Test_TC_S_2_2\n"); - printf("Test_TC_S_2_3\n"); - printf("Test_TC_S_2_4\n"); printf("Test_TC_S_2_5\n"); printf("Test_TC_S_2_6\n"); - printf("Test_TC_S_3_1\n"); printf("Test_TC_BRBINFO_2_2\n"); printf("Test_TC_BRBINFO_3_1\n"); printf("Test_TC_WASHERCTRL_1_1\n"); @@ -10837,12 +10829,7 @@ class Test_TC_BRBINFO_1_1Suite : public TestCommand 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")); - } + shouldContinue = true; break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -11072,8 +11059,13 @@ class Test_TC_BRBINFO_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: TH reads the ClusterRevision from DUT"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(3), BridgedDeviceBasicInformation::Id, - BridgedDeviceBasicInformation::Attributes::ClusterRevision::Id, true, chip::NullOptional); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 2: { LogStep(2, "Step 3: TH reads the FeatureMap from DUT"); @@ -12640,12 +12632,7 @@ class Test_TC_CC_1_1Suite : public TestCommand 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, 5U)); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); - } + shouldContinue = true; break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -13387,8 +13374,13 @@ class Test_TC_CC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: read the global attribute: ClusterRevision"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ClusterRevision::Id, - true, chip::NullOptional); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 2: { LogStep(2, "Step 3a: Read the global attribute: FeatureMap"); @@ -16923,7 +16915,7 @@ class Test_TC_CC_4_3Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 19: { - LogStep(19, "TStep 3c: H reads CurrentSaturation attribute from DUT"); + LogStep(19, "Step 3c: H reads CurrentSaturation attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id, true, chip::NullOptional); @@ -16994,7 +16986,7 @@ class Test_TC_CC_4_3Suite : public TestCommand chip::NullOptional); } case 28: { - LogStep(28, "TStep 4b: H reads EnhancedColorMode attribute from DUT"); + LogStep(28, "Step 4b: H reads EnhancedColorMode attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id, true, chip::NullOptional); @@ -19240,7 +19232,7 @@ class Test_TC_CC_6_1Suite : public TestCommand ); } case 3: { - LogStep(3, "TStep 1a: H reads ColorTempPhysicalMinMireds attribute from DUT"); + LogStep(3, "Step 1a: H reads ColorTempPhysicalMinMireds attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.F04 && CC.S.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id, true, chip::NullOptional); @@ -22345,7 +22337,7 @@ class Test_TC_CC_8_1Suite : public TestCommand } case 3: { LogStep(3, - "TStep 2a: H sends MoveToHue command to DUT with Hue=200, Direction=0x00 (shortest distance) and " + "Step 2a: H sends MoveToHue command to DUT with Hue=200, Direction=0x00 (shortest distance) and " "TransitionTime=0 (immediately)."); VerifyOrDo(!ShouldSkip("CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; @@ -24288,7 +24280,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand { public: Test_TC_CDOCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CDOCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_CDOCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -24339,8 +24331,8 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -24349,7 +24341,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -24358,7 +24350,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -24367,10 +24359,19 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -24380,16 +24381,17 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -24399,16 +24401,17 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -24418,16 +24421,17 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -24437,16 +24441,17 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: 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(CheckConstraintHasMasksClear("value", value, 32UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24461,7 +24466,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24475,7 +24480,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24484,7 +24489,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24493,7 +24498,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24505,7 +24510,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24518,7 +24523,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24528,7 +24533,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24538,7 +24543,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24548,7 +24553,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24558,7 +24563,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24567,7 +24572,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24576,7 +24581,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24588,7 +24593,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24600,7 +24605,7 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -24636,185 +24641,190 @@ class Test_TC_CDOCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given CDOCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !CDOCONC.S.F00 && !CDOCONC.S.F01 && !CDOCONC.S.F02 && !CDOCONC.S.F03 && !CDOCONC.S.F04 && !CDOCONC.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given CDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given CDOCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given CDOCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given CDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given CDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given CDOCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given CDOCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given CDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given CDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given CDOCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F02 && CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given CDOCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given CDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F02 && !CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given CDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given CDOCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F03 && CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given CDOCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given CDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F03 && !CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given CDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given CDOCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F04 && CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given CDOCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given CDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F04 && !CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given CDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given CDOCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F05 && CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given CDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F05 && !CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, - CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + CarbonDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.A0007 && CDOCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when CDOCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.A0007 && CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when CDOCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when CDOCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when CDOCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "CDOCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "CDOCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "CDOCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "CDOCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when CDOCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("CDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when CDOCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !CDOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, - CarbonDioxideConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + CarbonDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, + CarbonDioxideConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + } + case 28: { + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("CDOCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonDioxideConcentrationMeasurement::Id, CarbonDioxideConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -25064,7 +25074,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand { public: Test_TC_CMOCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_CMOCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_CMOCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -25115,8 +25125,8 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -25125,7 +25135,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -25134,7 +25144,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -25143,10 +25153,19 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25156,7 +25175,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25165,7 +25184,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25175,7 +25194,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25184,7 +25203,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25194,7 +25213,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25203,7 +25222,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25213,7 +25232,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25222,7 +25241,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25237,7 +25256,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25251,7 +25270,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25260,7 +25279,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25269,7 +25288,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25281,7 +25300,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25294,7 +25313,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25304,7 +25323,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25314,7 +25333,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25324,7 +25343,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25334,7 +25353,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25343,7 +25362,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25352,7 +25371,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25364,7 +25383,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25376,7 +25395,7 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -25412,185 +25431,190 @@ class Test_TC_CMOCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !CMOCONC.S.F00 && !CMOCONC.S.F01 && !CMOCONC.S.F02 && !CMOCONC.S.F03 && !CMOCONC.S.F04 && !CMOCONC.S.F05 "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given CMOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given CMOCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given CMOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given CMOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given CMOCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given CMOCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given CMOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given CMOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given CMOCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F02 && CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given CMOCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given CMOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F02 && !CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given CMOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given CMOCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F03 && CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given CMOCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given CMOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F03 && !CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given CMOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given CMOCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F04 && CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given CMOCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given CMOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F04 && !CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given CMOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given CMOCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F05 && CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given CMOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F05 && !CMOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, - CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + CarbonMonoxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.A0007 && CMOCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when CMOCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.A0007 && CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when CMOCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when CMOCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when CMOCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "CMOCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "CMOCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "CMOCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "CMOCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when CMOCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("CMOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when CMOCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !CMOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, - CarbonMonoxideConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + CarbonMonoxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, + CarbonMonoxideConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + } + case 28: { + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("CMOCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), CarbonMonoxideConcentrationMeasurement::Id, CarbonMonoxideConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -25842,7 +25866,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand { public: Test_TC_FLDCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_FLDCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_FLDCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -25893,8 +25917,8 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -25903,7 +25927,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -25912,7 +25936,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -25921,10 +25945,19 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25934,7 +25967,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25943,7 +25976,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25953,7 +25986,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25962,7 +25995,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25972,7 +26005,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25981,7 +26014,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -25991,7 +26024,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26000,7 +26033,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26015,7 +26048,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26029,7 +26062,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26038,7 +26071,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26047,7 +26080,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26059,7 +26092,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26072,7 +26105,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26082,7 +26115,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26092,7 +26125,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26102,7 +26135,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26112,7 +26145,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26121,7 +26154,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26130,7 +26163,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26142,7 +26175,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26154,7 +26187,7 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26190,185 +26223,190 @@ class Test_TC_FLDCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given FLDCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !FLDCONC.S.F00 && !FLDCONC.S.F01 && !FLDCONC.S.F02 && !FLDCONC.S.F03 && !FLDCONC.S.F04 && !FLDCONC.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given FLDCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given FLDCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given FLDCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given FLDCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given FLDCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given FLDCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given FLDCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given FLDCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given FLDCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given FLDCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F02 && FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given FLDCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given FLDCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F02 && !FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given FLDCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given FLDCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F03 && FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given FLDCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given FLDCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F03 && !FLDCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given FLDCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given FLDCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F04 && FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given FLDCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given FLDCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F04 && !FLDCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given FLDCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given FLDCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F05 && FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given FLDCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F05 && !FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, - FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + FormaldehydeConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.A0007 && FLDCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when FLDCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.A0007 && FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when FLDCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when FLDCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when FLDCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "FLDCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "FLDCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "FLDCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "FLDCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when FLDCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("FLDCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when FLDCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !FLDCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, - FormaldehydeConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + FormaldehydeConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, + FormaldehydeConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + } + case 28: { + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("FLDCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FormaldehydeConcentrationMeasurement::Id, FormaldehydeConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -26616,7 +26654,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand { public: Test_TC_NDOCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_NDOCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_NDOCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -26667,8 +26705,8 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -26677,7 +26715,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -26686,7 +26724,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -26695,10 +26733,19 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26708,7 +26755,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26717,7 +26764,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26727,7 +26774,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26736,7 +26783,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26746,7 +26793,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26755,7 +26802,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26765,7 +26812,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -26774,7 +26821,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26789,7 +26836,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26803,7 +26850,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26812,7 +26859,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26821,7 +26868,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26833,7 +26880,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26846,7 +26893,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26856,7 +26903,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26866,7 +26913,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26876,7 +26923,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26886,7 +26933,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26895,7 +26942,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26904,7 +26951,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26916,7 +26963,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26928,7 +26975,7 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -26964,186 +27011,191 @@ class Test_TC_NDOCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given NDOCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !NDOCONC.S.F00 && !NDOCONC.S.F01 && !NDOCONC.S.F02 && !NDOCONC.S.F03 && !NDOCONC.S.F04 && !NDOCONC.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given NDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given NDOCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given NDOCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given NDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given NDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given NDOCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given NDOCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given NDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given NDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given NDOCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F02 && NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given NDOCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given NDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F02 && !NDOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given NDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given NDOCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F03 && NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given NDOCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given NDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F03 && !NDOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given NDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given NDOCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F04 && NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given NDOCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given NDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F04 && NDOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given NDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given NDOCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F05 && NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given NDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F05 && !NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, - NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + NitrogenDioxideConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.A0007 && NDOCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when NDOCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.A0007 && NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when NDOCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when NDOCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when NDOCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "NDOCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "NDOCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 3i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "NDOCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 3j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 3i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "NDOCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 3k: Check that LevelValue is excluded from AttributeList when NDOCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 3j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("NDOCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 3k: Check that LevelValue is excluded from AttributeList when NDOCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !NDOCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, - NitrogenDioxideConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + NitrogenDioxideConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, + NitrogenDioxideConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + } + case 28: { + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("NDOCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), NitrogenDioxideConcentrationMeasurement::Id, NitrogenDioxideConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -27395,7 +27447,7 @@ class Test_TC_NDOCONC_2_1Suite : public TestCommand class Test_TC_OZCONC_1_1Suite : public TestCommand { public: - Test_TC_OZCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OZCONC_1_1", 29, credsIssuerConfig) + Test_TC_OZCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_OZCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -27446,8 +27498,8 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -27456,7 +27508,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -27465,7 +27517,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -27474,10 +27526,19 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27487,7 +27548,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27496,7 +27557,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27506,7 +27567,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27515,7 +27576,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27525,7 +27586,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27534,7 +27595,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27544,7 +27605,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -27553,7 +27614,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27568,7 +27629,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27582,7 +27643,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27591,7 +27652,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27600,7 +27661,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27612,7 +27673,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27625,7 +27686,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27635,7 +27696,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27645,7 +27706,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27655,7 +27716,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27665,7 +27726,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27674,7 +27735,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27683,7 +27744,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27695,7 +27756,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27707,7 +27768,7 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -27743,184 +27804,188 @@ class Test_TC_OZCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given OZCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip(" !OZCONC.S.F00 && !OZCONC.S.F01 && !OZCONC.S.F02 && !OZCONC.S.F03 && !OZCONC.S.F04 && !OZCONC.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given OZCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given OZCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given OZCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given OZCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given OZCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given OZCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given OZCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given OZCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given OZCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given OZCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F02 && OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given OZCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given OZCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F02 && !OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given OZCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given OZCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F03 && OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given OZCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given OZCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F03 && !OZCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given OZCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given OZCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F04 && OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given OZCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given OZCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F04 && !OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given OZCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given OZCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F05 && OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given OZCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F05 && !OZCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, - OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + OzoneConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && OZCONC.S.A0007 && OZCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when OZCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("OZCONC.S.A0007 && OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when OZCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when OZCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when OZCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "OZCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "OZCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "OZCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "OZCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when OZCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("OZCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when OZCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !OZCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, - OzoneConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + OzoneConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, - OzoneConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + OzoneConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("OZCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, + OzoneConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), OzoneConcentrationMeasurement::Id, OzoneConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -28164,7 +28229,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand { public: Test_TC_PMHCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_PMHCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_PMHCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -28215,8 +28280,8 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -28225,7 +28290,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -28234,7 +28299,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -28243,10 +28308,19 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28256,7 +28330,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28265,7 +28339,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28275,7 +28349,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28284,7 +28358,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28294,7 +28368,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28303,7 +28377,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28313,7 +28387,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -28322,7 +28396,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28337,7 +28411,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28351,7 +28425,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28360,7 +28434,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28369,7 +28443,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28381,7 +28455,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28394,7 +28468,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28404,7 +28478,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28414,7 +28488,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28424,7 +28498,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28434,7 +28508,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28443,7 +28517,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28452,7 +28526,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28464,7 +28538,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28476,7 +28550,7 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -28512,184 +28586,189 @@ class Test_TC_PMHCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given PMHCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !PMHCONC.S.F00 && !PMHCONC.S.F01 && !PMHCONC.S.F02 && !PMHCONC.S.F03 && !PMHCONC.S.F04 && !PMHCONC.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given PMHCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given PMHCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given PMHCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given PMHCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given PMHCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given PMHCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given PMHCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given PMHCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given PMHCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given PMHCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F02 && PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given PMHCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given PMHCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F02 && !PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given PMHCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given PMHCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F03 && PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given PMHCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given PMHCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F03 && !PMHCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given PMHCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given PMHCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F04 && PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given PMHCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given PMHCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F04 && PMHCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given PMHCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given PMHCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F05 && PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given PMHCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F05 && !PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, - Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + Pm1ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.A0007 && PMHCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when PMHCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.A0007 && PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when PMHCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when PMHCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when PMHCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "PMHCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "PMHCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "PMHCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "PMHCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when PMHCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("PMHCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when PMHCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !PMHCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, - Pm1ConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + Pm1ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, - Pm1ConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + Pm1ConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("PMHCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, + Pm1ConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm1ConcentrationMeasurement::Id, Pm1ConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -28933,7 +29012,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand { public: Test_TC_PMICONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_PMICONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_PMICONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -28984,8 +29063,8 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -28994,7 +29073,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -29003,7 +29082,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -29012,10 +29091,19 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29025,7 +29113,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29034,7 +29122,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29044,7 +29132,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29053,7 +29141,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29063,7 +29151,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29072,7 +29160,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29082,7 +29170,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29091,7 +29179,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29106,7 +29194,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29120,7 +29208,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29129,7 +29217,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29138,7 +29226,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29150,7 +29238,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29163,7 +29251,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29173,7 +29261,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29183,7 +29271,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29193,7 +29281,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29203,7 +29291,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29212,7 +29300,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29221,7 +29309,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29233,7 +29321,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29245,7 +29333,7 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29281,184 +29369,189 @@ class Test_TC_PMICONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given PMICONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !PMICONC.S.F00 && !PMICONC.S.F01 && !PMICONC.S.F02 && !PMICONC.S.F03 && !PMICONC.S.F04 && !PMICONC.S.F05 "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given PMICONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given PMICONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given PMICONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given PMICONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given PMICONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given PMICONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given PMICONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given PMICONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given PMICONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given PMICONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F02 && PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given PMICONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given PMICONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F02 && !PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given PMICONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given PMICONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F03 && PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given PMICONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given PMICONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F03 && !PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given PMICONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given PMICONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F04 && PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given PMICONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given PMICONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F04 && !PMICONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given PMICONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given PMICONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F05 && PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given PMICONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F05 && !PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, - Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + Pm25ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && PMICONC.S.A0007 && PMICONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when PMICONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("PMICONC.S.A0007 && PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when PMICONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when PMICONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when PMICONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "PMICONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "PMICONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "PMICONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "PMICONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when PMICONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("PMICONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when PMICONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !PMICONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, - Pm25ConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + Pm25ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, - Pm25ConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + Pm25ConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("PMICONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, + Pm25ConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm25ConcentrationMeasurement::Id, Pm25ConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -29703,7 +29796,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand { public: Test_TC_PMKCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_PMKCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_PMKCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -29754,8 +29847,8 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -29764,7 +29857,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -29773,7 +29866,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -29782,10 +29875,19 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29795,7 +29897,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29804,7 +29906,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29814,7 +29916,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29823,7 +29925,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29833,7 +29935,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29842,7 +29944,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29852,7 +29954,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -29861,7 +29963,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29876,7 +29978,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29890,7 +29992,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29899,7 +30001,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29908,7 +30010,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29920,7 +30022,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29933,7 +30035,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29943,7 +30045,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29953,7 +30055,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29963,7 +30065,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29973,7 +30075,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29982,7 +30084,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -29991,7 +30093,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30003,7 +30105,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30015,7 +30117,7 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30051,184 +30153,189 @@ class Test_TC_PMKCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given PMKCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip( + " !PMKCONC.S.F00 && !PMKCONC.S.F01 && !PMKCONC.S.F02 && !PMKCONC.S.F03 && !PMKCONC.S.F04 && !PMKCONC.S.F05 "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given PMKCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given PMKCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given PMKCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given PMKCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given PMKCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given PMKCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given PMKCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given PMKCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given PMKCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given PMKCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F02 && PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given PMKCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given PMKCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F02 && !PMKCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given PMKCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given PMKCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F03 && PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given PMKCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given PMKCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F03 && !PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given PMKCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given PMKCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F04 && PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given PMKCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given PMKCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F04 && !PMKCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given PMKCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given PMKCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F05 && PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given PMKCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F05 && !PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, - Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + Pm10ConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.A0007 && PMKCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when PMKCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.A0007 && PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when PMKCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when PMKCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when PMKCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "PMKCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "PMKCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "PMKCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "PMKCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when PMKCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("PMKCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when PMKCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !PMKCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, - Pm10ConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + Pm10ConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, - Pm10ConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + Pm10ConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("PMKCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, + Pm10ConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Pm10ConcentrationMeasurement::Id, Pm10ConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -30472,7 +30579,7 @@ class Test_TC_PMKCONC_2_1Suite : public TestCommand class Test_TC_RNCONC_1_1Suite : public TestCommand { public: - Test_TC_RNCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_RNCONC_1_1", 29, credsIssuerConfig) + Test_TC_RNCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_RNCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -30523,8 +30630,8 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -30533,7 +30640,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -30542,7 +30649,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -30551,10 +30658,19 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30564,7 +30680,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30573,7 +30689,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30583,7 +30699,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30592,7 +30708,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30602,7 +30718,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30611,7 +30727,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30621,7 +30737,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -30630,7 +30746,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30645,7 +30761,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30659,7 +30775,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30668,7 +30784,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30677,7 +30793,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30689,7 +30805,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30702,7 +30818,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30712,7 +30828,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30722,7 +30838,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30732,7 +30848,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30742,7 +30858,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30751,7 +30867,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30760,7 +30876,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30772,7 +30888,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30784,7 +30900,7 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -30820,184 +30936,188 @@ class Test_TC_RNCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given RNCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo( + !ShouldSkip(" !RNCONC.S.F00 && !RNCONC.S.F01 && !RNCONC.S.F02 && !RNCONC.S.F03 && !RNCONC.S.F04 && !RNCONC.S.F05"), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given RNCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given RNCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given RNCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given RNCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given RNCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given RNCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given RNCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given RNCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given RNCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given RNCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F02 && RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given RNCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given RNCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F02 && !RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given RNCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given RNCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F03 && RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given RNCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given RNCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F03 && !RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given RNCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given RNCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F04 && RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given RNCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given RNCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F04 && RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given RNCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given RNCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F05 && RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given RNCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F05 && !RNCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, - RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); + RadonConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && RNCONC.S.A0007 && RNCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep( - 17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when RNCONC.S.A0007 is not set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("RNCONC.S.A0007 && RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep( + 18, + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when RNCONC.S.A0007 is not set"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when RNCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when RNCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "RNCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "RNCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "RNCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "RNCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when RNCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("RNCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when RNCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !RNCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, - RadonConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); + RadonConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, - RadonConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + RadonConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("RNCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, + RadonConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RadonConcentrationMeasurement::Id, RadonConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -31241,7 +31361,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand { public: Test_TC_TVOCCONC_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_TVOCCONC_1_1", 29, credsIssuerConfig) + TestCommand("Test_TC_TVOCCONC_1_1", 30, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -31292,8 +31412,8 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand { uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckValue("featureMap", value, 0UL)); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 3: @@ -31302,7 +31422,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; case 4: @@ -31311,7 +31431,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 1UL)); } break; case 5: @@ -31320,10 +31440,19 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand uint32_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); - VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL)); + } + break; + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31333,7 +31462,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 7: + case 8: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31342,7 +31471,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 4UL)); } break; - case 8: + case 9: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31352,7 +31481,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 2UL)); } break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31361,7 +31490,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 8UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31371,7 +31500,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31380,7 +31509,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 16UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31390,7 +31519,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { uint32_t value; @@ -31399,7 +31528,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 32UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31414,7 +31543,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31428,7 +31557,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31437,7 +31566,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 7UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31446,7 +31575,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 7UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31458,7 +31587,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 8UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31471,7 +31600,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 8UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31481,7 +31610,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); } break; - case 21: + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31491,7 +31620,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 4UL)); } break; - case 22: + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31501,7 +31630,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 6UL)); } break; - case 23: + case 24: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31511,7 +31640,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 6UL)); } break; - case 24: + case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31520,7 +31649,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 10UL)); } break; - case 25: + case 26: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31529,7 +31658,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintExcludes("value", value, 10UL)); } break; - case 26: + case 27: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31541,7 +31670,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 27: + case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31553,7 +31682,7 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 28: + case 29: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -31589,211 +31718,216 @@ class Test_TC_TVOCCONC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { - LogStep(2, "Step 3b: Given TVOCCONC.S.F00(MEA) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(2, "Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F00 && !TVOCCONC.S.F01 && !TVOCCONC.S.F02 && !TVOCCONC.S.F03 && !TVOCCONC.S.F04 " + "&& !TVOCCONC.S.F05 "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3c: Given TVOCCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(3, "Step 3b: Given TVOCCONC.S.F00(MEA) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 4: { - LogStep(4, "Step 3d: Given TVOCCONC.S.F01(LEV) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(4, "Step 3c: Given TVOCCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 3e: Given TVOCCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(5, "Step 3d: Given TVOCCONC.S.F01(LEV) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "Step 3f: Given TVOCCONC.S.F02(MED) ensure featuremap has the correct bit set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "Step 3e: Given TVOCCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 7: { - LogStep(7, "Step 3g: Given TVOCCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(7, "Step 3f: Given TVOCCONC.S.F02(MED) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F02 && TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 3h: Given TVOCCONC.S.F03(CRI) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "Step 3g: Given TVOCCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F02 && !TVOCCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 3i: Given TVOCCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 3h: Given TVOCCONC.S.F03(CRI) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F03 && TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 3j: Given TVOCCONC.S.F04(PEA) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Step 3i: Given TVOCCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F03 && !TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 3k: Given TVOCCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 3j: Given TVOCCONC.S.F04(PEA) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F04 && TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 3l: Given TVOCCONC.S.F05(AVG) ensure featuremap has the correct bits set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 3k: Given TVOCCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F04 && !TVOCCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 3m: Given TVOCCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 3l: Given TVOCCONC.S.F05(AVG) ensure featuremap has the correct bits set"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F05 && TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 3m: Given TVOCCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F05 && !TVOCCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, - TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, + TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 15: { LogStep(15, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.A0007 && TVOCCONC.S.F00"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep(17, - "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when TVOCCONC.S.A0007 is not " - "set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4b: Read the optional attribute Uncertainty in AttributeList"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.A0007 && TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { LogStep(18, - "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " - "and Measurement Unit in AttributeList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when TVOCCONC.S.A0007 is not " + "set"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.A0007 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { LogStep(19, - "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " - "excluded from AttributeList when TVOCCONC.S.F00 (MEA) is not set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, MaxMeasuredValue " + "and Measurement Unit in AttributeList"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { LogStep(20, - "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and Uncertainty are " + "excluded from AttributeList when TVOCCONC.S.F00 (MEA) is not set"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 21: { LogStep(21, - "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " - "TVOCCONC.S.F04 (PEA) is not set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & PeakMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 22: { LogStep(22, - "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " - "AttributeList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from AttributeList when " + "TVOCCONC.S.F04 (PEA) is not set"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F04 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 23: { LogStep(23, - "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " - "TVOCCONC.S.F05 (AVG) is not set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + "Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue AverageMeasuredValueWindow in " + "AttributeList"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 24: { - LogStep(24, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(24, + "Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from AttributeList when " + "TVOCCONC.S.F05 (AVG) is not set"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F05 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 25: { - LogStep(25, "Step 4k: Check that LevelValue is excluded from AttributeList when TVOCCONC.S.F01 (LEV) is not set"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(25, "Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList"); + VerifyOrDo(!ShouldSkip("TVOCCONC.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 26: { - LogStep(26, "Step 5l: Read the global attribute: EventList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(26, "Step 4k: Check that LevelValue is excluded from AttributeList when TVOCCONC.S.F01 (LEV) is not set"); + VerifyOrDo(!ShouldSkip(" !TVOCCONC.S.F01 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, - TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::EventList::Id, true, + TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AttributeList::Id, true, chip::NullOptional); } case 27: { - LogStep(27, "Step 6: Read the global attribute: AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(27, "Step 5l: Read the global attribute: EventList"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, - TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, + TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::EventList::Id, true, chip::NullOptional); } case 28: { - LogStep(28, "Step 7: Read the global attribute: GeneratedCommandList"); - VerifyOrDo(!ShouldSkip("TVOCCONC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(28, "Step 6: Read the global attribute: AcceptedCommandList"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, + TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::AcceptedCommandList::Id, true, + chip::NullOptional); + } + case 29: { + LogStep(29, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, TotalVolatileOrganicCompoundsConcentrationMeasurement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); @@ -35314,25 +35448,23 @@ class Test_TC_DESC_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - VerifyOrDo(!ShouldSkip("DESC.S.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::ClusterRevision::Id, true, chip::NullOptional); } case 2: { LogStep(2, "Step 3: Read the global attribute: FeatureMap"); - VerifyOrDo(!ShouldSkip("DESC.S.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 3: { LogStep(3, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && DESC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::AttributeList::Id, true, chip::NullOptional); } case 4: { LogStep(4, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED && DESC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::AttributeList::Id, true, chip::NullOptional); } @@ -35344,7 +35476,7 @@ class Test_TC_DESC_1_1Suite : public TestCommand "allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. 3.The list SHALL NOT contain any values " "in the Test Vendor or invalid range: (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 - 0xXXXX_FFFF) " "and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DESC.S.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -35359,7 +35491,7 @@ class Test_TC_DESC_1_1Suite : public TestCommand "these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test Vendor or invalid range: " "(0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the " "allowed MEI range (0x0001 - 0xFFF1)"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DESC.S.Afffa"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -35374,7 +35506,7 @@ class Test_TC_DESC_1_1Suite : public TestCommand "0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test Vendor or invalid " "range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX " "is the allowed MEI range (0x0001 - 0xFFF1)"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DESC.S.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -35389,7 +35521,7 @@ class Test_TC_DESC_1_1Suite : public TestCommand "0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test Vendor or invalid " "range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX " "is the allowed MEI range (0x0001 - 0xFFF1)"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && DESC.S.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); @@ -38685,7 +38817,7 @@ class Test_TC_FAN_3_2Suite : public TestCommand chip::NullOptional); } case 2: { - LogStep(2, "Step 3: TH writes TH writes to the DUT the a value less than or equal to the value read in step 2"); + LogStep(2, "Step 3: TH writes to the DUT the a value less than or equal to the value read in step 2"); VerifyOrDo(!ShouldSkip("FAN.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::DataModel::Nullable value; @@ -38703,13 +38835,13 @@ class Test_TC_FAN_3_2Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, "Step 4: TH reads from the DUT the the SpeedSetting attribute"); + LogStep(4, "Step 4: TH reads from the DUT the SpeedSetting attribute"); VerifyOrDo(!ShouldSkip("FAN.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::SpeedSetting::Id, true, chip::NullOptional); } case 5: { - LogStep(5, "Step 5: TH reads from the DUT the the SpeedCurrent attribute"); + LogStep(5, "Step 5: TH reads from the DUT the SpeedCurrent attribute"); VerifyOrDo(!ShouldSkip("FAN.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), FanControl::Id, FanControl::Attributes::SpeedCurrent::Id, true, chip::NullOptional); @@ -39913,6 +40045,292 @@ class Test_TC_DGGEN_2_1Suite : public TestCommand } }; +class Test_TC_GRPKEY_1_1Suite : public TestCommand +{ +public: + Test_TC_GRPKEY_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_GRPKEY_1_1", 13, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_GRPKEY_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, 2U)); + 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, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65530UL)); + 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)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + 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 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + 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("eventList", iter_0, 0)); + } + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + } + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); + } + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); + } + break; + case 12: + 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, "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: TH reads the ClusterRevision from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::ClusterRevision::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Step 3a: TH reads the FeatureMap from DUT"); + VerifyOrDo(!ShouldSkip(" !GRPKEY.S.F00 "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::FeatureMap::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Step 3b: Given GRPKEY.S.F00(CS) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("GRPKEY.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::FeatureMap::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "Step 4a: TH reads AttributeList from DUT"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "Step 4a: TH reads AttributeList from DUT"); + VerifyOrDo(!ShouldSkip(" !PICS_EVENT_LIST_ENABLED "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, + "Step 4b: The list SHALL NOT contain any additional values in the standard or scoped range: (0x0000_0000 - " + "0x0000_4FFF) and (0x0000_F000 - 0x0000_FFFE). 2.The list MAY contain values in the Manufacturer Extensible " + "Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_4FFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1), " + "these values SHALL be ignored. 3.TThe list SHALL NOT contain any values in the Test Vendor or invalid range: " + "(0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), " + "where XXXX is the allowed MEI range (0x0001 - 0xFFF1)"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, "Step 5a: TH1 reads EventList from DUT"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::EventList::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, + "Step 5b: TH reads EventList attribute from DUT. 1.The list SHALL NOT contain any additional values in the " + "standard or scoped range: (0x0000_0000 - 0x0000_00FF). 2.The list MAY contain values in the Manufacturer " + "Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - " + "0xFFF1), these values SHALL be ignored. 3.The list SHALL NOT contain any values in the Test Vendor or invalid " + "range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX " + "is the allowed MEI range (0x0001 - 0xFFF1)"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 9: { + LogStep(9, "Step 6a: TH reads AcceptedCommandList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, + "Step 6b: TH reads AcceptedCommandList attribute from DUT. 1.The list MAY contain values in the Manufacturer " + "Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - " + "0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test Vendor or invalid " + "range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX " + "is the allowed MEI range (0x0001 - 0xFFF1)"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 11: { + LogStep(11, "Step 7a: TH reads GeneratedCommandList from DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, + GroupKeyManagement::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, + "Step 7b: TH reads GeneratedCommandList attribute from DUT. 1.The list MAY contain values in the Manufacturer " + "Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range (0x0001 - " + "0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test Vendor or invalid " + "range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX " + "is the allowed MEI range (0x0001 - 0xFFF1)"); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_ICDM_1_1Suite : public TestCommand { public: @@ -65662,6 +66080,276 @@ class Test_TC_SWTCH_2_1Suite : public TestCommand } }; +class Test_TC_RVCOPSTATE_1_1Suite : public TestCommand +{ +public: + Test_TC_RVCOPSTATE_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_RVCOPSTATE_1_1", 13, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_RVCOPSTATE_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, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 65530UL)); + 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, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 5UL)); + 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, 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, 0UL)); + } + 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, 1UL)); + } + 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, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + } + 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, 1UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); + } + 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, 2UL)); + } + 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, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "list", "list")); + VerifyOrReturn(CheckConstraintContains("value", value, 4UL)); + } + 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: TH reads the ClusterRevision attribute from the DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::ClusterRevision::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Step 3: TH reads the FeatureMap attribute from the DUT"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::FeatureMap::Id, true, chip::NullOptional); + } + case 3: { + LogStep(3, "Step 4a: TH reads the AttributeList attribute from the DUT"); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 4: { + LogStep(4, "Step 4a: TH reads the AttributeList attribute from the DUT"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 5: { + LogStep(5, "Step 4b: TH reads from the DUT the optional attribute(CountdownTime) in the AttributeList from the DUT"); + VerifyOrDo(!ShouldSkip("RVCOPSTATE.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "Step 5a: TH reads from the DUT the EventList attribute."); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::EventList::Id, true, chip::NullOptional); + } + case 7: { + LogStep(7, "Step 5b: TH reads from the DUT the optional event(OperationCompletion) in EventList."); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.E01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::EventList::Id, true, chip::NullOptional); + } + case 8: { + LogStep(8, "Step 6a: Read the optional command(Pause) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 9: { + LogStep(9, "Step 6b: Read the optional command(Stop) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("RVCOPSTATE.S.C01.Rsp || RVCOPSTATE.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 10: { + LogStep(10, "Step 6c: Read the optional command(Start) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("RVCOPSTATE.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 11: { + LogStep(11, "Step 6d: Read the optional command(Resume) in AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("RVCOPSTATE.S.C03.Rsp || RVCOPSTATE.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, "Step 7: Read the global attribute: GeneratedCommandList"); + VerifyOrDo( + !ShouldSkip(" RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C01.Rsp || RVCOPSTATE.S.C02.Rsp || RVCOPSTATE.S.C03.Rsp "), + return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), RvcOperationalState::Id, + RvcOperationalState::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_TMP_1_1Suite : public TestCommand { public: @@ -66006,7 +66694,7 @@ class Test_TC_TMP_2_1Suite : public TestCommand class Test_TC_TSTAT_1_1Suite : public TestCommand { public: - Test_TC_TSTAT_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_1_1", 26, credsIssuerConfig) + Test_TC_TSTAT_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_1_1", 59, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -66045,12 +66733,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand 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, 5U)); - VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); - } + shouldContinue = true; break; case 2: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); @@ -66116,6 +66799,15 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand } break; case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint32_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + VerifyOrReturn(CheckConstraintType("value", "bitmap32", "bitmap32")); + VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 64UL)); + } + break; + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66132,7 +66824,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 10: + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66148,7 +66840,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 65533UL)); } break; - case 11: + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66157,7 +66849,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 18UL)); } break; - case 12: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66166,7 +66858,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 17UL)); } break; - case 13: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66175,7 +66867,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 2UL)); } break; - case 14: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66184,7 +66876,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 20UL)); } break; - case 15: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66193,7 +66885,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 19UL)); } break; - case 16: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66204,7 +66896,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 25UL)); } break; - case 17: + case 18: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66215,7 +66907,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 34UL)); } break; - case 18: + case 19: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66226,7 +66918,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 54UL)); } break; - case 19: + case 20: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66237,16 +66929,295 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 57UL)); } break; - case 20: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - chip::app::DataModel::DecodableList value; + chip::app::DataModel::DecodableList value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "list", "list")); - VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 21: + case 22: + 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 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, 16UL)); + } + break; + 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, 26UL)); + } + break; + case 25: + 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, 29UL)); + } + break; + 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, 35UL)); + } + break; + case 27: + 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, 36UL)); + } + break; + case 28: + 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, 37UL)); + } + break; + case 29: + 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, 41UL)); + } + break; + case 30: + 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, 48UL)); + } + break; + case 31: + 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, 49UL)); + } + break; + case 32: + 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, 50UL)); + } + break; + case 33: + 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, 58UL)); + } + break; + case 34: + 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, 64UL)); + } + break; + case 35: + 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, 65UL)); + } + break; + case 36: + 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, 66UL)); + } + break; + case 37: + 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, 67UL)); + } + break; + case 38: + 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, 68UL)); + } + break; + case 39: + 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, 69UL)); + } + break; + case 40: + 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, 70UL)); + } + break; + case 41: + 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, 71UL)); + } + break; + case 42: + 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 43: + 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, 4UL)); + } + break; + case 44: + 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 45: + 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, 21UL)); + } + break; + case 46: + 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, 22UL)); + } + break; + case 47: + 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 48: + 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, 6UL)); + } + break; + case 49: + 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 50: + 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, 23UL)); + } + break; + case 51: + 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, 24UL)); + } + break; + case 52: + 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, 30UL)); + } + break; + case 53: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66258,7 +67229,16 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 3UL)); } break; - case 22: + case 54: + 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, 4UL)); + } + break; + case 55: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66270,7 +67250,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 23: + case 56: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66279,7 +67259,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 24: + case 57: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -66288,7 +67268,7 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 1UL)); } break; - case 25: + case 58: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -66316,8 +67296,13 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand } case 1: { LogStep(1, "Step 2: Read the global attribute: ClusterRevision"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::ClusterRevision::Id, true, - chip::NullOptional); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); } case 2: { LogStep(2, "Step 3a: Read the global attribute: FeatureMap"); @@ -66363,102 +67348,301 @@ class Test_TC_TSTAT_1_1Suite : public TestCommand chip::NullOptional); } case 9: { - LogStep(9, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + LogStep(9, "Step 3h: Given TSTAT.S.F06(LTNE) ensure featuremap has the correct bit set"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F06"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::FeatureMap::Id, true, chip::NullOptional); } case 10: { LogStep(10, "Step 4a: Read the global attribute: AttributeList"); - VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 11: { - LogStep(11, "Step 4b: Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Step 4a: Read the global attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("!PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 12: { - LogStep(12, "Step 4c: Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(12, "Step 4b: Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 13: { - LogStep(13, "Step 4d: Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(13, "Step 4c: Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 14: { - LogStep(14, "Step 4e: Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Step 4d: Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 15: { - LogStep(15, "Step 4f: Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(15, "Step 4e: Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 16: { - LogStep(16, "Step 4g: Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(16, "Step 4f: Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 17: { - LogStep(17, "Step 4h: Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(17, "Step 4g: Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 18: { - LogStep(18, "Step 4i: Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(18, "Step 4h: Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 19: { - LogStep(19, "Step 4j: Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in AttributeList"); - VerifyOrDo(!ShouldSkip("TSTAT.S.F04 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(19, "Step 4i: Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, chip::NullOptional); } case 20: { - LogStep(20, "Step 5a: Read the global attribute: AcceptedCommandList"); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AcceptedCommandList::Id, - true, chip::NullOptional); + LogStep(20, "Step 4j: Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F04 && TSTAT.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); } case 21: { - LogStep(21, "Step 5b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList"); + LogStep(21, "Step 4k: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 22: { + LogStep(22, "Step 4l: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 23: { + LogStep(23, "Step 4m: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 24: { + LogStep(24, "Step 4n: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 25: { + LogStep(25, "Step 4o: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A001d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 26: { + LogStep(26, "Step 4p: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 27: { + LogStep(27, "Step 4q: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 28: { + LogStep(28, "Step 4r: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 29: { + LogStep(29, "Step 4s: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 30: { + LogStep(30, "Step 4t: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 31: { + LogStep(31, "Step 4u: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 32: { + LogStep(32, "Step 4x: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 33: { + LogStep(33, "Step 5y: Read the optional attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 34: { + LogStep(34, "Step 4z: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0040"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 35: { + LogStep(35, "Step 4A: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0041"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 36: { + LogStep(36, "Step 4B: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0042"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 37: { + LogStep(37, "Step 4C: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0043"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 38: { + LogStep(38, "Step 5D: Read the optional attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0044"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 39: { + LogStep(39, "Step 4E: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0045"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 40: { + LogStep(40, "Step 4F: Read the optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0046"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 41: { + LogStep(41, "Step 5G: Read the optional attribute: AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.A0047"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 42: { + LogStep(42, "Step 4H: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 43: { + LogStep(43, "Step 4I: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 44: { + LogStep(44, "Step 4J: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 45: { + LogStep(45, "Step 4K: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 46: { + LogStep(46, "Step 4L: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 47: { + LogStep(47, "Step 4M: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 48: { + LogStep(48, "Step 4N: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 49: { + LogStep(49, "Step 4O: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 50: { + LogStep(50, "Step 4P: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 51: { + LogStep(51, "Step 4Q: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 52: { + LogStep(52, "Step 4R: Read the Feature dependent(TSTAT.S.F05(AUTO)) optional attribute in AttributeList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.F05 && TSTAT.S.A001e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AttributeList::Id, true, + chip::NullOptional); + } + case 53: { + LogStep(53, "Step 5a: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 22: { - LogStep(22, "Step 6a: Read the global attribute: GeneratedCommandList"); + case 54: { + LogStep(54, "Step 5b: Read the optional attribute: AcceptedCommandList"); + VerifyOrDo(!ShouldSkip("TSTAT.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::AcceptedCommandList::Id, + true, chip::NullOptional); + } + case 55: { + LogStep(55, "Step 6a: Read the global attribute: GeneratedCommandList"); VerifyOrDo(!ShouldSkip(" !TSTAT.S.C04.Rsp && !TSTAT.S.C02.Rsp "), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 23: { - LogStep(23, "Step 6b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in GeneratedCommandList"); + case 56: { + LogStep(56, "Step 6b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in GeneratedCommandList"); VerifyOrDo(!ShouldSkip("TSTAT.S.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 24: { - LogStep(24, "Step 6c: Read optional command (GetRelayStatusLogResponse) in GeneratedCommandList"); + case 57: { + LogStep(57, "Step 6c: Read optional command (GetRelayStatusLogResponse) in GeneratedCommandList"); VerifyOrDo(!ShouldSkip("TSTAT.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Thermostat::Id, Thermostat::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } - case 25: { - LogStep(25, + case 58: { + LogStep(58, "Step 7: Read EventList attribute from the DUT.For this cluster the list is usually empty but it can contain " "manufacturer specific event IDs."); VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); @@ -108156,7 +109340,7 @@ class Test_TC_DRLK_2_2Suite : public TestCommand ); } case 16: { - LogStep(16, "TStep 10a: H reads the WrongCodeEntryLimit attribute from the DUT"); + LogStep(16, "Step 10a: H reads the WrongCodeEntryLimit attribute from the DUT"); VerifyOrDo(!ShouldSkip("DRLK.S.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), DoorLock::Id, DoorLock::Attributes::WrongCodeEntryLimit::Id, true, chip::NullOptional); @@ -113993,7 +115177,7 @@ class Test_TC_ACFREMON_1_1Suite : public TestCommand { public: Test_TC_ACFREMON_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_ACFREMON_1_1", 14, credsIssuerConfig) + TestCommand("Test_TC_ACFREMON_1_1", 16, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -114125,6 +115309,24 @@ class Test_TC_ACFREMON_1_1Suite : public TestCommand } 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, 4UL)); + } + 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, 5UL)); + } + break; + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114136,7 +115338,7 @@ class Test_TC_ACFREMON_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 11: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114144,7 +115346,7 @@ class Test_TC_ACFREMON_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 12: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114153,7 +115355,7 @@ class Test_TC_ACFREMON_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 13: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114236,30 +115438,42 @@ class Test_TC_ACFREMON_1_1Suite : public TestCommand ActivatedCarbonFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 4c: Read the optional attribute InPlaceIndicator (ACFREMON.S.A0002) in AttributeList"); - VerifyOrDo(!ShouldSkip("ACFREMON.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 4c: Read the optional attribute InPlaceIndicator (ACFREMON.S.A0003) in AttributeList"); + VerifyOrDo(!ShouldSkip("ACFREMON.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, ActivatedCarbonFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 5: TH reads EventList attribute from DUT"); + LogStep(10, "Step 4d: Read the optional attribute LastChangedTime (ACFREMON.S.A0004) in AttributeList"); + VerifyOrDo(!ShouldSkip("ACFREMON.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, + ActivatedCarbonFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 11: { + LogStep(11, "Step 4e: Read the optional attribute ReplacementProductList (ACFREMON.S.F02) in AttributeList"); + VerifyOrDo(!ShouldSkip("ACFREMON.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, + ActivatedCarbonFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, "Step 5: TH reads EventList attribute from DUT"); VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, ActivatedCarbonFilterMonitoring::Attributes::EventList::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Step 6a: Read the global attribute: AcceptedCommandList"); + case 13: { + LogStep(13, "Step 6a: Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, ActivatedCarbonFilterMonitoring::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList"); + case 14: { + LogStep(14, "Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("ACFREMON.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, ActivatedCarbonFilterMonitoring::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Step 7: Read the global attribute: GeneratedCommandList"); + case 15: { + LogStep(15, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ActivatedCarbonFilterMonitoring::Id, ActivatedCarbonFilterMonitoring::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -114432,7 +115646,7 @@ class Test_TC_HEPAFREMON_1_1Suite : public TestCommand { public: Test_TC_HEPAFREMON_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_HEPAFREMON_1_1", 14, credsIssuerConfig) + TestCommand("Test_TC_HEPAFREMON_1_1", 16, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -114564,6 +115778,24 @@ class Test_TC_HEPAFREMON_1_1Suite : public TestCommand } 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, 4UL)); + } + 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, 5UL)); + } + break; + case 12: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114575,7 +115807,7 @@ class Test_TC_HEPAFREMON_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 11: + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114583,7 +115815,7 @@ class Test_TC_HEPAFREMON_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintType("value", "list", "list")); } break; - case 12: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114592,7 +115824,7 @@ class Test_TC_HEPAFREMON_1_1Suite : public TestCommand VerifyOrReturn(CheckConstraintContains("value", value, 0UL)); } break; - case 13: + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { chip::app::DataModel::DecodableList value; @@ -114669,36 +115901,48 @@ class Test_TC_HEPAFREMON_1_1Suite : public TestCommand HepaFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); } case 8: { - LogStep(8, "Step 4a: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList"); + LogStep(8, "Step 4b: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList"); VerifyOrDo(!ShouldSkip("HEPAFREMON.S.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, HepaFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); } case 9: { - LogStep(9, "Step 4b: Read the optional attribute InPlaceIndicator (HEPAFREMON.S.A0002) in AttributeList"); - VerifyOrDo(!ShouldSkip("HEPAFREMON.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(9, "Step 4c: Read the optional attribute InPlaceIndicator (HEPAFREMON.S.A0003) in AttributeList"); + VerifyOrDo(!ShouldSkip("HEPAFREMON.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, HepaFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); } case 10: { - LogStep(10, "Step 5: TH reads EventList attribute from DUT"); + LogStep(10, "Step 4d: Read the optional attribute LastChangedTime (HEPAFREMON.S.A0004) in AttributeList"); + VerifyOrDo(!ShouldSkip("HEPAFREMON.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, + HepaFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 11: { + LogStep(11, "Step 4e: Read the optional attribute ReplacementProductList (HEPAFREMON.S.F02) in AttributeList"); + VerifyOrDo(!ShouldSkip("HEPAFREMON.S.F02"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, + HepaFilterMonitoring::Attributes::AttributeList::Id, true, chip::NullOptional); + } + case 12: { + LogStep(12, "Step 5: TH reads EventList attribute from DUT"); VerifyOrDo(!ShouldSkip("PICS_EVENT_LIST_ENABLED"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, HepaFilterMonitoring::Attributes::EventList::Id, true, chip::NullOptional); } - case 11: { - LogStep(11, "Step 6a: Read the global attribute: AcceptedCommandList"); + case 13: { + LogStep(13, "Step 6a: Read the global attribute: AcceptedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, HepaFilterMonitoring::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 12: { - LogStep(12, "Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList"); + case 14: { + LogStep(14, "Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList"); VerifyOrDo(!ShouldSkip("HEPAFREMON.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, HepaFilterMonitoring::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } - case 13: { - LogStep(13, "Step 7: Read the global attribute: GeneratedCommandList"); + case 15: { + LogStep(15, "Step 7: Read the global attribute: GeneratedCommandList"); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), HepaFilterMonitoring::Id, HepaFilterMonitoring::Attributes::GeneratedCommandList::Id, true, chip::NullOptional); } @@ -117304,6 +118548,61 @@ class Test_TC_G_2_3Suite : public TestCommand } }; +class Test_TC_G_2_4Suite : public TestCommand +{ +public: + Test_TC_G_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_G_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_G_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_G_3_2Suite : public TestCommand { public: @@ -119565,65 +120864,10 @@ class Test_TC_CNET_4_16Suite : public TestCommand } }; -class Test_TC_CNET_4_17Suite : public TestCommand -{ -public: - Test_TC_CNET_4_17Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_17", 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_CNET_4_17Suite() {} - - 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_CNET_4_18Suite : public TestCommand +class Test_TC_CNET_4_20Suite : public TestCommand { public: - Test_TC_CNET_4_18Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_18", 0, credsIssuerConfig) + Test_TC_CNET_4_20Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_20", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119631,7 +120875,7 @@ class Test_TC_CNET_4_18Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_18Suite() {} + ~Test_TC_CNET_4_20Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119675,10 +120919,10 @@ class Test_TC_CNET_4_18Suite : public TestCommand } }; -class Test_TC_CNET_4_19Suite : public TestCommand +class Test_TC_CNET_4_21Suite : public TestCommand { public: - Test_TC_CNET_4_19Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_19", 0, credsIssuerConfig) + Test_TC_CNET_4_21Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_21", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119686,7 +120930,7 @@ class Test_TC_CNET_4_19Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_19Suite() {} + ~Test_TC_CNET_4_21Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119730,10 +120974,10 @@ class Test_TC_CNET_4_19Suite : public TestCommand } }; -class Test_TC_CNET_4_20Suite : public TestCommand +class Test_TC_CNET_4_22Suite : public TestCommand { public: - Test_TC_CNET_4_20Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_20", 0, credsIssuerConfig) + Test_TC_CNET_4_22Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_22", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119741,7 +120985,7 @@ class Test_TC_CNET_4_20Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_20Suite() {} + ~Test_TC_CNET_4_22Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119785,10 +121029,10 @@ class Test_TC_CNET_4_20Suite : public TestCommand } }; -class Test_TC_CNET_4_21Suite : public TestCommand +class Test_TC_DLOG_2_1Suite : public TestCommand { public: - Test_TC_CNET_4_21Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_21", 0, credsIssuerConfig) + Test_TC_DLOG_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119796,7 +121040,7 @@ class Test_TC_CNET_4_21Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_21Suite() {} + ~Test_TC_DLOG_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119840,10 +121084,10 @@ class Test_TC_CNET_4_21Suite : public TestCommand } }; -class Test_TC_CNET_4_22Suite : public TestCommand +class Test_TC_DLOG_2_2Suite : public TestCommand { public: - Test_TC_CNET_4_22Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_CNET_4_22", 0, credsIssuerConfig) + Test_TC_DLOG_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119851,7 +121095,7 @@ class Test_TC_CNET_4_22Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CNET_4_22Suite() {} + ~Test_TC_DLOG_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119895,10 +121139,10 @@ class Test_TC_CNET_4_22Suite : public TestCommand } }; -class Test_TC_DLOG_2_1Suite : public TestCommand +class Test_TC_DLOG_3_1Suite : public TestCommand { public: - Test_TC_DLOG_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_1", 0, credsIssuerConfig) + Test_TC_DLOG_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119906,7 +121150,7 @@ class Test_TC_DLOG_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DLOG_2_1Suite() {} + ~Test_TC_DLOG_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -119950,10 +121194,11 @@ class Test_TC_DLOG_2_1Suite : public TestCommand } }; -class Test_TC_DLOG_2_2Suite : public TestCommand +class Test_TC_DISHALM_1_1Suite : public TestCommand { public: - Test_TC_DLOG_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_2_2", 0, credsIssuerConfig) + Test_TC_DISHALM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_1_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -119961,7 +121206,7 @@ class Test_TC_DLOG_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DLOG_2_2Suite() {} + ~Test_TC_DISHALM_1_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120005,10 +121250,11 @@ class Test_TC_DLOG_2_2Suite : public TestCommand } }; -class Test_TC_DLOG_3_1Suite : public TestCommand +class Test_TC_DISHALM_2_1Suite : public TestCommand { public: - Test_TC_DLOG_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DLOG_3_1", 0, credsIssuerConfig) + Test_TC_DISHALM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120016,7 +121262,7 @@ class Test_TC_DLOG_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DLOG_3_1Suite() {} + ~Test_TC_DISHALM_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120060,11 +121306,11 @@ class Test_TC_DLOG_3_1Suite : public TestCommand } }; -class Test_TC_DISHALM_1_1Suite : public TestCommand +class Test_TC_DISHALM_3_1Suite : public TestCommand { public: - Test_TC_DISHALM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_1_1", 0, credsIssuerConfig) + Test_TC_DISHALM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120072,7 +121318,7 @@ class Test_TC_DISHALM_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_1_1Suite() {} + ~Test_TC_DISHALM_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120116,11 +121362,11 @@ class Test_TC_DISHALM_1_1Suite : public TestCommand } }; -class Test_TC_DISHALM_2_1Suite : public TestCommand +class Test_TC_DISHALM_3_2Suite : public TestCommand { public: - Test_TC_DISHALM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_2_1", 0, credsIssuerConfig) + Test_TC_DISHALM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120128,7 +121374,7 @@ class Test_TC_DISHALM_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_2_1Suite() {} + ~Test_TC_DISHALM_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120172,11 +121418,11 @@ class Test_TC_DISHALM_2_1Suite : public TestCommand } }; -class Test_TC_DISHALM_3_1Suite : public TestCommand +class Test_TC_DISHALM_3_3Suite : public TestCommand { public: - Test_TC_DISHALM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_1", 0, credsIssuerConfig) + Test_TC_DISHALM_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_DISHALM_3_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -120184,119 +121430,7 @@ class Test_TC_DISHALM_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DISHALM_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_DISHALM_3_2Suite : public TestCommand -{ -public: - Test_TC_DISHALM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_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_DISHALM_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_DISHALM_3_3Suite : public TestCommand -{ -public: - Test_TC_DISHALM_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DISHALM_3_3", 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_DISHALM_3_3Suite() {} + ~Test_TC_DISHALM_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -120893,116 +122027,6 @@ class Test_TC_DESC_2_1Suite : public TestCommand } }; -class Test_TC_FAN_3_3Suite : public TestCommand -{ -public: - Test_TC_FAN_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_3_3", 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_FAN_3_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) - { - 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_FAN_3_5Suite : public TestCommand -{ -public: - Test_TC_FAN_3_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_FAN_3_5", 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_FAN_3_5Suite() {} - - 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_CGEN_2_2Suite : public TestCommand { public: @@ -121168,10 +122192,10 @@ class Test_TC_DGGEN_2_3Suite : public TestCommand } }; -class Test_TC_DGGEN_3_1Suite : public TestCommand +class Test_TC_ICDM_2_2Suite : public TestCommand { public: - Test_TC_DGGEN_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DGGEN_3_1", 0, credsIssuerConfig) + Test_TC_ICDM_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ICDM_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121179,7 +122203,7 @@ class Test_TC_DGGEN_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGGEN_3_1Suite() {} + ~Test_TC_ICDM_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121223,10 +122247,10 @@ class Test_TC_DGGEN_3_1Suite : public TestCommand } }; -class Test_TC_ICDM_2_2Suite : public TestCommand +class Test_TC_ICDM_2_3Suite : public TestCommand { public: - Test_TC_ICDM_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ICDM_2_2", 0, credsIssuerConfig) + Test_TC_ICDM_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ICDM_2_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121234,7 +122258,7 @@ class Test_TC_ICDM_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ICDM_2_2Suite() {} + ~Test_TC_ICDM_2_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121278,10 +122302,10 @@ class Test_TC_ICDM_2_2Suite : public TestCommand } }; -class Test_TC_ICDM_2_3Suite : public TestCommand +class Test_TC_I_3_2Suite : public TestCommand { public: - Test_TC_ICDM_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ICDM_2_3", 0, credsIssuerConfig) + Test_TC_I_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_I_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121289,7 +122313,7 @@ class Test_TC_ICDM_2_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ICDM_2_3Suite() {} + ~Test_TC_I_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121333,10 +122357,10 @@ class Test_TC_ICDM_2_3Suite : public TestCommand } }; -class Test_TC_I_3_2Suite : public TestCommand +class Test_TC_IDM_1_1Suite : public TestCommand { public: - Test_TC_I_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_I_3_2", 0, credsIssuerConfig) + Test_TC_IDM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_1_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121344,7 +122368,7 @@ class Test_TC_I_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_I_3_2Suite() {} + ~Test_TC_IDM_1_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121388,10 +122412,10 @@ class Test_TC_I_3_2Suite : public TestCommand } }; -class Test_TC_IDM_1_1Suite : public TestCommand +class Test_TC_IDM_2_1Suite : public TestCommand { public: - Test_TC_IDM_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_1_1", 0, credsIssuerConfig) + Test_TC_IDM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121399,7 +122423,7 @@ class Test_TC_IDM_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_1_1Suite() {} + ~Test_TC_IDM_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121443,10 +122467,10 @@ class Test_TC_IDM_1_1Suite : public TestCommand } }; -class Test_TC_IDM_2_1Suite : public TestCommand +class Test_TC_IDM_2_2Suite : public TestCommand { public: - Test_TC_IDM_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_2_1", 0, credsIssuerConfig) + Test_TC_IDM_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121454,7 +122478,7 @@ class Test_TC_IDM_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_2_1Suite() {} + ~Test_TC_IDM_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121498,10 +122522,10 @@ class Test_TC_IDM_2_1Suite : public TestCommand } }; -class Test_TC_IDM_2_2Suite : public TestCommand +class Test_TC_IDM_3_1Suite : public TestCommand { public: - Test_TC_IDM_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_2_2", 0, credsIssuerConfig) + Test_TC_IDM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121509,7 +122533,7 @@ class Test_TC_IDM_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_2_2Suite() {} + ~Test_TC_IDM_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121553,10 +122577,10 @@ class Test_TC_IDM_2_2Suite : public TestCommand } }; -class Test_TC_IDM_3_1Suite : public TestCommand +class Test_TC_IDM_3_2Suite : public TestCommand { public: - Test_TC_IDM_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_3_1", 0, credsIssuerConfig) + Test_TC_IDM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121564,7 +122588,7 @@ class Test_TC_IDM_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_3_1Suite() {} + ~Test_TC_IDM_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121608,10 +122632,10 @@ class Test_TC_IDM_3_1Suite : public TestCommand } }; -class Test_TC_IDM_3_2Suite : public TestCommand +class Test_TC_IDM_4_1Suite : public TestCommand { public: - Test_TC_IDM_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_3_2", 0, credsIssuerConfig) + Test_TC_IDM_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121619,7 +122643,7 @@ class Test_TC_IDM_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_3_2Suite() {} + ~Test_TC_IDM_4_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121663,10 +122687,10 @@ class Test_TC_IDM_3_2Suite : public TestCommand } }; -class Test_TC_IDM_4_1Suite : public TestCommand +class Test_TC_IDM_4_2Suite : public TestCommand { public: - Test_TC_IDM_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_1", 0, credsIssuerConfig) + Test_TC_IDM_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121674,7 +122698,7 @@ class Test_TC_IDM_4_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_4_1Suite() {} + ~Test_TC_IDM_4_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121718,10 +122742,10 @@ class Test_TC_IDM_4_1Suite : public TestCommand } }; -class Test_TC_IDM_4_2Suite : public TestCommand +class Test_TC_IDM_4_3Suite : public TestCommand { public: - Test_TC_IDM_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_2", 0, credsIssuerConfig) + Test_TC_IDM_4_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121729,7 +122753,7 @@ class Test_TC_IDM_4_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_4_2Suite() {} + ~Test_TC_IDM_4_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121773,10 +122797,10 @@ class Test_TC_IDM_4_2Suite : public TestCommand } }; -class Test_TC_IDM_4_3Suite : public TestCommand +class Test_TC_IDM_4_4Suite : public TestCommand { public: - Test_TC_IDM_4_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_3", 0, credsIssuerConfig) + Test_TC_IDM_4_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121784,7 +122808,7 @@ class Test_TC_IDM_4_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_4_3Suite() {} + ~Test_TC_IDM_4_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121828,10 +122852,10 @@ class Test_TC_IDM_4_3Suite : public TestCommand } }; -class Test_TC_IDM_4_4Suite : public TestCommand +class Test_TC_IDM_5_1Suite : public TestCommand { public: - Test_TC_IDM_4_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_4_4", 0, credsIssuerConfig) + Test_TC_IDM_5_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_5_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121839,7 +122863,7 @@ class Test_TC_IDM_4_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_4_4Suite() {} + ~Test_TC_IDM_5_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121883,10 +122907,10 @@ class Test_TC_IDM_4_4Suite : public TestCommand } }; -class Test_TC_IDM_5_1Suite : public TestCommand +class Test_TC_IDM_5_2Suite : public TestCommand { public: - Test_TC_IDM_5_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_5_1", 0, credsIssuerConfig) + Test_TC_IDM_5_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_5_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121894,7 +122918,7 @@ class Test_TC_IDM_5_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_5_1Suite() {} + ~Test_TC_IDM_5_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121938,10 +122962,10 @@ class Test_TC_IDM_5_1Suite : public TestCommand } }; -class Test_TC_IDM_5_2Suite : public TestCommand +class Test_TC_IDM_6_1Suite : public TestCommand { public: - Test_TC_IDM_5_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_5_2", 0, credsIssuerConfig) + Test_TC_IDM_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -121949,7 +122973,7 @@ class Test_TC_IDM_5_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_5_2Suite() {} + ~Test_TC_IDM_6_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -121993,10 +123017,10 @@ class Test_TC_IDM_5_2Suite : public TestCommand } }; -class Test_TC_IDM_6_1Suite : public TestCommand +class Test_TC_IDM_6_2Suite : public TestCommand { public: - Test_TC_IDM_6_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_1", 0, credsIssuerConfig) + Test_TC_IDM_6_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -122004,7 +123028,7 @@ class Test_TC_IDM_6_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_6_1Suite() {} + ~Test_TC_IDM_6_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -122048,10 +123072,10 @@ class Test_TC_IDM_6_1Suite : public TestCommand } }; -class Test_TC_IDM_6_2Suite : public TestCommand +class Test_TC_IDM_6_3Suite : public TestCommand { public: - Test_TC_IDM_6_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_2", 0, credsIssuerConfig) + Test_TC_IDM_6_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -122059,7 +123083,7 @@ class Test_TC_IDM_6_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_6_2Suite() {} + ~Test_TC_IDM_6_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -122103,10 +123127,10 @@ class Test_TC_IDM_6_2Suite : public TestCommand } }; -class Test_TC_IDM_6_3Suite : public TestCommand +class Test_TC_IDM_6_4Suite : public TestCommand { public: - Test_TC_IDM_6_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_3", 0, credsIssuerConfig) + Test_TC_IDM_6_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -122114,7 +123138,7 @@ class Test_TC_IDM_6_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_6_3Suite() {} + ~Test_TC_IDM_6_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -122158,10 +123182,10 @@ class Test_TC_IDM_6_3Suite : public TestCommand } }; -class Test_TC_IDM_6_4Suite : public TestCommand +class Test_TC_IDM_7_1Suite : public TestCommand { public: - Test_TC_IDM_6_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_6_4", 0, credsIssuerConfig) + Test_TC_IDM_7_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_7_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -122169,7 +123193,7 @@ class Test_TC_IDM_6_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_6_4Suite() {} + ~Test_TC_IDM_7_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -122213,10 +123237,10 @@ class Test_TC_IDM_6_4Suite : public TestCommand } }; -class Test_TC_IDM_7_1Suite : public TestCommand +class Test_TC_IDM_8_1Suite : public TestCommand { public: - Test_TC_IDM_7_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_7_1", 0, credsIssuerConfig) + Test_TC_IDM_8_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_8_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -122224,7 +123248,7 @@ class Test_TC_IDM_7_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_7_1Suite() {} + ~Test_TC_IDM_8_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -122268,10 +123292,10 @@ class Test_TC_IDM_7_1Suite : public TestCommand } }; -class Test_TC_IDM_8_1Suite : public TestCommand +class Test_TC_IDM_10_1Suite : public TestCommand { public: - Test_TC_IDM_8_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_8_1", 0, credsIssuerConfig) + Test_TC_IDM_10_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_10_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -122279,7 +123303,62 @@ class Test_TC_IDM_8_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_IDM_8_1Suite() {} + ~Test_TC_IDM_10_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_IDM_11_1Suite : public TestCommand +{ +public: + Test_TC_IDM_11_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_IDM_11_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_IDM_11_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -126923,10 +128002,11 @@ class Test_TC_CADMIN_1_24Suite : public TestCommand } }; -class Test_TC_MOD_1_2Suite : public TestCommand +class Test_TC_CADMIN_1_25Suite : public TestCommand { public: - Test_TC_MOD_1_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_1_2", 0, credsIssuerConfig) + Test_TC_CADMIN_1_25Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_CADMIN_1_25", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -126934,7 +128014,7 @@ class Test_TC_MOD_1_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_1_2Suite() {} + ~Test_TC_CADMIN_1_25Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -126978,10 +128058,11 @@ class Test_TC_MOD_1_2Suite : public TestCommand } }; -class Test_TC_MOD_1_3Suite : public TestCommand +class Test_TC_CADMIN_1_26Suite : public TestCommand { public: - Test_TC_MOD_1_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_1_3", 0, credsIssuerConfig) + Test_TC_CADMIN_1_26Suite(CredentialIssuerCommands * credsIssuerConfig) : + TestCommand("Test_TC_CADMIN_1_26", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -126989,7 +128070,7 @@ class Test_TC_MOD_1_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_1_3Suite() {} + ~Test_TC_CADMIN_1_26Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127033,10 +128114,10 @@ class Test_TC_MOD_1_3Suite : public TestCommand } }; -class Test_TC_MOD_2_1Suite : public TestCommand +class Test_TC_MOD_1_2Suite : public TestCommand { public: - Test_TC_MOD_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_2_1", 0, credsIssuerConfig) + Test_TC_MOD_1_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_1_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127044,7 +128125,7 @@ class Test_TC_MOD_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_2_1Suite() {} + ~Test_TC_MOD_1_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127088,10 +128169,10 @@ class Test_TC_MOD_2_1Suite : public TestCommand } }; -class Test_TC_MOD_2_2Suite : public TestCommand +class Test_TC_MOD_1_3Suite : public TestCommand { public: - Test_TC_MOD_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_2_2", 0, credsIssuerConfig) + Test_TC_MOD_1_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_1_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127099,7 +128180,7 @@ class Test_TC_MOD_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_2_2Suite() {} + ~Test_TC_MOD_1_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127143,10 +128224,10 @@ class Test_TC_MOD_2_2Suite : public TestCommand } }; -class Test_TC_MOD_3_1Suite : public TestCommand +class Test_TC_MOD_2_1Suite : public TestCommand { public: - Test_TC_MOD_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_1", 0, credsIssuerConfig) + Test_TC_MOD_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127154,7 +128235,7 @@ class Test_TC_MOD_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_3_1Suite() {} + ~Test_TC_MOD_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127198,10 +128279,10 @@ class Test_TC_MOD_3_1Suite : public TestCommand } }; -class Test_TC_MOD_3_2Suite : public TestCommand +class Test_TC_MOD_2_2Suite : public TestCommand { public: - Test_TC_MOD_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_2", 0, credsIssuerConfig) + Test_TC_MOD_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127209,7 +128290,7 @@ class Test_TC_MOD_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_3_2Suite() {} + ~Test_TC_MOD_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127253,10 +128334,10 @@ class Test_TC_MOD_3_2Suite : public TestCommand } }; -class Test_TC_MOD_3_3Suite : public TestCommand +class Test_TC_MOD_3_1Suite : public TestCommand { public: - Test_TC_MOD_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_3", 0, credsIssuerConfig) + Test_TC_MOD_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127264,7 +128345,7 @@ class Test_TC_MOD_3_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_3_3Suite() {} + ~Test_TC_MOD_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127308,10 +128389,10 @@ class Test_TC_MOD_3_3Suite : public TestCommand } }; -class Test_TC_MOD_3_4Suite : public TestCommand +class Test_TC_MOD_3_2Suite : public TestCommand { public: - Test_TC_MOD_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_4", 0, credsIssuerConfig) + Test_TC_MOD_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127319,7 +128400,7 @@ class Test_TC_MOD_3_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_MOD_3_4Suite() {} + ~Test_TC_MOD_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127363,10 +128444,10 @@ class Test_TC_MOD_3_4Suite : public TestCommand } }; -class Test_TC_SU_1_1Suite : public TestCommand +class Test_TC_MOD_3_3Suite : public TestCommand { public: - Test_TC_SU_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_1_1", 0, credsIssuerConfig) + Test_TC_MOD_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127374,7 +128455,7 @@ class Test_TC_SU_1_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_1_1Suite() {} + ~Test_TC_MOD_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127418,10 +128499,10 @@ class Test_TC_SU_1_1Suite : public TestCommand } }; -class Test_TC_SU_2_1Suite : public TestCommand +class Test_TC_MOD_3_4Suite : public TestCommand { public: - Test_TC_SU_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_1", 0, credsIssuerConfig) + Test_TC_MOD_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_MOD_3_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127429,7 +128510,7 @@ class Test_TC_SU_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_1Suite() {} + ~Test_TC_MOD_3_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127473,10 +128554,10 @@ class Test_TC_SU_2_1Suite : public TestCommand } }; -class Test_TC_SU_2_2Suite : public TestCommand +class Test_TC_SU_1_1Suite : public TestCommand { public: - Test_TC_SU_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_2", 0, credsIssuerConfig) + Test_TC_SU_1_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_1_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127484,7 +128565,7 @@ class Test_TC_SU_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_2Suite() {} + ~Test_TC_SU_1_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127528,10 +128609,10 @@ class Test_TC_SU_2_2Suite : public TestCommand } }; -class Test_TC_SU_2_3Suite : public TestCommand +class Test_TC_SU_2_1Suite : public TestCommand { public: - Test_TC_SU_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_3", 0, credsIssuerConfig) + Test_TC_SU_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127539,7 +128620,7 @@ class Test_TC_SU_2_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_3Suite() {} + ~Test_TC_SU_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127583,10 +128664,10 @@ class Test_TC_SU_2_3Suite : public TestCommand } }; -class Test_TC_SU_2_4Suite : public TestCommand +class Test_TC_SU_2_2Suite : public TestCommand { public: - Test_TC_SU_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_4", 0, credsIssuerConfig) + Test_TC_SU_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127594,7 +128675,7 @@ class Test_TC_SU_2_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_4Suite() {} + ~Test_TC_SU_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127638,10 +128719,10 @@ class Test_TC_SU_2_4Suite : public TestCommand } }; -class Test_TC_SU_2_5Suite : public TestCommand +class Test_TC_SU_2_3Suite : public TestCommand { public: - Test_TC_SU_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_5", 0, credsIssuerConfig) + Test_TC_SU_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127649,7 +128730,7 @@ class Test_TC_SU_2_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_5Suite() {} + ~Test_TC_SU_2_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127693,10 +128774,10 @@ class Test_TC_SU_2_5Suite : public TestCommand } }; -class Test_TC_SU_2_6Suite : public TestCommand +class Test_TC_SU_2_4Suite : public TestCommand { public: - Test_TC_SU_2_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_6", 0, credsIssuerConfig) + Test_TC_SU_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127704,7 +128785,7 @@ class Test_TC_SU_2_6Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_6Suite() {} + ~Test_TC_SU_2_4Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127748,10 +128829,10 @@ class Test_TC_SU_2_6Suite : public TestCommand } }; -class Test_TC_SU_2_7Suite : public TestCommand +class Test_TC_SU_2_5Suite : public TestCommand { public: - Test_TC_SU_2_7Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_7", 0, credsIssuerConfig) + Test_TC_SU_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_5", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127759,7 +128840,7 @@ class Test_TC_SU_2_7Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_7Suite() {} + ~Test_TC_SU_2_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127803,10 +128884,10 @@ class Test_TC_SU_2_7Suite : public TestCommand } }; -class Test_TC_SU_2_8Suite : public TestCommand +class Test_TC_SU_2_6Suite : public TestCommand { public: - Test_TC_SU_2_8Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_8", 0, credsIssuerConfig) + Test_TC_SU_2_6Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_6", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127814,7 +128895,7 @@ class Test_TC_SU_2_8Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_2_8Suite() {} + ~Test_TC_SU_2_6Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127858,10 +128939,10 @@ class Test_TC_SU_2_8Suite : public TestCommand } }; -class Test_TC_SU_3_1Suite : public TestCommand +class Test_TC_SU_2_7Suite : public TestCommand { public: - Test_TC_SU_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_1", 0, credsIssuerConfig) + Test_TC_SU_2_7Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_7", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127869,7 +128950,7 @@ class Test_TC_SU_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_3_1Suite() {} + ~Test_TC_SU_2_7Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127913,10 +128994,10 @@ class Test_TC_SU_3_1Suite : public TestCommand } }; -class Test_TC_SU_3_2Suite : public TestCommand +class Test_TC_SU_2_8Suite : public TestCommand { public: - Test_TC_SU_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_2", 0, credsIssuerConfig) + Test_TC_SU_2_8Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_2_8", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127924,7 +129005,7 @@ class Test_TC_SU_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_3_2Suite() {} + ~Test_TC_SU_2_8Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -127968,10 +129049,10 @@ class Test_TC_SU_3_2Suite : public TestCommand } }; -class Test_TC_SU_3_3Suite : public TestCommand +class Test_TC_SU_3_1Suite : public TestCommand { public: - Test_TC_SU_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_3", 0, credsIssuerConfig) + Test_TC_SU_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_1", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -127979,7 +129060,7 @@ class Test_TC_SU_3_3Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_3_3Suite() {} + ~Test_TC_SU_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -128023,10 +129104,10 @@ class Test_TC_SU_3_3Suite : public TestCommand } }; -class Test_TC_SU_3_4Suite : public TestCommand +class Test_TC_SU_3_2Suite : public TestCommand { public: - Test_TC_SU_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_4", 0, credsIssuerConfig) + Test_TC_SU_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_2", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -128034,7 +129115,7 @@ class Test_TC_SU_3_4Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_3_4Suite() {} + ~Test_TC_SU_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -128078,10 +129159,10 @@ class Test_TC_SU_3_4Suite : public TestCommand } }; -class Test_TC_SU_4_1Suite : public TestCommand +class Test_TC_SU_3_3Suite : public TestCommand { public: - Test_TC_SU_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_4_1", 0, credsIssuerConfig) + Test_TC_SU_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_3", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -128089,7 +129170,7 @@ class Test_TC_SU_4_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_4_1Suite() {} + ~Test_TC_SU_3_3Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -128133,10 +129214,10 @@ class Test_TC_SU_4_1Suite : public TestCommand } }; -class Test_TC_SU_4_2Suite : public TestCommand +class Test_TC_SU_3_4Suite : public TestCommand { public: - Test_TC_SU_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_4_2", 0, credsIssuerConfig) + Test_TC_SU_3_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_3_4", 0, credsIssuerConfig) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -128144,7 +129225,117 @@ class Test_TC_SU_4_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_SU_4_2Suite() {} + ~Test_TC_SU_3_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_SU_4_1Suite : public TestCommand +{ +public: + Test_TC_SU_4_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_4_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_SU_4_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_SU_4_2Suite : public TestCommand +{ +public: + Test_TC_SU_4_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_SU_4_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_SU_4_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -132385,7 +133576,7 @@ class Test_TC_CC_3_1Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 13: { - LogStep(13, "TStep 2f: H reads CurrentHue attribute from DUT"); + LogStep(13, "Step 2f: H reads CurrentHue attribute from DUT"); VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id, true, chip::NullOptional); @@ -132529,8 +133720,7 @@ class Test_TC_CC_3_1Suite : public TestCommand return WaitForMs(kIdentityAlpha, value); } case 27: { - LogStep(27, - "TStep 4b: H sends MoveToHue command to DUT with Hue=120, Direction=0x02 (up) and TransitionTime=300 (30s)"); + LogStep(27, "Step 4b: H sends MoveToHue command to DUT with Hue=120, Direction=0x02 (up) and TransitionTime=300 (30s)"); VerifyOrDo(!ShouldSkip("CC.S.F00 && CC.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::ColorControl::Commands::MoveToHue::Type value; @@ -135902,61 +137092,6 @@ class Test_TC_DRLK_3_2Suite : public TestCommand } }; -class Test_TC_DRLK_3_3Suite : public TestCommand -{ -public: - Test_TC_DRLK_3_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_DRLK_3_3", 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_DRLK_3_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) - { - 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_LCFG_2_1Suite : public TestCommand { public: @@ -136012,61 +137147,6 @@ class Test_TC_LCFG_2_1Suite : public TestCommand } }; -class Test_TC_LVL_8_1Suite : public TestCommand -{ -public: - Test_TC_LVL_8_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LVL_8_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_LVL_8_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_LWM_1_1Suite : public TestCommand { public: @@ -140935,10 +142015,10 @@ class Test_TC_TMP_2_2Suite : public TestCommand } }; -class Test_TC_TSTAT_3_1Suite : public TestCommand +class Test_TC_TSTAT_3_2Suite : public TestCommand { public: - Test_TC_TSTAT_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_1", 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); @@ -140946,7 +142026,7 @@ class Test_TC_TSTAT_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TSTAT_3_1Suite() {} + ~Test_TC_TSTAT_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -140990,10 +142070,11 @@ class Test_TC_TSTAT_3_1Suite : public TestCommand } }; -class Test_TC_TSTAT_3_2Suite : public TestCommand +class Test_TC_DGTHREAD_2_5Suite : public TestCommand { public: - Test_TC_TSTAT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_TSTAT_3_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); @@ -141001,7 +142082,7 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TSTAT_3_2Suite() {} + ~Test_TC_DGTHREAD_2_5Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -141045,11 +142126,10 @@ class Test_TC_TSTAT_3_2Suite : public TestCommand } }; -class Test_TC_DGTHREAD_2_5Suite : public TestCommand +class Test_TC_ACT_2_1Suite : public TestCommand { public: - Test_TC_DGTHREAD_2_5Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_DGTHREAD_2_5", 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); @@ -141057,7 +142137,7 @@ class Test_TC_DGTHREAD_2_5Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_2_5Suite() {} + ~Test_TC_ACT_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -141101,10 +142181,10 @@ class Test_TC_DGTHREAD_2_5Suite : public TestCommand } }; -class Test_TC_ACT_2_1Suite : public TestCommand +class Test_TC_ACT_2_2Suite : public TestCommand { public: - Test_TC_ACT_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_2_1", 0, 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); @@ -141112,7 +142192,7 @@ class Test_TC_ACT_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_2_1Suite() {} + ~Test_TC_ACT_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -141156,10 +142236,10 @@ class Test_TC_ACT_2_1Suite : public TestCommand } }; -class Test_TC_ACT_2_2Suite : public TestCommand +class Test_TC_ACT_3_2Suite : public TestCommand { public: - Test_TC_ACT_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_2_2", 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); @@ -141167,7 +142247,7 @@ class Test_TC_ACT_2_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_2_2Suite() {} + ~Test_TC_ACT_3_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -141211,10 +142291,10 @@ class Test_TC_ACT_2_2Suite : public TestCommand } }; -class Test_TC_ACT_3_2Suite : public TestCommand +class Test_TC_LTIME_3_1Suite : public TestCommand { public: - Test_TC_ACT_3_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACT_3_2", 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); @@ -141222,7 +142302,7 @@ class Test_TC_ACT_3_2Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_3_2Suite() {} + ~Test_TC_LTIME_3_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -141266,10 +142346,10 @@ class Test_TC_ACT_3_2Suite : public TestCommand } }; -class Test_TC_LTIME_2_1Suite : public TestCommand +class Test_TC_BIND_2_1Suite : public TestCommand { public: - Test_TC_LTIME_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_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); @@ -141277,7 +142357,7 @@ class Test_TC_LTIME_2_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LTIME_2_1Suite() {} + ~Test_TC_BIND_2_1Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -141321,10 +142401,10 @@ class Test_TC_LTIME_2_1Suite : public TestCommand } }; -class Test_TC_LTIME_3_1Suite : public TestCommand +class Test_TC_BIND_2_2Suite : public TestCommand { public: - Test_TC_LTIME_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_LTIME_3_1", 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); @@ -141332,173 +142412,7 @@ class Test_TC_LTIME_3_1Suite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_LTIME_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_TIMESYNC_2_15Suite : public TestCommand -{ -public: - Test_TC_TIMESYNC_2_15Suite(CredentialIssuerCommands * credsIssuerConfig) : - TestCommand("Test_TC_TIMESYNC_2_15", 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_TIMESYNC_2_15Suite() {} - - 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_BIND_2_1Suite : public TestCommand -{ -public: - Test_TC_BIND_2_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_2_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_BIND_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) - { - 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_BIND_2_2Suite : public TestCommand -{ -public: - Test_TC_BIND_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_BIND_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_BIND_2_2Suite() {} + ~Test_TC_BIND_2_2Suite() {} chip::System::Clock::Timeout GetWaitDuration() const override { @@ -142056,7 +142970,7 @@ class Test_TC_S_2_1Suite : public TestCommand { bool value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "boolean", "uint8")); + VerifyOrReturn(CheckConstraintType("value", "boolean", "int8u")); } break; case 5: @@ -142065,7 +142979,7 @@ class Test_TC_S_2_1Suite : public TestCommand uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("nameSupport", value, 128U)); - VerifyOrReturn(CheckConstraintType("value", "bitmap8", "uint8")); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "int8u")); } break; case 6: @@ -142074,7 +142988,7 @@ class Test_TC_S_2_1Suite : public TestCommand uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckValue("nameSupport", value, 0U)); - VerifyOrReturn(CheckConstraintType("value", "bitmap8", "uint8")); + VerifyOrReturn(CheckConstraintType("value", "bitmap8", "int8u")); } break; case 7: @@ -142098,7 +143012,7 @@ class Test_TC_S_2_1Suite : public TestCommand { uint8_t value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckConstraintType("value", "int8u", "uint8")); + VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u")); } break; default: @@ -142182,2409 +143096,6 @@ class Test_TC_S_2_1Suite : public TestCommand } }; -class Test_TC_S_2_2Suite : public TestCommand -{ -public: - Test_TC_S_2_2Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_2", 50, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_S_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; - - uint16_t maxScenes; - - chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } - - // - // Tests methods - // - - void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override - { - bool shouldContinue = false; - - switch (mTestIndex - 1) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint16_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - maxScenes = value; - } - 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)); - { - chip::app::Clusters::Groups::Commands::AddGroupResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::RemoveAllScenesResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), (maxScenes / 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::StoreSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("sceneCount", value, 1U)); - VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u")); - } - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - uint8_t value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentScene", value, 1U)); - VerifyOrReturn(CheckConstraintType("value", "int8u", "int8u")); - } - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::GroupId value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("currentGroup", value, 1U)); - VerifyOrReturn(CheckConstraintType("value", "group_id", "groupid")); - } - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - bool value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("sceneValid", value, true)); - VerifyOrReturn(CheckConstraintType("value", "boolean", "uint8")); - } - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::ViewSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - VerifyOrReturn(CheckValuePresent("transitionTime", value.transitionTime)); - VerifyOrReturn(CheckValue("transitionTime.Value()", value.transitionTime.Value(), 0U)); - VerifyOrReturn(CheckValuePresent("extensionFieldSets", value.extensionFieldSets)); - { - auto iter_1 = value.extensionFieldSets.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].clusterID", iter_1.GetValue().clusterID, 6UL)); - { - auto iter_3 = iter_1.GetValue().attributeValueList.begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[0].attributeValueList", iter_3, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].attributeValueList[0].attributeID", - iter_3.GetValue().attributeID, 0UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].attributeValueList[0].attributeValue", - iter_3.GetValue().attributeValue, 1UL)); - VerifyOrReturn(CheckNoMoreListItems( - "extensionFieldSets.Value()[0].attributeValueList", iter_3, 1)); - } - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()", iter_1, 1)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].clusterID", iter_1.GetValue().clusterID, 8UL)); - { - auto iter_3 = iter_1.GetValue().attributeValueList.begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[0].attributeID", - iter_3.GetValue().attributeID, 0UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[0].attributeValue", - iter_3.GetValue().attributeValue, 100UL)); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 1)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[1].attributeID", - iter_3.GetValue().attributeID, 1UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[1].attributeValue", - iter_3.GetValue().attributeValue, 0UL)); - VerifyOrReturn(CheckNoMoreListItems( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 2)); - } - VerifyOrReturn( - CheckNoMoreListItems("extensionFieldSets.Value()", iter_1, 2)); - } - } - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::ViewSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - VerifyOrReturn(CheckValuePresent("transitionTime", value.transitionTime)); - VerifyOrReturn(CheckValue("transitionTime.Value()", value.transitionTime.Value(), 0U)); - } - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 1))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("sceneList.Value()[0]", iter_1.GetValue(), 1U)); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 1)); - } - } - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::RemoveAllScenesResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 27: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), (maxScenes / 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 28: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::AddSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 29: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 30: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 1))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("sceneList.Value()[0]", iter_1.GetValue(), 1U)); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 1)); - } - } - break; - case 31: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::RemoveSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 32: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), (maxScenes / 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 33: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 34: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 35: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_NOT_FOUND)); - break; - case 36: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 37: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 38: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::StoreSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 39: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 40: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 41: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::StoreSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 2U)); - } - break; - case 42: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("sceneList.Value()[0]", iter_1.GetValue(), 1U)); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 1)); - VerifyOrReturn(CheckValue("sceneList.Value()[1]", iter_1.GetValue(), 2U)); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 2)); - } - } - break; - case 43: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Groups::Commands::AddGroupResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 2U)); - } - break; - case 44: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::RemoveAllScenesResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 2U)); - } - break; - case 45: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 2U)); - } - break; - case 46: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 47: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 48: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::StoreSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 2U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 3U)); - } - break; - case 49: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 3))); - VerifyOrReturn(CheckValue("groupID", value.groupID, 2U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("sceneList.Value()[0]", iter_1.GetValue(), 3U)); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 1)); - } - } - 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 sends a RemoveAllGroups command to DUT."); - VerifyOrDo(!ShouldSkip("G.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Groups::Commands::RemoveAllGroups::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Groups::Id, Groups::Commands::RemoveAllGroups::Id, value, - chip::NullOptional - - ); - } - case 2: { - LogStep(2, "TH reads from the DUT the (0x0006) SceneTableSize attribute"); - VerifyOrDo(!ShouldSkip("S.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Attributes::SceneTableSize::Id, true, - chip::NullOptional); - } - case 3: { - LogStep(3, "Step 0a: preparation step for using commands from Groups cluster: Add KeySet"); - ListFreer listFreer; - chip::app::Clusters::GroupKeyManagement::Commands::KeySetWrite::Type value; - - value.groupKeySet.groupKeySetID = 417U; - value.groupKeySet.groupKeySecurityPolicy = - static_cast(0); - value.groupKeySet.epochKey0.SetNonNull(); - value.groupKeySet.epochKey0.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime0.SetNonNull(); - value.groupKeySet.epochStartTime0.Value() = 0ULL; - value.groupKeySet.epochKey1.SetNonNull(); - value.groupKeySet.epochKey1.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime1.SetNonNull(); - value.groupKeySet.epochStartTime1.Value() = 0ULL; - value.groupKeySet.epochKey2.SetNonNull(); - value.groupKeySet.epochKey2.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime2.SetNonNull(); - value.groupKeySet.epochStartTime2.Value() = 0ULL; - - return SendCommand(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, - GroupKeyManagement::Commands::KeySetWrite::Id, value, chip::NullOptional - - ); - } - case 4: { - LogStep(4, "Step 0b: Preparation step for using commands from Groups cluster: Write Group Keys"); - ListFreer listFreer; - chip::app::DataModel::List value; - - { - auto * listHolder_0 = new ListHolder(2); - listFreer.add(listHolder_0); - - listHolder_0->mList[0].groupId = 1U; - listHolder_0->mList[0].groupKeySetID = 417U; - listHolder_0->mList[0].fabricIndex = 1U; - - listHolder_0->mList[1].groupId = 2U; - listHolder_0->mList[1].groupKeySetID = 417U; - listHolder_0->mList[1].fabricIndex = 1U; - - value = chip::app::DataModel::List( - listHolder_0->mList, 2); - } - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, - GroupKeyManagement::Attributes::GroupKeyMap::Id, value, chip::NullOptional, chip::NullOptional); - } - case 5: { - LogStep(5, "Step 1a: TH sends a AddGroup command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("G.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Groups::Commands::AddGroup::Type value; - value.groupID = 1U; - value.groupName = chip::Span("Group1garbage: not in length on purpose", 6); - return SendCommand(kIdentityAlpha, GetEndpoint(1), Groups::Id, Groups::Commands::AddGroup::Id, value, chip::NullOptional - - ); - } - case 6: { - LogStep(6, "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RemoveAllScenes::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RemoveAllScenes::Id, value, - chip::NullOptional - - ); - } - case 7: { - LogStep(7, "Step 1c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 8: { - LogStep(8, "STep 2a: TH configures AC1 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 100U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 9: { - LogStep(9, "Step 2a: TH configures AC1 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC1 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 10: { - LogStep(10, - "Step 2b: TH sends a StoreScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::StoreScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::StoreScene::Id, value, - chip::NullOptional - - ); - } - case 11: { - LogStep(11, "Step 3a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 12: { - LogStep(12, "Step 3a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 13: { - LogStep(13, - "Step 3b: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RecallScene::Id, value, - chip::NullOptional - - ); - } - case 14: { - LogStep(14, "Step 3c: TH reads the SceneCount attribute from DUT."); - VerifyOrDo(!ShouldSkip("S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Attributes::SceneCount::Id, true, - chip::NullOptional); - } - case 15: { - LogStep(15, "Step 3c: TH reads the CurrentScene attribute from DUT."); - VerifyOrDo(!ShouldSkip("S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Attributes::CurrentScene::Id, true, - chip::NullOptional); - } - case 16: { - LogStep(16, "Step 3c: TH reads the CurrentGroup attribute from DUT."); - VerifyOrDo(!ShouldSkip("S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Attributes::CurrentGroup::Id, true, - chip::NullOptional); - } - case 17: { - LogStep(17, "Step 3c: TH reads the SceneValid attribute from DUT."); - VerifyOrDo(!ShouldSkip("S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003"), - return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Attributes::SceneValid::Id, true, - chip::NullOptional); - } - case 18: { - LogStep(18, "Step 4a: Reboot target device"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::SystemCommands::Commands::Reboot::Type value; - return Reboot(kIdentityAlpha, value); - } - case 19: { - LogStep(19, "Step 4a: Reboot target device(DUT)"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = - chip::Span("Please reboot the DUT and enter 'y' after DUT startsgarbage: not in length on purpose", 52); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 20: { - LogStep(20, "Step 4c: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 21: { - LogStep(21, "Step 4c: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 22: { - LogStep(22, - "Step 4d: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RecallScene::Id, value, - chip::NullOptional - - ); - } - case 23: { - LogStep(23, - "Step 5: TH sends a ViewScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set to " - "0x01."); - VerifyOrDo(!ShouldSkip("S.S.C01.Rsp && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::ViewScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::ViewScene::Id, value, - chip::NullOptional - - ); - } - case 24: { - LogStep(24, - "Step 5: TH sends a ViewScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set to " - "0x01."); - VerifyOrDo(!ShouldSkip("S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::ViewScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::ViewScene::Id, value, - chip::NullOptional - - ); - } - case 25: { - LogStep(25, "Step 6: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 26: { - LogStep(26, "Step 7a: TH sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RemoveAllScenes::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RemoveAllScenes::Id, value, - chip::NullOptional - - ); - } - case 27: { - LogStep(27, "Step 7b: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 28: { - LogStep(28, - "Step 8a: TH sends a AddScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to " - "0x01, the TransitionTime field set to 0x0001 and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("S.S.C00.Rsp && && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::AddScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - value.transitionTime = 1U; - value.sceneName = chip::Span("Scene1garbage: not in length on purpose", 6); - - { - auto * listHolder_0 = new ListHolder(2); - listFreer.add(listHolder_0); - - listHolder_0->mList[0].clusterID = 6UL; - - { - auto * listHolder_2 = new ListHolder(1); - listFreer.add(listHolder_2); - - listHolder_2->mList[0].attributeID = 0UL; - listHolder_2->mList[0].attributeValue = 1UL; - - listHolder_0->mList[0].attributeValueList = - chip::app::DataModel::List( - listHolder_2->mList, 1); - } - - listHolder_0->mList[1].clusterID = 8UL; - - { - auto * listHolder_2 = new ListHolder(2); - listFreer.add(listHolder_2); - - listHolder_2->mList[0].attributeID = 0UL; - listHolder_2->mList[0].attributeValue = 100UL; - - listHolder_2->mList[1].attributeID = 1UL; - listHolder_2->mList[1].attributeValue = 0UL; - - listHolder_0->mList[1].attributeValueList = - chip::app::DataModel::List( - listHolder_2->mList, 2); - } - - value.extensionFieldSets = - chip::app::DataModel::List(listHolder_0->mList, - 2); - } - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::AddScene::Id, value, chip::NullOptional - - ); - } - case 29: { - LogStep(29, - "Step 8a: TH sends a AddScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to " - "0x01, the TransitionTime field set to 0x0001 and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = - chip::Span("Please execute the add scene command with extensionfieldsets in accordance with AC1 on DUT " - "and enter 'y' if the command is successfulgarbage: not in length on purpose", - 133); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 30: { - LogStep(30, "Step 8b: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 31: { - LogStep(31, - "Step 9a: TH sends a RemoveScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C02.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RemoveScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RemoveScene::Id, value, - chip::NullOptional - - ); - } - case 32: { - LogStep(32, "Step 9b: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 33: { - LogStep(33, "Step 10a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 34: { - LogStep(34, "Step 10a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 35: { - LogStep(35, - "Step 10b: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001 and the SceneID field " - "set to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RecallScene::Id, value, - chip::NullOptional - - ); - } - case 36: { - LogStep(36, "Step 11a: TH configures AC1 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 100U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 37: { - LogStep(37, "Step 11a: TH configures AC1 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC1 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 38: { - LogStep(38, - "Step 11b: TH sends a StoreScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::StoreScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::StoreScene::Id, value, - chip::NullOptional - - ); - } - case 39: { - LogStep(39, "Step 12a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 40: { - LogStep(40, "Step 12a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 41: { - LogStep(41, - "Step 12b: TH sends a StoreScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x02."); - VerifyOrDo(!ShouldSkip("S.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::StoreScene::Type value; - value.groupID = 1U; - value.sceneID = 2U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::StoreScene::Id, value, - chip::NullOptional - - ); - } - case 42: { - LogStep(42, "Step 12c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 43: { - LogStep(43, "Step 13a: If capacity allows, TH sends a AddGroup command to DUT with the GroupID field set to 0x0002."); - VerifyOrDo(!ShouldSkip("G.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Groups::Commands::AddGroup::Type value; - value.groupID = 2U; - value.groupName = chip::Span("Group2garbage: not in length on purpose", 6); - return SendCommand(kIdentityAlpha, GetEndpoint(1), Groups::Id, Groups::Commands::AddGroup::Id, value, chip::NullOptional - - ); - } - case 44: { - LogStep(44, "Step 13b: TH sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0002."); - VerifyOrDo(!ShouldSkip("S.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RemoveAllScenes::Type value; - value.groupID = 2U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RemoveAllScenes::Id, value, - chip::NullOptional - - ); - } - case 45: { - LogStep(45, "Step 13c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0002."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 2U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 46: { - LogStep(46, "Step 14a: TH configures AC3 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 1U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 47: { - LogStep(47, "Step 14a: TH configures AC3 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC3 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 48: { - LogStep(48, - "Step 14b: TH sends a StoreScene command to DUT with the GroupID field set to 0x0002 and the SceneID field set " - "to 0x03."); - VerifyOrDo(!ShouldSkip("S.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::StoreScene::Type value; - value.groupID = 2U; - value.sceneID = 3U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::StoreScene::Id, value, - chip::NullOptional - - ); - } - case 49: { - LogStep(49, "Step 14c: TH sends a GetSceneMembership command to DUT with the GroupID field set to 0x0002."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = 2U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_S_2_3Suite : public TestCommand -{ -public: - Test_TC_S_2_3Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_3", 24, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("G1", 0, UINT16_MAX, &mG1); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_S_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 mG1; - chip::Optional mTimeout; - - uint16_t maxScenes; - - 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))); - maxScenes = 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)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Groups::Commands::AddGroupResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - } - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::RemoveAllScenesResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - } - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), (maxScenes / 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 0)); - } - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::EnhancedAddSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::AddSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::EnhancedViewSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - VerifyOrReturn(CheckValuePresent("transitionTime", value.transitionTime)); - VerifyOrReturn(CheckValue("transitionTime.Value()", value.transitionTime.Value(), 10U)); - VerifyOrReturn(CheckValuePresent("extensionFieldSets", value.extensionFieldSets)); - { - auto iter_1 = value.extensionFieldSets.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].clusterID", iter_1.GetValue().clusterID, 6UL)); - { - auto iter_3 = iter_1.GetValue().attributeValueList.begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[0].attributeValueList", iter_3, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].attributeValueList[0].attributeID", - iter_3.GetValue().attributeID, 0UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].attributeValueList[0].attributeValue", - iter_3.GetValue().attributeValue, 1UL)); - VerifyOrReturn(CheckNoMoreListItems( - "extensionFieldSets.Value()[0].attributeValueList", iter_3, 1)); - } - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()", iter_1, 1)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].clusterID", iter_1.GetValue().clusterID, 8UL)); - { - auto iter_3 = iter_1.GetValue().attributeValueList.begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[0].attributeID", - iter_3.GetValue().attributeID, 0UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[0].attributeValue", - iter_3.GetValue().attributeValue, 100UL)); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 1)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[1].attributeID", - iter_3.GetValue().attributeID, 1UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[1].attributeValue", - iter_3.GetValue().attributeValue, 0UL)); - VerifyOrReturn(CheckNoMoreListItems( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 2)); - } - VerifyOrReturn( - CheckNoMoreListItems("extensionFieldSets.Value()", iter_1, 2)); - } - } - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::ViewSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - VerifyOrReturn(CheckValuePresent("transitionTime", value.transitionTime)); - VerifyOrReturn(CheckValue("transitionTime.Value()", value.transitionTime.Value(), 1U)); - VerifyOrReturn(CheckValuePresent("extensionFieldSets", value.extensionFieldSets)); - { - auto iter_1 = value.extensionFieldSets.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].clusterID", iter_1.GetValue().clusterID, 6UL)); - { - auto iter_3 = iter_1.GetValue().attributeValueList.begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[0].attributeValueList", iter_3, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].attributeValueList[0].attributeID", - iter_3.GetValue().attributeID, 0UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[0].attributeValueList[0].attributeValue", - iter_3.GetValue().attributeValue, 1UL)); - VerifyOrReturn(CheckNoMoreListItems( - "extensionFieldSets.Value()[0].attributeValueList", iter_3, 1)); - } - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()", iter_1, 1)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].clusterID", iter_1.GetValue().clusterID, 8UL)); - { - auto iter_3 = iter_1.GetValue().attributeValueList.begin(); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 0)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[0].attributeID", - iter_3.GetValue().attributeID, 0UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[0].attributeValue", - iter_3.GetValue().attributeValue, 100UL)); - VerifyOrReturn(CheckNextListItemDecodes( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 1)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[1].attributeID", - iter_3.GetValue().attributeID, 1UL)); - VerifyOrReturn(CheckValue("extensionFieldSets.Value()[1].attributeValueList[1].attributeValue", - iter_3.GetValue().attributeValue, 0UL)); - VerifyOrReturn(CheckNoMoreListItems( - "extensionFieldSets.Value()[1].attributeValueList", iter_3, 2)); - } - VerifyOrReturn( - CheckNoMoreListItems("extensionFieldSets.Value()", iter_1, 2)); - } - } - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 1))); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("sceneList.Value()[0]", iter_1.GetValue(), 1U)); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 1)); - } - } - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("currentLevel", value)); - VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); - } - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::CopySceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupIdentifierFrom", value.groupIdentifierFrom, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValue("sceneIdentifierFrom", value.sceneIdentifierFrom, 1U)); - } - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::GetSceneMembershipResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValueNonNull("capacity", value.capacity)); - VerifyOrReturn(CheckValue("capacity.Value()", value.capacity.Value(), static_cast((maxScenes / 2) - 2))); - VerifyOrReturn(CheckValue("groupID", value.groupID, mG1.HasValue() ? mG1.Value() : 1U)); - VerifyOrReturn(CheckValuePresent("sceneList", value.sceneList)); - { - auto iter_1 = value.sceneList.Value().begin(); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 0)); - VerifyOrReturn(CheckValue("sceneList.Value()[0]", iter_1.GetValue(), 1U)); - VerifyOrReturn(CheckNextListItemDecodes("sceneList.Value()", iter_1, 1)); - VerifyOrReturn(CheckValue("sceneList.Value()[1]", iter_1.GetValue(), 2U)); - VerifyOrReturn(CheckNoMoreListItems("sceneList.Value()", iter_1, 2)); - } - } - 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 from the DUT the (0x0006) SceneTableSize attribute"); - VerifyOrDo(!ShouldSkip("S.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Attributes::SceneTableSize::Id, true, - chip::NullOptional); - } - case 2: { - LogStep(2, "Step 0a: preparation step for using commands from Groups cluster: Add KeySet"); - ListFreer listFreer; - chip::app::Clusters::GroupKeyManagement::Commands::KeySetWrite::Type value; - - value.groupKeySet.groupKeySetID = 417U; - value.groupKeySet.groupKeySecurityPolicy = - static_cast(0); - value.groupKeySet.epochKey0.SetNonNull(); - value.groupKeySet.epochKey0.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime0.SetNonNull(); - value.groupKeySet.epochStartTime0.Value() = 0ULL; - value.groupKeySet.epochKey1.SetNonNull(); - value.groupKeySet.epochKey1.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime1.SetNonNull(); - value.groupKeySet.epochStartTime1.Value() = 0ULL; - value.groupKeySet.epochKey2.SetNonNull(); - value.groupKeySet.epochKey2.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime2.SetNonNull(); - value.groupKeySet.epochStartTime2.Value() = 0ULL; - - return SendCommand(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, - GroupKeyManagement::Commands::KeySetWrite::Id, value, chip::NullOptional - - ); - } - case 3: { - LogStep(3, "Step 0b: Preparation step for using commands from Groups cluster: Write Group Keys"); - ListFreer listFreer; - chip::app::DataModel::List value; - - { - auto * listHolder_0 = new ListHolder(1); - listFreer.add(listHolder_0); - - listHolder_0->mList[0].groupId = mG1.HasValue() ? mG1.Value() : 1U; - listHolder_0->mList[0].groupKeySetID = 417U; - listHolder_0->mList[0].fabricIndex = 1U; - - value = chip::app::DataModel::List( - listHolder_0->mList, 1); - } - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, - GroupKeyManagement::Attributes::GroupKeyMap::Id, value, chip::NullOptional, chip::NullOptional); - } - case 4: { - LogStep(4, "Step 1a: TH sends a AddGroup command to DUT with the GroupID field set to G1."); - VerifyOrDo(!ShouldSkip("G.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Groups::Commands::AddGroup::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - value.groupName = chip::Span("Group1garbage: not in length on purpose", 6); - return SendCommand(kIdentityAlpha, GetEndpoint(1), Groups::Id, Groups::Commands::AddGroup::Id, value, chip::NullOptional - - ); - } - case 5: { - LogStep(5, "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID field set to G1."); - VerifyOrDo(!ShouldSkip("S.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RemoveAllScenes::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RemoveAllScenes::Id, value, - chip::NullOptional - - ); - } - case 6: { - LogStep(6, "Step 1c: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 7: { - LogStep(7, - "Step 2a: TH sends a EnhancedAddScene command to DUT with the GroupID field set to G1, the SceneID field set " - "to 0x01, the TransitionTime field set to 0x000a (1s) and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("S.S.C40.Rsp && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::EnhancedAddScene::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneID = 1U; - value.transitionTime = 10U; - value.sceneName = chip::Span("Scene1garbage: not in length on purpose", 6); - - { - auto * listHolder_0 = new ListHolder(2); - listFreer.add(listHolder_0); - - listHolder_0->mList[0].clusterID = 6UL; - - { - auto * listHolder_2 = new ListHolder(1); - listFreer.add(listHolder_2); - - listHolder_2->mList[0].attributeID = 0UL; - listHolder_2->mList[0].attributeValue = 1UL; - - listHolder_0->mList[0].attributeValueList = - chip::app::DataModel::List( - listHolder_2->mList, 1); - } - - listHolder_0->mList[1].clusterID = 8UL; - - { - auto * listHolder_2 = new ListHolder(2); - listFreer.add(listHolder_2); - - listHolder_2->mList[0].attributeID = 0UL; - listHolder_2->mList[0].attributeValue = 100UL; - - listHolder_2->mList[1].attributeID = 1UL; - listHolder_2->mList[1].attributeValue = 0UL; - - listHolder_0->mList[1].attributeValueList = - chip::app::DataModel::List( - listHolder_2->mList, 2); - } - - value.extensionFieldSets = - chip::app::DataModel::List(listHolder_0->mList, - 2); - } - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::EnhancedAddScene::Id, value, - chip::NullOptional - - ); - } - case 8: { - LogStep(8, - "Step 2a: TH sends a AddScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01, " - "the TransitionTime field set to 0x0001 (1s) and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("(!S.S.C40.Rsp) && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::AddScene::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneID = 1U; - value.transitionTime = 1U; - value.sceneName = chip::Span("Scene1garbage: not in length on purpose", 6); - - { - auto * listHolder_0 = new ListHolder(2); - listFreer.add(listHolder_0); - - listHolder_0->mList[0].clusterID = 6UL; - - { - auto * listHolder_2 = new ListHolder(1); - listFreer.add(listHolder_2); - - listHolder_2->mList[0].attributeID = 0UL; - listHolder_2->mList[0].attributeValue = 1UL; - - listHolder_0->mList[0].attributeValueList = - chip::app::DataModel::List( - listHolder_2->mList, 1); - } - - listHolder_0->mList[1].clusterID = 8UL; - - { - auto * listHolder_2 = new ListHolder(2); - listFreer.add(listHolder_2); - - listHolder_2->mList[0].attributeID = 0UL; - listHolder_2->mList[0].attributeValue = 100UL; - - listHolder_2->mList[1].attributeID = 1UL; - listHolder_2->mList[1].attributeValue = 0UL; - - listHolder_0->mList[1].attributeValueList = - chip::app::DataModel::List( - listHolder_2->mList, 2); - } - - value.extensionFieldSets = - chip::app::DataModel::List(listHolder_0->mList, - 2); - } - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::AddScene::Id, value, chip::NullOptional - - ); - } - case 9: { - LogStep(9, - "Step 2b: TH sends a EnhancedAddScene command to DUT with the GroupID field set to G1, the SceneID field set " - "to 0x01, the TransitionTime field set to 0x000a and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("S.S.C40.Rsp && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = - chip::Span("Please execute the enhanced add scene command with extensionfieldsets in accordance with " - "AC1 on DUT and enter 'y' if the command is successfulgarbage: not in length on purpose", - 142); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 10: { - LogStep(10, - "Step 2b: TH sends a AddScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01, " - "the TransitionTime field set to 0x0001 and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("(!S.S.C40.Rsp) && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = - chip::Span("Please execute the add scene command with extensionfieldsets in accordance with AC1 on DUT " - "and enter 'y' if the command is successfulgarbage: not in length on purpose", - 133); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 11: { - LogStep(11, - "Step 3a: TH sends a EnhancedViewScene command to DUT with the GroupID field set to G1 and the SceneID field " - "set to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C41.Rsp && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::EnhancedViewScene::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::EnhancedViewScene::Id, value, - chip::NullOptional - - ); - } - case 12: { - LogStep( - 12, - "Step 3a: TH sends a ViewScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01."); - VerifyOrDo(!ShouldSkip("(!S.S.C41.Rsp) && PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::ViewScene::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::ViewScene::Id, value, - chip::NullOptional - - ); - } - case 13: { - LogStep(13, - "Step 3b: TH sends a EnhancedViewScene command to DUT with the GroupID field set to G1 and the SceneID field " - "set to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C41.Rsp && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please execute the ehanced-view-scene command and verify that the extensionfieldsets, status, groupID and SceneID " - "are in accordance with AC1 on DUT and enter 'y' if the command is successfulgarbage: not in length on purpose", - 190); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 14: { - LogStep( - 14, - "Step 3b: TH sends a ViewScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01."); - VerifyOrDo(!ShouldSkip("(!S.S.C41.Rsp) && PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please execute the view-scene command and verify that the extensionfieldsets, status, groupID and SceneID are in " - "accordance with AC1 on DUT and enter 'y' if the command is successfulgarbage: not in length on purpose", - 182); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 15: { - LogStep(15, "Step 4: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - case 16: { - LogStep(16, "Step 5a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 17: { - LogStep(17, "Step 5a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 18: { - LogStep(18, - "Step 5b: TH sends a RecallScene command to group G1 with the GroupID field set to G1 and the scene ID field " - "set to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneID = 1U; - return SendGroupCommand(kIdentityAlpha, 1, Scenes::Id, Scenes::Commands::RecallScene::Id, value); - } - case 19: { - LogStep(19, "Wait 1s"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 20: { - LogStep(20, "TH confirm the DUT reached AC1 (on level control cluster) after 1s"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, - chip::NullOptional); - } - case 21: { - LogStep(21, "Verify DUT returns to AC1."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please confirm AC1 on DUT and enter 'y'.garbage: not in length on purpose", 40); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 22: { - LogStep(22, - "Step 6a: TH sends a CopyScene command to DUT with the mode field set to 0x00, the group identifier from field " - "set to G1, the scene identifier from field set to 0x01, the group identifier to field set to G1 and the scene " - "identifier to field set to 0x02."); - VerifyOrDo(!ShouldSkip("S.S.C42.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::CopyScene::Type value; - value.mode = static_cast>(0U); - value.groupIdentifierFrom = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneIdentifierFrom = 1U; - value.groupIdentifierTo = mG1.HasValue() ? mG1.Value() : 1U; - value.sceneIdentifierTo = 2U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::CopyScene::Id, value, - chip::NullOptional - - ); - } - case 23: { - LogStep(23, "Step 6b: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1."); - VerifyOrDo(!ShouldSkip("S.S.C06.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::GetSceneMembership::Type value; - value.groupID = mG1.HasValue() ? mG1.Value() : 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::GetSceneMembership::Id, value, - chip::NullOptional - - ); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_S_2_4Suite : public TestCommand -{ -public: - Test_TC_S_2_4Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_2_4", 27, credsIssuerConfig) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_S_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) - { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Groups::Commands::AddGroupResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::RemoveAllScenesResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - } - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::AddSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 8: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::Clusters::Scenes::Commands::StoreSceneResponse::DecodableType value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValue("status", value.status, 0U)); - VerifyOrReturn(CheckValue("groupID", value.groupID, 1U)); - VerifyOrReturn(CheckValue("sceneID", value.sceneID, 1U)); - } - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 12: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("currentLevel", value)); - VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 200U)); - } - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 14: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("currentLevel", value)); - VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); - } - break; - case 17: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 18: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 19: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - { - chip::app::DataModel::Nullable value; - VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); - VerifyOrReturn(CheckValueNonNull("currentLevel", value)); - VerifyOrReturn(CheckValue("currentLevel.Value()", value.Value(), 100U)); - } - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 24: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - case 25: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 26: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - break; - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "Wait for the commissioned device to be retrieved"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; - value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; - return WaitForCommissionee(kIdentityAlpha, value); - } - case 1: { - LogStep(1, "TH sends a RemoveAllGroups command to DUT."); - VerifyOrDo(!ShouldSkip("G.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Groups::Commands::RemoveAllGroups::Type value; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Groups::Id, Groups::Commands::RemoveAllGroups::Id, value, - chip::NullOptional - - ); - } - case 2: { - LogStep(2, "Step 0a: preparation step for using commands from Groups cluster: Add KeySet"); - ListFreer listFreer; - chip::app::Clusters::GroupKeyManagement::Commands::KeySetWrite::Type value; - - value.groupKeySet.groupKeySetID = 417U; - value.groupKeySet.groupKeySecurityPolicy = - static_cast(0); - value.groupKeySet.epochKey0.SetNonNull(); - value.groupKeySet.epochKey0.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime0.SetNonNull(); - value.groupKeySet.epochStartTime0.Value() = 0ULL; - value.groupKeySet.epochKey1.SetNonNull(); - value.groupKeySet.epochKey1.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime1.SetNonNull(); - value.groupKeySet.epochStartTime1.Value() = 0ULL; - value.groupKeySet.epochKey2.SetNonNull(); - value.groupKeySet.epochKey2.Value() = chip::ByteSpan( - chip::Uint8::from_const_char( - "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317garbage: not in length on purpose"), - 16); - value.groupKeySet.epochStartTime2.SetNonNull(); - value.groupKeySet.epochStartTime2.Value() = 0ULL; - - return SendCommand(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, - GroupKeyManagement::Commands::KeySetWrite::Id, value, chip::NullOptional - - ); - } - case 3: { - LogStep(3, "Step 0b: Preparation step for using commands from Groups cluster: Write Group Keys"); - ListFreer listFreer; - chip::app::DataModel::List value; - - { - auto * listHolder_0 = new ListHolder(1); - listFreer.add(listHolder_0); - - listHolder_0->mList[0].groupId = 1U; - listHolder_0->mList[0].groupKeySetID = 417U; - listHolder_0->mList[0].fabricIndex = 1U; - - value = chip::app::DataModel::List( - listHolder_0->mList, 1); - } - return WriteAttribute(kIdentityAlpha, GetEndpoint(0), GroupKeyManagement::Id, - GroupKeyManagement::Attributes::GroupKeyMap::Id, value, chip::NullOptional, chip::NullOptional); - } - case 4: { - LogStep(4, "Step 2a: TH sends a AddGroup command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("G.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Groups::Commands::AddGroup::Type value; - value.groupID = 1U; - value.groupName = chip::Span("Group1garbage: not in length on purpose", 6); - return SendCommand(kIdentityAlpha, GetEndpoint(1), Groups::Id, Groups::Commands::AddGroup::Id, value, chip::NullOptional - - ); - } - case 5: { - LogStep(5, "Step 2b: TH sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0001."); - VerifyOrDo(!ShouldSkip("S.S.C03.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RemoveAllScenes::Type value; - value.groupID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RemoveAllScenes::Id, value, - chip::NullOptional - - ); - } - case 6: { - LogStep(6, - "Step 3: TH sends a AddScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to " - "0x01, the TransitionTime field set to 0x0001 and a set of extension fields appropriate to AC1."); - VerifyOrDo(!ShouldSkip("S.S.C00.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::AddScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - value.transitionTime = 20U; - value.sceneName = chip::Span("Scene1garbage: not in length on purpose", 6); - - value.extensionFieldSets = chip::app::DataModel::List(); - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::AddScene::Id, value, chip::NullOptional - - ); - } - case 7: { - LogStep(7, "Step 4a: TH configures AC1 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 100U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 8: { - LogStep(8, "Step 4a: TH configures AC1 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC1 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 9: { - LogStep(9, - "Step 4b: TH sends a StoreScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01."); - VerifyOrDo(!ShouldSkip("S.S.C04.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::StoreScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::StoreScene::Id, value, - chip::NullOptional - - ); - } - case 10: { - LogStep(10, "Step 5a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 11: { - LogStep(11, "Wait 1s for level to change"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 1000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "TH confirm the DUT reached AC2 (on level control cluster) after 1s, which is different from AC1"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, - chip::NullOptional); - } - case 13: { - LogStep(13, "Step 5a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 14: { - LogStep(14, - "Step 5b: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001 and the SceneID field set " - "to 0x01 and the TransitionTime field omitted."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RecallScene::Id, value, - chip::NullOptional - - ); - } - case 15: { - LogStep(15, "Wait 20s"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 20000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 16: { - LogStep(16, "TH confirm the DUT reached AC1 (on level control cluster) after 20s"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, - chip::NullOptional); - } - case 17: { - LogStep(17, "DUT transitions to AC1 over 20s."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please confirm that transition to AC1 was made over 20sgarbage: not in length on purpose", 55); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 18: { - LogStep(18, "TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 19: { - LogStep(19, "TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 20: { - LogStep(20, - "Step 6a: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to " - "0x01 and the TransitionTime field set to 0x0032 (5s)."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - value.transitionTime.Emplace(); - value.transitionTime.Value().SetNonNull(); - value.transitionTime.Value().Value() = 50U; - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RecallScene::Id, value, - chip::NullOptional - - ); - } - case 21: { - LogStep(21, "Wait 5s"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 22: { - LogStep(22, "TH confirm the DUT reached AC2 (on level control cluster) after 5s"); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return ReadAttribute(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id, true, - chip::NullOptional); - } - case 23: { - LogStep(23, "DUT transitions to AC1 over 5."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please confirm that transition to AC1 was made over 5sgarbage: not in length on purpose", 54); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 24: { - LogStep(24, "Step 7a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SDK_CI_ONLY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Type value; - value.level = 200U; - value.transitionTime.SetNonNull(); - value.transitionTime.Value() = 0U; - value.optionsMask = static_cast>(0U); - value.optionsOverride = static_cast>(0U); - return SendCommand(kIdentityAlpha, GetEndpoint(1), LevelControl::Id, LevelControl::Commands::MoveToLevelWithOnOff::Id, - value, chip::NullOptional - - ); - } - case 25: { - LogStep(25, "Step 7a: TH configures AC2 on DUT for all implemented application clusters supporting scenes."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span( - "Please configure AC2 on DUT and enter 'y' after the configuration is completegarbage: not in length on purpose", - 77); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); - } - case 26: { - LogStep(26, - "Step 7b: TH sends a RecallScene command to DUT with the GroupID field set to 0x0001, the SceneID field set to " - "0x01 and the TransitionTime field set to null (no transition time override)."); - VerifyOrDo(!ShouldSkip("S.S.C05.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::Scenes::Commands::RecallScene::Type value; - value.groupID = 1U; - value.sceneID = 1U; - value.transitionTime.Emplace(); - value.transitionTime.Value().SetNull(); - return SendCommand(kIdentityAlpha, GetEndpoint(1), Scenes::Id, Scenes::Commands::RecallScene::Id, value, - chip::NullOptional - - ); - } - } - return CHIP_NO_ERROR; - } -}; - class Test_TC_S_2_5Suite : public TestCommand { public: @@ -144695,61 +143206,6 @@ class Test_TC_S_2_6Suite : public TestCommand } }; -class Test_TC_S_3_1Suite : public TestCommand -{ -public: - Test_TC_S_3_1Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_S_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_S_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_BRBINFO_2_2Suite : public TestCommand { public: @@ -145243,6 +143699,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), @@ -145336,6 +143793,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), @@ -145483,6 +143941,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), @@ -145524,9 +143983,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), @@ -145548,12 +144004,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), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -145574,6 +144027,8 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -145619,6 +144074,8 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -145683,9 +144140,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), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), @@ -145731,26 +144186,19 @@ 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), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), - make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 9de07fa1b127ee..bae08b8fa26891 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -111,6 +111,7 @@ class TestList : public Command { printf("Test_TC_CGEN_2_1\n"); printf("Test_TC_DGGEN_1_1\n"); printf("Test_TC_DGGEN_2_1\n"); + printf("Test_TC_GRPKEY_1_1\n"); printf("Test_TC_ICDM_1_1\n"); printf("Test_TC_ICDM_2_1\n"); printf("Test_TC_I_1_1\n"); @@ -196,6 +197,7 @@ class TestList : public Command { printf("Test_TC_SMOKECO_2_1\n"); printf("Test_TC_SMOKECO_2_6\n"); printf("Test_TC_SWTCH_1_1\n"); + printf("Test_TC_RVCOPSTATE_1_1\n"); printf("Test_TC_TMP_1_1\n"); printf("Test_TC_TMP_2_1\n"); printf("Test_TC_TSTAT_1_1\n"); @@ -7350,6 +7352,10 @@ class Test_TC_BRBINFO_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: TH reads the ClusterRevision from DUT\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { + NextTest(); + return; + } err = TestStep2ThReadsTheClusterRevisionFromDut_1(); break; case 2: @@ -7635,27 +7641,11 @@ class Test_TC_BRBINFO_1_1 : public TestCommandBridge { CHIP_ERROR TestStep2ThReadsTheClusterRevisionFromDut_1() { - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterBridgedDeviceBasicInformation alloc] initWithDevice:device - endpointID:@(3) - queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 2: TH reads the ClusterRevision from DUT Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); - } - - VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } CHIP_ERROR TestStep3ThReadsTheFeatureMapFromDut_2() @@ -8815,6 +8805,10 @@ class Test_TC_CC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: read the global attribute: ClusterRevision\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { + NextTest(); + return; + } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: @@ -9764,25 +9758,11 @@ class Test_TC_CC_1_1 : public TestCommandBridge { CHIP_ERROR TestStep2ReadTheGlobalAttributeClusterRevision_1() { - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterColorControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 2: read the global attribute: ClusterRevision Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 5U)); - } - - VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMap_2() @@ -16670,12 +16650,12 @@ class Test_TC_CC_4_3 : public TestCommandBridge { err = TestWait10s_18(); break; case 19: - ChipLogProgress(chipTool, " ***** Test Step 19 : TStep 3c: H reads CurrentSaturation attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 19 : Step 3c: H reads CurrentSaturation attribute from DUT\n"); if (ShouldSkip("CC.S.F00 && CC.S.A0001")) { NextTest(); return; } - err = TestTStep3cHReadsCurrentSaturationAttributeFromDut_19(); + err = TestStep3cHReadsCurrentSaturationAttributeFromDut_19(); break; case 20: ChipLogProgress(chipTool, " ***** Test Step 20 : Wait 10s\n"); @@ -16744,12 +16724,12 @@ class Test_TC_CC_4_3 : public TestCommandBridge { err = TestStep4aThReadsColorModeAttributeFromDut_27(); break; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : TStep 4b: H reads EnhancedColorMode attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 4b: H reads EnhancedColorMode attribute from DUT\n"); if (ShouldSkip("CC.S.F00 && CC.S.A4001")) { NextTest(); return; } - err = TestTStep4bHReadsEnhancedColorModeAttributeFromDut_28(); + err = TestStep4bHReadsEnhancedColorModeAttributeFromDut_28(); break; case 29: ChipLogProgress(chipTool, " ***** Test Step 29 : Turn off light that we turned on\n"); @@ -17211,7 +17191,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestTStep3cHReadsCurrentSaturationAttributeFromDut_19() + CHIP_ERROR TestStep3cHReadsCurrentSaturationAttributeFromDut_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -17219,7 +17199,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeCurrentSaturationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TStep 3c: H reads CurrentSaturation attribute from DUT Error: %@", err); + NSLog(@"Step 3c: H reads CurrentSaturation attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -17374,7 +17354,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTStep4bHReadsEnhancedColorModeAttributeFromDut_28() + CHIP_ERROR TestStep4bHReadsEnhancedColorModeAttributeFromDut_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -17382,7 +17362,7 @@ class Test_TC_CC_4_3 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeEnhancedColorModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TStep 4b: H reads EnhancedColorMode attribute from DUT Error: %@", err); + NSLog(@"Step 4b: H reads EnhancedColorMode attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -21500,12 +21480,12 @@ class Test_TC_CC_6_1 : public TestCommandBridge { err = TestStep0bThSendsOnCommandToDut_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : TStep 1a: H reads ColorTempPhysicalMinMireds attribute from DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 3 : Step 1a: H reads ColorTempPhysicalMinMireds attribute from DUT\n"); if (ShouldSkip("CC.S.F04 && CC.S.A400b")) { NextTest(); return; } - err = TestTStep1aHReadsColorTempPhysicalMinMiredsAttributeFromDut_3(); + err = TestStep1aHReadsColorTempPhysicalMinMiredsAttributeFromDut_3(); break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Step 1b: TH reads ColorTempPhysicalMaxMireds attribute from DUT.\n"); @@ -21797,7 +21777,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { } NSNumber * _Nonnull ColorTempPhysicalMinMiredsValue; - CHIP_ERROR TestTStep1aHReadsColorTempPhysicalMinMiredsAttributeFromDut_3() + CHIP_ERROR TestStep1aHReadsColorTempPhysicalMinMiredsAttributeFromDut_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -21805,7 +21785,7 @@ class Test_TC_CC_6_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeColorTempPhysicalMinMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TStep 1a: H reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); + NSLog(@"Step 1a: H reads ColorTempPhysicalMinMireds attribute from DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -27593,258 +27573,257 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("CDOCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given CDOCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !CDOCONC.S.F00 && !CDOCONC.S.F01 && !CDOCONC.S.F02 && !CDOCONC.S.F03 && !CDOCONC.S.F04 && !CDOCONC.S.F05")) { NextTest(); return; } - err = TestStep3bGivenCdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given CDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given CDOCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenCdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenCdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given CDOCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given CDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !CDOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenCdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenCdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given CDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given CDOCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("CDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenCdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenCdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given CDOCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given CDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !CDOCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenCdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenCdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given CDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given CDOCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("CDOCONC.S.F02 && CDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenCdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenCdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given CDOCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given CDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !CDOCONC.S.F02 && !CDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenCdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenCdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given CDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given CDOCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("CDOCONC.S.F03 && CDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenCdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenCdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given CDOCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given CDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !CDOCONC.S.F03 && !CDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3jGivenCdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenCdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given CDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given CDOCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("CDOCONC.S.F04 && CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenCdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenCdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given CDOCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("CDOCONC.S.Afffc && CDOCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given CDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !CDOCONC.S.F04 && !CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3lGivenCdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenCdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given CDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("CDOCONC.S.Afffc && !CDOCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given CDOCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("CDOCONC.S.F05 && CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenCdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenCdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given CDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !CDOCONC.S.F05 && !CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenCdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.A0007 && CDOCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "CDOCONC.S.A0007 is not set\n"); - if (ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("CDOCONC.S.A0007 && CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCdoconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "CDOCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !CDOCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCdoconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when CDOCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("CDOCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCdoconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when CDOCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !CDOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCdoconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when CDOCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("CDOCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when CDOCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !CDOCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when CDOCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("CDOCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("CDOCONC.S.Afffb && CDOCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when CDOCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !CDOCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when CDOCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("CDOCONC.S.Afffb && !CDOCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("CDOCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCdoconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && CDOCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when CDOCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !CDOCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCdoconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("CDOCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("CDOCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -27944,6 +27923,9 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -27957,7 +27939,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -27998,7 +27980,33 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenCdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterCarbonDioxideConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenCdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28019,7 +28027,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenCdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenCdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28040,7 +28048,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenCdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenCdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28061,7 +28069,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenCdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenCdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28082,7 +28090,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenCdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenCdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28103,7 +28111,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenCdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenCdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28124,7 +28132,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenCdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenCdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28145,7 +28153,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenCdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenCdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28166,7 +28174,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenCdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenCdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28187,7 +28195,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenCdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenCdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28208,7 +28216,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenCdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenCdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28229,7 +28237,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenCdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenCdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28250,7 +28258,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28279,7 +28287,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28307,7 +28315,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28330,7 +28338,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCdoconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCdoconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28356,7 +28364,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28385,7 +28393,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCdoconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCdoconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28414,7 +28422,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28441,7 +28449,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28467,7 +28475,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28494,7 +28502,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCdoconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28520,7 +28528,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28543,7 +28551,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCdoconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCdoconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28567,7 +28575,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -28593,7 +28601,7 @@ class Test_TC_CDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29122,258 +29130,257 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("CMOCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !CMOCONC.S.F00 && !CMOCONC.S.F01 && !CMOCONC.S.F02 && !CMOCONC.S.F03 && !CMOCONC.S.F04 && !CMOCONC.S.F05 ")) { NextTest(); return; } - err = TestStep3bGivenCmoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given CMOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("CMOCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenCmoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenCmoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given CMOCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given CMOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !CMOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenCmoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenCmoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given CMOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given CMOCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("CMOCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenCmoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenCmoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given CMOCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given CMOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !CMOCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenCmoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenCmoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given CMOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given CMOCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("CMOCONC.S.F02 && CMOCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenCmoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenCmoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given CMOCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given CMOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !CMOCONC.S.F02 && !CMOCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenCmoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenCmoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given CMOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given CMOCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("CMOCONC.S.F03 && CMOCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenCmoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenCmoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given CMOCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given CMOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !CMOCONC.S.F03 && !CMOCONC.S.F01")) { NextTest(); return; } - err = TestStep3jGivenCmoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenCmoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given CMOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given CMOCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("CMOCONC.S.F04 && CMOCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenCmoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenCmoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given CMOCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("CMOCONC.S.Afffc && CMOCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given CMOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !CMOCONC.S.F04 && !CMOCONC.S.F00")) { NextTest(); return; } - err = TestStep3lGivenCmoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenCmoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given CMOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("CMOCONC.S.Afffc && !CMOCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given CMOCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("CMOCONC.S.F05 && CMOCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenCmoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenCmoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given CMOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !CMOCONC.S.F05 && !CMOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenCmoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.A0007 && CMOCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "CMOCONC.S.A0007 is not set\n"); - if (ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("CMOCONC.S.A0007 && CMOCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCmoconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "CMOCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !CMOCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCmoconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when CMOCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("CMOCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCmoconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when CMOCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !CMOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCmoconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when CMOCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("CMOCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when CMOCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !CMOCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when CMOCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("CMOCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("CMOCONC.S.Afffb && CMOCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when CMOCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !CMOCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when CMOCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("CMOCONC.S.Afffb && !CMOCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("CMOCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCmoconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && CMOCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when CMOCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !CMOCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCmoconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("CMOCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("CMOCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -29473,6 +29480,9 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -29486,7 +29496,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -29527,7 +29537,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenCmoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29537,10 +29547,15 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set Error: %@", err); + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); NextTest(); }]; @@ -29548,7 +29563,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenCmoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3bGivenCmoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29558,7 +29573,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3c: Given CMOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear Error: %@", err); + NSLog(@"Step 3b: Given CMOCONC.S.F00(MEA) ensure featuremap has the correct bit set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29569,7 +29584,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenCmoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3cGivenCmoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29579,7 +29594,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3d: Given CMOCONC.S.F01(LEV) ensure featuremap has the correct bit set Error: %@", err); + NSLog(@"Step 3c: Given CMOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29590,7 +29605,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenCmoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3dGivenCmoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29600,7 +29615,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3e: Given CMOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear Error: %@", err); + NSLog(@"Step 3d: Given CMOCONC.S.F01(LEV) ensure featuremap has the correct bit set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29611,7 +29626,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenCmoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3eGivenCmoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29621,7 +29636,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3f: Given CMOCONC.S.F02(MED) ensure featuremap has the correct bit set Error: %@", err); + NSLog(@"Step 3e: Given CMOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29632,7 +29647,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenCmoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3fGivenCmoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29642,7 +29657,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3g: Given CMOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear Error: %@", err); + NSLog(@"Step 3f: Given CMOCONC.S.F02(MED) ensure featuremap has the correct bit set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29653,7 +29668,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenCmoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3gGivenCmoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29663,7 +29678,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3h: Given CMOCONC.S.F03(CRI) ensure featuremap has the correct bits set Error: %@", err); + NSLog(@"Step 3g: Given CMOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29674,7 +29689,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenCmoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3hGivenCmoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29684,7 +29699,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3i: Given CMOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear Error: %@", err); + NSLog(@"Step 3h: Given CMOCONC.S.F03(CRI) ensure featuremap has the correct bits set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29695,7 +29710,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenCmoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3iGivenCmoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29705,7 +29720,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3j: Given CMOCONC.S.F04(PEA) ensure featuremap has the correct bits set Error: %@", err); + NSLog(@"Step 3i: Given CMOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29716,7 +29731,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenCmoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3jGivenCmoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29726,7 +29741,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3k: Given CMOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear Error: %@", err); + NSLog(@"Step 3j: Given CMOCONC.S.F04(PEA) ensure featuremap has the correct bits set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29737,7 +29752,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenCmoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3kGivenCmoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29747,7 +29762,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3l: Given CMOCONC.S.F05(AVG) ensure featuremap has the correct bits set Error: %@", err); + NSLog(@"Step 3k: Given CMOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29758,7 +29773,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenCmoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3lGivenCmoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29768,7 +29783,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 3m: Given CMOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear Error: %@", err); + NSLog(@"Step 3l: Given CMOCONC.S.F05(AVG) ensure featuremap has the correct bits set Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -29779,7 +29794,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep3mGivenCmoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29788,20 +29803,12 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 4a: Read the global attribute: AttributeList Error: %@", err); + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3m: Given CMOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 9UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65530UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); - VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); - + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); NextTest(); }]; @@ -29826,6 +29833,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { VerifyOrReturn(CheckConstraintContains("attributeList", value, 9UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65530UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); @@ -29836,7 +29844,35 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterCarbonMonoxideConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4a: Read the global attribute: AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 9UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29859,7 +29895,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCmoconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenCmoconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29885,7 +29921,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29914,7 +29950,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCmoconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenCmoconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29943,7 +29979,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29970,7 +30006,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -29996,7 +30032,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -30023,7 +30059,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenCmoconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -30049,7 +30085,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -30072,7 +30108,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCmoconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenCmoconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -30096,7 +30132,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -30122,7 +30158,7 @@ class Test_TC_CMOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -30651,258 +30687,257 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("FLDCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given FLDCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !FLDCONC.S.F00 && !FLDCONC.S.F01 && !FLDCONC.S.F02 && !FLDCONC.S.F03 && !FLDCONC.S.F04 && !FLDCONC.S.F05")) { NextTest(); return; } - err = TestStep3bGivenFldconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given FLDCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given FLDCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("FLDCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenFldconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenFldconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given FLDCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given FLDCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !FLDCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenFldconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenFldconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given FLDCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given FLDCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("FLDCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenFldconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenFldconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given FLDCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given FLDCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !FLDCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenFldconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenFldconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given FLDCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given FLDCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("FLDCONC.S.F02 && FLDCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenFldconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenFldconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given FLDCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given FLDCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !FLDCONC.S.F02 && !FLDCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenFldconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenFldconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given FLDCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given FLDCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("FLDCONC.S.F03 && FLDCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenFldconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenFldconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given FLDCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given FLDCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !FLDCONC.S.F03 && !FLDCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3jGivenFldconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenFldconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given FLDCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given FLDCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("FLDCONC.S.F04 && FLDCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenFldconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenFldconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given FLDCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("FLDCONC.S.Afffc && FLDCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given FLDCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !FLDCONC.S.F04 && !FLDCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3lGivenFldconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenFldconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given FLDCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("FLDCONC.S.Afffc && !FLDCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given FLDCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("FLDCONC.S.F05 && FLDCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenFldconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenFldconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given FLDCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !FLDCONC.S.F05 && !FLDCONC.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenFldconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.A0007 && FLDCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "FLDCONC.S.A0007 is not set\n"); - if (ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("FLDCONC.S.A0007 && FLDCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenFldconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "FLDCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !FLDCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenFldconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when FLDCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("FLDCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenFldconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when FLDCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !FLDCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenFldconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when FLDCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("FLDCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when FLDCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !FLDCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when FLDCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("FLDCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("FLDCONC.S.Afffb && FLDCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when FLDCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !FLDCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when FLDCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("FLDCONC.S.Afffb && !FLDCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("FLDCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenFldconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && FLDCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when FLDCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !FLDCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenFldconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("FLDCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("FLDCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -31002,6 +31037,9 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -31015,7 +31053,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -31056,7 +31094,33 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenFldconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterFormaldehydeConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenFldconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31077,7 +31141,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenFldconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenFldconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31098,7 +31162,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenFldconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenFldconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31119,7 +31183,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenFldconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenFldconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31140,7 +31204,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenFldconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenFldconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31161,7 +31225,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenFldconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenFldconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31182,7 +31246,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenFldconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenFldconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31203,7 +31267,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenFldconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenFldconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31224,7 +31288,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenFldconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenFldconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31245,7 +31309,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenFldconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenFldconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31266,7 +31330,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenFldconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenFldconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31287,7 +31351,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenFldconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenFldconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31308,7 +31372,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31337,7 +31401,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31365,7 +31429,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31388,7 +31452,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenFldconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenFldconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31414,7 +31478,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31443,7 +31507,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenFldconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenFldconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31472,7 +31536,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31499,7 +31563,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31525,7 +31589,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31552,7 +31616,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenFldconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31578,7 +31642,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31601,7 +31665,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenFldconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenFldconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31625,7 +31689,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -31651,7 +31715,7 @@ class Test_TC_FLDCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32180,258 +32244,257 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("NDOCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given NDOCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !NDOCONC.S.F00 && !NDOCONC.S.F01 && !NDOCONC.S.F02 && !NDOCONC.S.F03 && !NDOCONC.S.F04 && !NDOCONC.S.F05")) { NextTest(); return; } - err = TestStep3bGivenNdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given NDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given NDOCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("NDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenNdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenNdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given NDOCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given NDOCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !NDOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenNdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenNdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given NDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given NDOCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("NDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenNdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenNdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given NDOCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given NDOCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !NDOCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenNdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenNdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given NDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given NDOCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("NDOCONC.S.F02 && NDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenNdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenNdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given NDOCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given NDOCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !NDOCONC.S.F02 && !NDOCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3hGivenNdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenNdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given NDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given NDOCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("NDOCONC.S.F03 && NDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenNdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenNdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given NDOCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given NDOCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !NDOCONC.S.F03 && !NDOCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3jGivenNdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenNdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given NDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given NDOCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("NDOCONC.S.F04 && NDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenNdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenNdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given NDOCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("NDOCONC.S.Afffc && NDOCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given NDOCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !NDOCONC.S.F04 && NDOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3lGivenNdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenNdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given NDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("NDOCONC.S.Afffc && !NDOCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given NDOCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("NDOCONC.S.F05 && NDOCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenNdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenNdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given NDOCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !NDOCONC.S.F05 && !NDOCONC.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenNdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.A0007 && NDOCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "NDOCONC.S.A0007 is not set\n"); - if (ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("NDOCONC.S.A0007 && NDOCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenNdoconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "NDOCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !NDOCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenNdoconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when NDOCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("NDOCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenNdoconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when NDOCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !NDOCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenNdoconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when NDOCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("NDOCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when NDOCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !NDOCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 3i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when NDOCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("NDOCONC.S.F05")) { NextTest(); return; } - err = TestStep3iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 3j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("NDOCONC.S.Afffb && NDOCONC.S.F01")) { + " ***** Test Step 24 : Step 3i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when NDOCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !NDOCONC.S.F05 ")) { NextTest(); return; } - err = TestStep3jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep3iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 3k: Check that LevelValue is excluded from AttributeList when NDOCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("NDOCONC.S.Afffb && !NDOCONC.S.F01")) { + " ***** Test Step 25 : Step 3j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("NDOCONC.S.F01")) { NextTest(); return; } - err = TestStep3kCheckThatLevelValueIsExcludedFromAttributeListWhenNdoconcsf01LevIsNotSet_25(); + err = TestStep3jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && NDOCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 3k: Check that LevelValue is excluded from AttributeList when NDOCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !NDOCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep3kCheckThatLevelValueIsExcludedFromAttributeListWhenNdoconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("NDOCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("NDOCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -32531,6 +32594,9 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -32544,7 +32610,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -32585,7 +32651,33 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenNdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterNitrogenDioxideConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenNdoconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32606,7 +32698,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenNdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenNdoconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32627,7 +32719,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenNdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenNdoconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32648,7 +32740,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenNdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenNdoconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32669,7 +32761,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenNdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenNdoconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32690,7 +32782,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenNdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenNdoconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32711,7 +32803,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenNdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenNdoconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32732,7 +32824,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenNdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenNdoconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32753,7 +32845,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenNdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenNdoconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32774,7 +32866,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenNdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenNdoconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32795,7 +32887,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenNdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenNdoconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32816,7 +32908,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenNdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenNdoconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32837,7 +32929,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32866,7 +32958,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32894,7 +32986,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32917,7 +33009,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenNdoconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenNdoconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32943,7 +33035,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -32972,7 +33064,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenNdoconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenNdoconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33001,7 +33093,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33028,7 +33120,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33054,7 +33146,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33081,7 +33173,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep3iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf05AvgIsNotSet_23() + TestStep3iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenNdoconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33107,7 +33199,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep3jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33130,7 +33222,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kCheckThatLevelValueIsExcludedFromAttributeListWhenNdoconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep3kCheckThatLevelValueIsExcludedFromAttributeListWhenNdoconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33154,7 +33246,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33180,7 +33272,7 @@ class Test_TC_NDOCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -33709,256 +33801,253 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("OZCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given OZCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip(" !OZCONC.S.F00 && !OZCONC.S.F01 && !OZCONC.S.F02 && !OZCONC.S.F03 && !OZCONC.S.F04 && !OZCONC.S.F05")) { NextTest(); return; } - err = TestStep3bGivenOzconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given OZCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given OZCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("OZCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenOzconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenOzconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given OZCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given OZCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !OZCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenOzconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenOzconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given OZCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given OZCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("OZCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenOzconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenOzconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given OZCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given OZCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !OZCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenOzconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenOzconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given OZCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given OZCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("OZCONC.S.F02 && OZCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenOzconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenOzconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given OZCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given OZCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !OZCONC.S.F02 && !OZCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenOzconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenOzconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given OZCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given OZCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("OZCONC.S.F03 && OZCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenOzconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenOzconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given OZCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given OZCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !OZCONC.S.F03 && !OZCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3jGivenOzconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenOzconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given OZCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given OZCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("OZCONC.S.F04 && OZCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenOzconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenOzconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given OZCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("OZCONC.S.Afffc && OZCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given OZCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !OZCONC.S.F04 && !OZCONC.S.F00")) { NextTest(); return; } - err = TestStep3lGivenOzconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenOzconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given OZCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("OZCONC.S.Afffc && !OZCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given OZCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("OZCONC.S.F05 && OZCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenOzconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenOzconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given OZCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !OZCONC.S.F05 && !OZCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenOzconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("OZCONC.S.Afffb && OZCONC.S.A0007 && OZCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "OZCONC.S.A0007 is not set\n"); - if (ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("OZCONC.S.A0007 && OZCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenOzconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "OZCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !OZCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenOzconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when OZCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("OZCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenOzconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when OZCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !OZCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenOzconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when OZCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("OZCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when OZCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !OZCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when OZCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("OZCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("OZCONC.S.Afffb && OZCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when OZCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !OZCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when OZCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("OZCONC.S.Afffb && !OZCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("OZCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenOzconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && OZCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when OZCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !OZCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenOzconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("OZCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("OZCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -34058,6 +34147,9 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -34071,7 +34163,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -34112,7 +34204,33 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenOzconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterOzoneConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenOzconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34133,7 +34251,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenOzconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenOzconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34154,7 +34272,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenOzconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenOzconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34175,7 +34293,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenOzconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenOzconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34196,7 +34314,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenOzconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenOzconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34217,7 +34335,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenOzconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenOzconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34238,7 +34356,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenOzconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenOzconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34259,7 +34377,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenOzconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenOzconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34280,7 +34398,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenOzconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenOzconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34301,7 +34419,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenOzconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenOzconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34322,7 +34440,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenOzconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenOzconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34343,7 +34461,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenOzconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenOzconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34364,7 +34482,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34393,7 +34511,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34421,7 +34539,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34444,7 +34562,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenOzconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenOzconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34470,7 +34588,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34499,7 +34617,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenOzconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenOzconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34528,7 +34646,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34554,7 +34672,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf04PeaIsNotSet_21() + CHIP_ERROR TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34580,7 +34698,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34607,7 +34725,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenOzconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34633,7 +34751,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34656,7 +34774,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenOzconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenOzconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34680,7 +34798,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -34706,7 +34824,7 @@ class Test_TC_OZCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35235,258 +35353,257 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("PMHCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given PMHCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !PMHCONC.S.F00 && !PMHCONC.S.F01 && !PMHCONC.S.F02 && !PMHCONC.S.F03 && !PMHCONC.S.F04 && !PMHCONC.S.F05")) { NextTest(); return; } - err = TestStep3bGivenPmhconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given PMHCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given PMHCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMHCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenPmhconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenPmhconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given PMHCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given PMHCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMHCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenPmhconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenPmhconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given PMHCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given PMHCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMHCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenPmhconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenPmhconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given PMHCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given PMHCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMHCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenPmhconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenPmhconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given PMHCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given PMHCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMHCONC.S.F02 && PMHCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenPmhconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenPmhconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given PMHCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given PMHCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMHCONC.S.F02 && !PMHCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenPmhconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenPmhconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given PMHCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given PMHCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMHCONC.S.F03 && PMHCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenPmhconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenPmhconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given PMHCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given PMHCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMHCONC.S.F03 && !PMHCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3jGivenPmhconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenPmhconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given PMHCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given PMHCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMHCONC.S.F04 && PMHCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenPmhconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenPmhconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given PMHCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMHCONC.S.Afffc && PMHCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given PMHCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMHCONC.S.F04 && PMHCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3lGivenPmhconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenPmhconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given PMHCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("PMHCONC.S.Afffc && !PMHCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given PMHCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMHCONC.S.F05 && PMHCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenPmhconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenPmhconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given PMHCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMHCONC.S.F05 && !PMHCONC.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenPmhconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.A0007 && PMHCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "PMHCONC.S.A0007 is not set\n"); - if (ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("PMHCONC.S.A0007 && PMHCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmhconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "PMHCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !PMHCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmhconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when PMHCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("PMHCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmhconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when PMHCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !PMHCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmhconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when PMHCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("PMHCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when PMHCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !PMHCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when PMHCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("PMHCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("PMHCONC.S.Afffb && PMHCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when PMHCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !PMHCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when PMHCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("PMHCONC.S.Afffb && !PMHCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("PMHCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmhconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && PMHCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when PMHCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !PMHCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmhconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("PMHCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("PMHCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -35586,6 +35703,9 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -35599,7 +35719,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -35640,7 +35760,33 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenPmhconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterPM1ConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenPmhconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35661,7 +35807,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenPmhconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenPmhconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35682,7 +35828,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenPmhconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenPmhconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35703,7 +35849,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenPmhconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenPmhconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35724,7 +35870,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenPmhconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenPmhconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35745,7 +35891,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenPmhconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenPmhconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35766,7 +35912,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenPmhconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenPmhconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35787,7 +35933,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenPmhconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenPmhconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35808,7 +35954,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenPmhconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenPmhconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35829,7 +35975,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenPmhconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenPmhconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35850,7 +35996,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenPmhconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenPmhconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35871,7 +36017,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenPmhconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenPmhconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35892,7 +36038,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35921,7 +36067,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35949,7 +36095,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35972,7 +36118,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmhconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmhconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -35998,7 +36144,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36027,7 +36173,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmhconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmhconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36056,7 +36202,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36083,7 +36229,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36109,7 +36255,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36136,7 +36282,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmhconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36162,7 +36308,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36185,7 +36331,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmhconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmhconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36209,7 +36355,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36235,7 +36381,7 @@ class Test_TC_PMHCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -36764,258 +36910,257 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("PMICONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given PMICONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !PMICONC.S.F00 && !PMICONC.S.F01 && !PMICONC.S.F02 && !PMICONC.S.F03 && !PMICONC.S.F04 && !PMICONC.S.F05 ")) { NextTest(); return; } - err = TestStep3bGivenPmiconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given PMICONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given PMICONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMICONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenPmiconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenPmiconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given PMICONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given PMICONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMICONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenPmiconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenPmiconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given PMICONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given PMICONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMICONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenPmiconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenPmiconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given PMICONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given PMICONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMICONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenPmiconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenPmiconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given PMICONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given PMICONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMICONC.S.F02 && PMICONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenPmiconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenPmiconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given PMICONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given PMICONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMICONC.S.F02 && !PMICONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenPmiconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenPmiconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given PMICONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given PMICONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMICONC.S.F03 && PMICONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenPmiconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenPmiconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given PMICONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given PMICONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMICONC.S.F03 && !PMICONC.S.F01")) { NextTest(); return; } - err = TestStep3jGivenPmiconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenPmiconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given PMICONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given PMICONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMICONC.S.F04 && PMICONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenPmiconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenPmiconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given PMICONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMICONC.S.Afffc && PMICONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given PMICONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMICONC.S.F04 && !PMICONC.S.F00 ")) { NextTest(); return; } - err = TestStep3lGivenPmiconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenPmiconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given PMICONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("PMICONC.S.Afffc && !PMICONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given PMICONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMICONC.S.F05 && PMICONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenPmiconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenPmiconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given PMICONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMICONC.S.F05 && !PMICONC.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenPmiconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("PMICONC.S.Afffb && PMICONC.S.A0007 && PMICONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "PMICONC.S.A0007 is not set\n"); - if (ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("PMICONC.S.A0007 && PMICONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmiconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "PMICONC.S.A0007 is not set\n"); + if (ShouldSkip(" !PMICONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmiconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when PMICONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("PMICONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmiconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when PMICONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !PMICONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmiconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when PMICONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("PMICONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when PMICONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !PMICONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when PMICONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("PMICONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("PMICONC.S.Afffb && PMICONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when PMICONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !PMICONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when PMICONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("PMICONC.S.Afffb && !PMICONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("PMICONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmiconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && PMICONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when PMICONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !PMICONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmiconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("PMICONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("PMICONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -37115,6 +37260,9 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -37128,7 +37276,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -37169,7 +37317,33 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenPmiconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterPM25ConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenPmiconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37190,7 +37364,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenPmiconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenPmiconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37211,7 +37385,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenPmiconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenPmiconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37232,7 +37406,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenPmiconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenPmiconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37253,7 +37427,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenPmiconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenPmiconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37274,7 +37448,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenPmiconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenPmiconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37295,7 +37469,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenPmiconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenPmiconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37316,7 +37490,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenPmiconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenPmiconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37337,7 +37511,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenPmiconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenPmiconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37358,7 +37532,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenPmiconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenPmiconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37379,7 +37553,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenPmiconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenPmiconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37400,7 +37574,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenPmiconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenPmiconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37421,7 +37595,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37450,7 +37624,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37478,7 +37652,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37501,7 +37675,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmiconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmiconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37527,7 +37701,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37556,7 +37730,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmiconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmiconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37585,7 +37759,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37612,7 +37786,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37638,7 +37812,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37665,7 +37839,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmiconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37691,7 +37865,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37714,7 +37888,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmiconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmiconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37738,7 +37912,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -37764,7 +37938,7 @@ class Test_TC_PMICONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38293,258 +38467,257 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("PMKCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given PMKCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip( + " !PMKCONC.S.F00 && !PMKCONC.S.F01 && !PMKCONC.S.F02 && !PMKCONC.S.F03 && !PMKCONC.S.F04 && !PMKCONC.S.F05 ")) { NextTest(); return; } - err = TestStep3bGivenPmkconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given PMKCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given PMKCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMKCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenPmkconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenPmkconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given PMKCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given PMKCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMKCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenPmkconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenPmkconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given PMKCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given PMKCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMKCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenPmkconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenPmkconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given PMKCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given PMKCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMKCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenPmkconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenPmkconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given PMKCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given PMKCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("PMKCONC.S.F02 && PMKCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenPmkconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenPmkconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given PMKCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given PMKCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !PMKCONC.S.F02 && !PMKCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3hGivenPmkconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenPmkconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given PMKCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given PMKCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMKCONC.S.F03 && PMKCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenPmkconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenPmkconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given PMKCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given PMKCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMKCONC.S.F03 && !PMKCONC.S.F01")) { NextTest(); return; } - err = TestStep3jGivenPmkconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenPmkconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given PMKCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given PMKCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMKCONC.S.F04 && PMKCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenPmkconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenPmkconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given PMKCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("PMKCONC.S.Afffc && PMKCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given PMKCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMKCONC.S.F04 && !PMKCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3lGivenPmkconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenPmkconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given PMKCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " - "clear\n"); - if (ShouldSkip("PMKCONC.S.Afffc && !PMKCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given PMKCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("PMKCONC.S.F05 && PMKCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenPmkconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenPmkconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given PMKCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + "clear\n"); + if (ShouldSkip(" !PMKCONC.S.F05 && !PMKCONC.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenPmkconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.A0007 && PMKCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "PMKCONC.S.A0007 is not set\n"); - if (ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("PMKCONC.S.A0007 && PMKCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmkconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "PMKCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !PMKCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmkconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when PMKCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("PMKCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmkconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when PMKCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !PMKCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmkconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when PMKCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("PMKCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when PMKCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !PMKCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when PMKCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("PMKCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("PMKCONC.S.Afffb && PMKCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when PMKCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !PMKCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when PMKCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("PMKCONC.S.Afffb && !PMKCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("PMKCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmkconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && PMKCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when PMKCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !PMKCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmkconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("PMKCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("PMKCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -38644,6 +38817,9 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -38657,7 +38833,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -38698,7 +38874,33 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenPmkconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterPM10ConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenPmkconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38719,7 +38921,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenPmkconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenPmkconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38740,7 +38942,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenPmkconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenPmkconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38761,7 +38963,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenPmkconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenPmkconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38782,7 +38984,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenPmkconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenPmkconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38803,7 +39005,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenPmkconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenPmkconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38824,7 +39026,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenPmkconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenPmkconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38845,7 +39047,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenPmkconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenPmkconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38866,7 +39068,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenPmkconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenPmkconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38887,7 +39089,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenPmkconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenPmkconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38908,7 +39110,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenPmkconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenPmkconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38929,7 +39131,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenPmkconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenPmkconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38950,7 +39152,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -38979,7 +39181,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39007,7 +39209,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39030,7 +39232,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmkconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenPmkconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39056,7 +39258,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39085,7 +39287,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmkconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenPmkconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39114,7 +39316,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39141,7 +39343,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39167,7 +39369,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39194,7 +39396,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenPmkconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39220,7 +39422,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39243,7 +39445,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmkconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenPmkconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39267,7 +39469,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39293,7 +39495,7 @@ class Test_TC_PMKCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -39822,256 +40024,253 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("RNCONC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: - ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given RNCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip(" !RNCONC.S.F00 && !RNCONC.S.F01 && !RNCONC.S.F02 && !RNCONC.S.F03 && !RNCONC.S.F04 && !RNCONC.S.F05")) { NextTest(); return; } - err = TestStep3bGivenRnconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; case 3: - ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given RNCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F00")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given RNCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("RNCONC.S.F00")) { NextTest(); return; } - err = TestStep3cGivenRnconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3bGivenRnconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given RNCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F01")) { + ChipLogProgress(chipTool, + " ***** Test Step 4 : Step 3c: Given RNCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !RNCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3dGivenRnconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3cGivenRnconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; case 5: - ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given RNCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F01")) { + ChipLogProgress( + chipTool, " ***** Test Step 5 : Step 3d: Given RNCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("RNCONC.S.F01")) { NextTest(); return; } - err = TestStep3eGivenRnconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3dGivenRnconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given RNCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F02")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 3e: Given RNCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !RNCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3fGivenRnconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3eGivenRnconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; case 7: - ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given RNCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F02")) { + ChipLogProgress( + chipTool, " ***** Test Step 7 : Step 3f: Given RNCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("RNCONC.S.F02 && RNCONC.S.F01")) { NextTest(); return; } - err = TestStep3gGivenRnconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3fGivenRnconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; case 8: - ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given RNCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F03")) { + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 3g: Given RNCONC.S.F02(MED) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !RNCONC.S.F02 && !RNCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenRnconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3gGivenRnconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; case 9: - ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given RNCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F03")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given RNCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("RNCONC.S.F03 && RNCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenRnconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3hGivenRnconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; case 10: - ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given RNCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F04")) { + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 3i: Given RNCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !RNCONC.S.F03 && !RNCONC.S.F01")) { NextTest(); return; } - err = TestStep3jGivenRnconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3iGivenRnconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; case 11: - ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given RNCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F04")) { + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 3j: Given RNCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("RNCONC.S.F04 && RNCONC.S.F00")) { NextTest(); return; } - err = TestStep3kGivenRnconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3jGivenRnconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; case 12: - ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given RNCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("RNCONC.S.Afffc && RNCONC.S.F05")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 3k: Given RNCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !RNCONC.S.F04 && RNCONC.S.F00")) { NextTest(); return; } - err = TestStep3lGivenRnconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3kGivenRnconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; case 13: - ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given RNCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear\n"); - if (ShouldSkip("RNCONC.S.Afffc && !RNCONC.S.F05")) { + ChipLogProgress( + chipTool, " ***** Test Step 13 : Step 3l: Given RNCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("RNCONC.S.F05 && RNCONC.S.F00")) { NextTest(); return; } - err = TestStep3mGivenRnconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); + err = TestStep3lGivenRnconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffb")) { + ChipLogProgress(chipTool, + " ***** Test Step 14 : Step 3m: Given RNCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit clear\n"); + if (ShouldSkip(" !RNCONC.S.F05 && !RNCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenRnconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("RNCONC.S.Afffb && RNCONC.S.A0007 && RNCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "RNCONC.S.A0007 is not set\n"); - if (ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("RNCONC.S.A0007 && RNCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenRnconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "RNCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !RNCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenRnconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when RNCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("RNCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenRnconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when RNCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !RNCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenRnconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when RNCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("RNCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when RNCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !RNCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when RNCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("RNCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("RNCONC.S.Afffb && RNCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when RNCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !RNCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when RNCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("RNCONC.S.Afffb && !RNCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("RNCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenRnconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && RNCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when RNCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !RNCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenRnconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("RNCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("RNCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -40171,6 +40370,9 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -40184,7 +40386,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -40225,7 +40427,33 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenRnconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRadonConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenRnconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40246,7 +40474,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenRnconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenRnconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40267,7 +40495,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenRnconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenRnconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40288,7 +40516,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenRnconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenRnconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40309,7 +40537,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenRnconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenRnconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40330,7 +40558,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenRnconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenRnconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40351,7 +40579,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenRnconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenRnconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40372,7 +40600,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenRnconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenRnconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40393,7 +40621,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenRnconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenRnconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40414,7 +40642,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenRnconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenRnconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40435,7 +40663,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenRnconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenRnconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40456,7 +40684,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenRnconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenRnconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40477,7 +40705,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40506,7 +40734,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40534,7 +40762,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40557,7 +40785,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenRnconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenRnconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40583,7 +40811,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40612,7 +40840,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenRnconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenRnconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40641,7 +40869,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40667,7 +40895,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf04PeaIsNotSet_21() + CHIP_ERROR TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40693,7 +40921,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40720,7 +40948,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenRnconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40746,7 +40974,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40769,7 +40997,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenRnconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenRnconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40793,7 +41021,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -40819,7 +41047,7 @@ class Test_TC_RNCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41348,262 +41576,260 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("TVOCCONC.S.Afffd")) { + err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); + break; + case 2: + ChipLogProgress(chipTool, + " ***** Test Step 2 : Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set\n"); + if (ShouldSkip(" !TVOCCONC.S.F00 && !TVOCCONC.S.F01 && !TVOCCONC.S.F02 && !TVOCCONC.S.F03 && !TVOCCONC.S.F04 && " + "!TVOCCONC.S.F05 ")) { NextTest(); return; } - err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); + err = TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2(); break; - case 2: + case 3: ChipLogProgress( - chipTool, " ***** Test Step 2 : Step 3b: Given TVOCCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F00")) { + chipTool, " ***** Test Step 3 : Step 3b: Given TVOCCONC.S.F00(MEA) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("TVOCCONC.S.F00")) { NextTest(); return; } - err = TestStep3bGivenTvocconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2(); + err = TestStep3bGivenTvocconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3(); break; - case 3: + case 4: ChipLogProgress(chipTool, - " ***** Test Step 3 : Step 3c: Given TVOCCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit " + " ***** Test Step 4 : Step 3c: Given TVOCCONC.S.F00(MEA) is not set, ensure featuremap has the correct bit " "clear\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F00")) { + if (ShouldSkip(" !TVOCCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3cGivenTvocconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3(); + err = TestStep3cGivenTvocconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4(); break; - case 4: + case 5: ChipLogProgress( - chipTool, " ***** Test Step 4 : Step 3d: Given TVOCCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F01")) { + chipTool, " ***** Test Step 5 : Step 3d: Given TVOCCONC.S.F01(LEV) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("TVOCCONC.S.F01")) { NextTest(); return; } - err = TestStep3dGivenTvocconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4(); + err = TestStep3dGivenTvocconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5(); break; - case 5: + case 6: ChipLogProgress(chipTool, - " ***** Test Step 5 : Step 3e: Given TVOCCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit " + " ***** Test Step 6 : Step 3e: Given TVOCCONC.S.F01(LEV) is not set, ensure featuremap has the correct bit " "clear\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F01")) { + if (ShouldSkip(" !TVOCCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3eGivenTvocconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5(); + err = TestStep3eGivenTvocconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6(); break; - case 6: + case 7: ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 3f: Given TVOCCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F02")) { + chipTool, " ***** Test Step 7 : Step 3f: Given TVOCCONC.S.F02(MED) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("TVOCCONC.S.F02 && TVOCCONC.S.F01")) { NextTest(); return; } - err = TestStep3fGivenTvocconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6(); + err = TestStep3fGivenTvocconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7(); break; - case 7: + case 8: ChipLogProgress(chipTool, - " ***** Test Step 7 : Step 3g: Given TVOCCONC.S.F02(MED) is not set, ensure featuremap has the correct bit " + " ***** Test Step 8 : Step 3g: Given TVOCCONC.S.F02(MED) is not set, ensure featuremap has the correct bit " "clear\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F02")) { + if (ShouldSkip(" !TVOCCONC.S.F02 && !TVOCCONC.S.F01 ")) { NextTest(); return; } - err = TestStep3gGivenTvocconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7(); + err = TestStep3gGivenTvocconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8(); break; - case 8: + case 9: ChipLogProgress( - chipTool, " ***** Test Step 8 : Step 3h: Given TVOCCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F03")) { + chipTool, " ***** Test Step 9 : Step 3h: Given TVOCCONC.S.F03(CRI) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("TVOCCONC.S.F03 && TVOCCONC.S.F01")) { NextTest(); return; } - err = TestStep3hGivenTvocconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8(); + err = TestStep3hGivenTvocconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9(); break; - case 9: + case 10: ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 3i: Given TVOCCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " + " ***** Test Step 10 : Step 3i: Given TVOCCONC.S.F03(CRI) is not set, ensure featuremap has the correct bit " "clear\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F03")) { + if (ShouldSkip(" !TVOCCONC.S.F03 && !TVOCCONC.S.F01")) { NextTest(); return; } - err = TestStep3iGivenTvocconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9(); + err = TestStep3iGivenTvocconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10(); break; - case 10: + case 11: ChipLogProgress( - chipTool, " ***** Test Step 10 : Step 3j: Given TVOCCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F04")) { + chipTool, " ***** Test Step 11 : Step 3j: Given TVOCCONC.S.F04(PEA) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("TVOCCONC.S.F04 && TVOCCONC.S.F00")) { NextTest(); return; } - err = TestStep3jGivenTvocconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10(); + err = TestStep3jGivenTvocconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11(); break; - case 11: + case 12: ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 3k: Given TVOCCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " + " ***** Test Step 12 : Step 3k: Given TVOCCONC.S.F04(PEA) is not set, ensure featuremap has the correct bit " "clear\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F04")) { + if (ShouldSkip(" !TVOCCONC.S.F04 && !TVOCCONC.S.F00 ")) { NextTest(); return; } - err = TestStep3kGivenTvocconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11(); + err = TestStep3kGivenTvocconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12(); break; - case 12: + case 13: ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 3l: Given TVOCCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && TVOCCONC.S.F05")) { + chipTool, " ***** Test Step 13 : Step 3l: Given TVOCCONC.S.F05(AVG) ensure featuremap has the correct bits set\n"); + if (ShouldSkip("TVOCCONC.S.F05 && TVOCCONC.S.F00")) { NextTest(); return; } - err = TestStep3lGivenTvocconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12(); + err = TestStep3lGivenTvocconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13(); break; - case 13: + case 14: ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 3m: Given TVOCCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " + " ***** Test Step 14 : Step 3m: Given TVOCCONC.S.F05(AVG) is not set, ensure featuremap has the correct bit " "clear\n"); - if (ShouldSkip("TVOCCONC.S.Afffc && !TVOCCONC.S.F05")) { - NextTest(); - return; - } - err = TestStep3mGivenTvocconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13(); - break; - case 14: - ChipLogProgress(chipTool, " ***** Test Step 14 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffb")) { + if (ShouldSkip(" !TVOCCONC.S.F05 && !TVOCCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_14(); + err = TestStep3mGivenTvocconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14(); break; case 15: ChipLogProgress(chipTool, " ***** Test Step 15 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.A0007 && TVOCCONC.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16(); + err = TestStep4aReadTheGlobalAttributeAttributeList_16(); break; case 17: - ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " - "TVOCCONC.S.A0007 is not set\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.A0007")) { + ChipLogProgress(chipTool, " ***** Test Step 17 : Step 4b: Read the optional attribute Uncertainty in AttributeList\n"); + if (ShouldSkip("TVOCCONC.S.A0007 && TVOCCONC.S.F00")) { NextTest(); return; } - err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenTvocconcsa0007IsNotSet_17(); + err = TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17(); break; case 18: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " - "MaxMeasuredValue and Measurement Unit in AttributeList\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F00")) { + " ***** Test Step 18 : Step 4c: Check the optional attribute Uncertainty is excluded from AttributeList when " + "TVOCCONC.S.A0007 is not set\n"); + if (ShouldSkip(" !TVOCCONC.S.A0007 ")) { NextTest(); return; } - err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18(); + err = TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenTvocconcsa0007IsNotSet_18(); break; case 19: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " - "Uncertainty are excluded from AttributeList when TVOCCONC.S.F00 (MEA) is not set\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F00")) { + " ***** Test Step 19 : Step 4d: Read the optional, feature dependent attributes MeasuredValue, MinMeasuredValue, " + "MaxMeasuredValue and Measurement Unit in AttributeList\n"); + if (ShouldSkip("TVOCCONC.S.F00")) { NextTest(); return; } - err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenTvocconcsf00MeaIsNotSet_19(); + err = TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19(); break; case 20: ChipLogProgress(chipTool, - " ***** Test Step 20 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " - "PeakMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F04")) { + " ***** Test Step 20 : Step 4e: Check that MeasuredValue, MinMeasuredValue, MaxMeasuredValue, Measurement Unit and " + "Uncertainty are excluded from AttributeList when TVOCCONC.S.F00 (MEA) is not set\n"); + if (ShouldSkip(" !TVOCCONC.S.F00 ")) { NextTest(); return; } - err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20(); + err = TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenTvocconcsf00MeaIsNotSet_20(); break; case 21: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " - "AttributeList when TVOCCONC.S.F04 (PEA) is not set\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F04")) { + " ***** Test Step 21 : Step 4f: Read the optional, feature dependent attributes PeakMeasuredValue & " + "PeakMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("TVOCCONC.S.F04")) { NextTest(); return; } - err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf04PeaIsNotSet_21(); + err = TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21(); break; case 22: ChipLogProgress(chipTool, - " ***** Test Step 22 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " - "AverageMeasuredValueWindow in AttributeList\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F05")) { + " ***** Test Step 22 : Step 4g: Check that PeakMeasuredValue & PeakMeasuredValueWindow are excluded from " + "AttributeList when TVOCCONC.S.F04 (PEA) is not set\n"); + if (ShouldSkip(" !TVOCCONC.S.F04 ")) { NextTest(); return; } - err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22(); + err = TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf04PeaIsNotSet_22(); break; case 23: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " - "AttributeList when TVOCCONC.S.F05 (AVG) is not set\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F05")) { + " ***** Test Step 23 : Step 4h: Read the optional, feature dependent attributes AverageMeasuredValue " + "AverageMeasuredValueWindow in AttributeList\n"); + if (ShouldSkip("TVOCCONC.S.F05")) { NextTest(); return; } - err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf05AvgIsNotSet_23(); + err = TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23(); break; case 24: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && TVOCCONC.S.F01")) { + " ***** Test Step 24 : Step 4i: Check that AverageMeasuredValue and AverageMeasuredValueWindow are excluded from " + "AttributeList when TVOCCONC.S.F05 (AVG) is not set\n"); + if (ShouldSkip(" !TVOCCONC.S.F05 ")) { NextTest(); return; } - err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24(); + err = TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf05AvgIsNotSet_24(); break; case 25: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 4k: Check that LevelValue is excluded from AttributeList when TVOCCONC.S.F01 (LEV) is " - "not set\n"); - if (ShouldSkip("TVOCCONC.S.Afffb && !TVOCCONC.S.F01")) { + " ***** Test Step 25 : Step 4j: Read the optional, feature dependent attribute LevelValue in AttributeList\n"); + if (ShouldSkip("TVOCCONC.S.F01")) { NextTest(); return; } - err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenTvocconcsf01LevIsNotSet_25(); + err = TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25(); break; case 26: - ChipLogProgress(chipTool, " ***** Test Step 26 : Step 5l: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && TVOCCONC.S.Afffa")) { + ChipLogProgress(chipTool, + " ***** Test Step 26 : Step 4k: Check that LevelValue is excluded from AttributeList when TVOCCONC.S.F01 (LEV) is " + "not set\n"); + if (ShouldSkip(" !TVOCCONC.S.F01 ")) { NextTest(); return; } - NextTest(); - return; + err = TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenTvocconcsf01LevIsNotSet_26(); + break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : Step 6: Read the global attribute: AcceptedCommandList\n"); - if (ShouldSkip("TVOCCONC.S.Afff9")) { + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 5l: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_27(); - break; + NextTest(); + return; case 28: - ChipLogProgress(chipTool, " ***** Test Step 28 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("TVOCCONC.S.Afff8")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_28(); + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 6: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6ReadTheGlobalAttributeAcceptedCommandList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_29(); break; } @@ -41703,6 +41929,9 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { case 28: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -41716,7 +41945,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 29; + const uint16_t mTestCount = 30; chip::Optional mNodeId; chip::Optional mCluster; @@ -41758,7 +41987,34 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3bGivenTvocconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_2() + CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMapAndCheckForEitherBit0Or1Set_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = + [[MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: Read the global attribute: FeatureMap and check for either bit 0 or 1 set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenTvocconcsf00meaEnsureFeaturemapHasTheCorrectBitSet_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41780,7 +42036,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3cGivenTvocconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_3() + CHIP_ERROR TestStep3cGivenTvocconcsf00meaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41802,7 +42058,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3dGivenTvocconcsf01levEnsureFeaturemapHasTheCorrectBitSet_4() + CHIP_ERROR TestStep3dGivenTvocconcsf01levEnsureFeaturemapHasTheCorrectBitSet_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41824,7 +42080,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3eGivenTvocconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_5() + CHIP_ERROR TestStep3eGivenTvocconcsf01levIsNotSetEnsureFeaturemapHasTheCorrectBitClear_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41846,7 +42102,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3fGivenTvocconcsf02medEnsureFeaturemapHasTheCorrectBitSet_6() + CHIP_ERROR TestStep3fGivenTvocconcsf02medEnsureFeaturemapHasTheCorrectBitSet_7() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41868,7 +42124,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3gGivenTvocconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_7() + CHIP_ERROR TestStep3gGivenTvocconcsf02medIsNotSetEnsureFeaturemapHasTheCorrectBitClear_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41890,7 +42146,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3hGivenTvocconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_8() + CHIP_ERROR TestStep3hGivenTvocconcsf03criEnsureFeaturemapHasTheCorrectBitsSet_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41912,7 +42168,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3iGivenTvocconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_9() + CHIP_ERROR TestStep3iGivenTvocconcsf03criIsNotSetEnsureFeaturemapHasTheCorrectBitClear_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41934,7 +42190,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3jGivenTvocconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_10() + CHIP_ERROR TestStep3jGivenTvocconcsf04peaEnsureFeaturemapHasTheCorrectBitsSet_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41956,7 +42212,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3kGivenTvocconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_11() + CHIP_ERROR TestStep3kGivenTvocconcsf04peaIsNotSetEnsureFeaturemapHasTheCorrectBitClear_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -41978,7 +42234,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3lGivenTvocconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_12() + CHIP_ERROR TestStep3lGivenTvocconcsf05avgEnsureFeaturemapHasTheCorrectBitsSet_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42000,7 +42256,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3mGivenTvocconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_13() + CHIP_ERROR TestStep3mGivenTvocconcsf05avgIsNotSetEnsureFeaturemapHasTheCorrectBitClear_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42022,7 +42278,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_14() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42052,7 +42308,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_15() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42081,7 +42337,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_16() + CHIP_ERROR TestStep4bReadTheOptionalAttributeUncertaintyInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42105,7 +42361,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenTvocconcsa0007IsNotSet_17() + CHIP_ERROR TestStep4cCheckTheOptionalAttributeUncertaintyIsExcludedFromAttributeListWhenTvocconcsa0007IsNotSet_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42132,7 +42388,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_18() + TestStep4dReadTheOptionalFeatureDependentAttributesMeasuredValueMinMeasuredValueMaxMeasuredValueAndMeasurementUnitInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42162,7 +42418,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenTvocconcsf00MeaIsNotSet_19() + TestStep4eCheckThatMeasuredValueMinMeasuredValueMaxMeasuredValueMeasurementUnitAndUncertaintyAreExcludedFromAttributeListWhenTvocconcsf00MeaIsNotSet_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42192,7 +42448,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_20() + CHIP_ERROR TestStep4fReadTheOptionalFeatureDependentAttributesPeakMeasuredValuePeakMeasuredValueWindowInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42220,7 +42476,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf04PeaIsNotSet_21() + TestStep4gCheckThatPeakMeasuredValuePeakMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf04PeaIsNotSet_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42247,7 +42503,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_22() + CHIP_ERROR TestStep4hReadTheOptionalFeatureDependentAttributesAverageMeasuredValueAverageMeasuredValueWindowInAttributeList_23() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42275,7 +42531,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf05AvgIsNotSet_23() + TestStep4iCheckThatAverageMeasuredValueAndAverageMeasuredValueWindowAreExcludedFromAttributeListWhenTvocconcsf05AvgIsNotSet_24() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42302,7 +42558,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_24() + CHIP_ERROR TestStep4jReadTheOptionalFeatureDependentAttributeLevelValueInAttributeList_25() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42326,7 +42582,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenTvocconcsf01LevIsNotSet_25() + CHIP_ERROR TestStep4kCheckThatLevelValueIsExcludedFromAttributeListWhenTvocconcsf01LevIsNotSet_26() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42351,7 +42607,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_27() + CHIP_ERROR TestStep6ReadTheGlobalAttributeAcceptedCommandList_28() { MTRBaseDevice * device = GetDevice("alpha"); @@ -42378,7 +42634,7 @@ class Test_TC_TVOCCONC_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_28() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_29() { MTRBaseDevice * device = GetDevice("alpha"); @@ -45820,23 +46076,15 @@ class Test_TC_DESC_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - if (ShouldSkip("DESC.S.Afffd")) { - NextTest(); - return; - } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Step 3: Read the global attribute: FeatureMap\n"); - if (ShouldSkip("DESC.S.Afffc")) { - NextTest(); - return; - } err = TestStep3ReadTheGlobalAttributeFeatureMap_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED && DESC.S.Afffb")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } @@ -45844,7 +46092,7 @@ class Test_TC_DESC_1_1 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED && DESC.S.Afffb")) { + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } @@ -45858,7 +46106,7 @@ class Test_TC_DESC_1_1 : public TestCommandBridge { "where XXXX is the allowed MEI range (0x0001 - 0xFFF1), these values SHALL be ignored. 3.The list SHALL NOT " "contain any values in the Test Vendor or invalid range: (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 " "- 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); - if (ShouldSkip("PICS_USER_PROMPT && DESC.S.Afffb")) { + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } @@ -45871,7 +46119,7 @@ class Test_TC_DESC_1_1 : public TestCommandBridge { "(0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test Vendor or " "invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where " "XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); - if (ShouldSkip("PICS_USER_PROMPT && DESC.S.Afffa")) { + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } @@ -45884,7 +46132,7 @@ class Test_TC_DESC_1_1 : public TestCommandBridge { "range (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test " "Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - " "0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); - if (ShouldSkip("PICS_USER_PROMPT && DESC.S.Afff9")) { + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } @@ -45897,7 +46145,7 @@ class Test_TC_DESC_1_1 : public TestCommandBridge { "range (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test " "Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - " "0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); - if (ShouldSkip("PICS_USER_PROMPT && DESC.S.Afff8")) { + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } @@ -51649,13 +51897,12 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, - " ***** Test Step 2 : Step 3: TH writes TH writes to the DUT the a value less than or equal to the value read in " - "step 2\n"); + " ***** Test Step 2 : Step 3: TH writes to the DUT the a value less than or equal to the value read in step 2\n"); if (ShouldSkip("FAN.S.A0005")) { NextTest(); return; } - err = TestStep3ThWritesThWritesToTheDutTheAValueLessThanOrEqualToTheValueReadInStep2_2(); + err = TestStep3ThWritesToTheDutTheAValueLessThanOrEqualToTheValueReadInStep2_2(); break; case 3: ChipLogProgress(chipTool, " ***** Test Step 3 : Wait 1000ms\n"); @@ -51666,20 +51913,20 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { err = TestWait1000ms_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4: TH reads from the DUT the the SpeedSetting attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4: TH reads from the DUT the SpeedSetting attribute\n"); if (ShouldSkip("FAN.S.A0005")) { NextTest(); return; } - err = TestStep4ThReadsFromTheDutTheTheSpeedSettingAttribute_4(); + err = TestStep4ThReadsFromTheDutTheSpeedSettingAttribute_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Step 5: TH reads from the DUT the the SpeedCurrent attribute\n"); + ChipLogProgress(chipTool, " ***** Test Step 5 : Step 5: TH reads from the DUT the SpeedCurrent attribute\n"); if (ShouldSkip("FAN.S.A0006")) { NextTest(); return; } - err = TestStep5ThReadsFromTheDutTheTheSpeedCurrentAttribute_5(); + err = TestStep5ThReadsFromTheDutTheSpeedCurrentAttribute_5(); break; } @@ -51761,7 +52008,7 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3ThWritesThWritesToTheDutTheAValueLessThanOrEqualToTheValueReadInStep2_2() + CHIP_ERROR TestStep3ThWritesToTheDutTheAValueLessThanOrEqualToTheValueReadInStep2_2() { MTRBaseDevice * device = GetDevice("alpha"); @@ -51772,8 +52019,8 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { speedSettingArgument = [rSpeedMax copy]; [cluster writeAttributeSpeedSettingWithValue:speedSettingArgument completion:^(NSError * _Nullable err) { - NSLog(@"Step 3: TH writes TH writes to the DUT the a value less than or equal to the " - @"value read in step 2 Error: %@", + NSLog(@"Step 3: TH writes to the DUT the a value less than or equal to the value " + @"read in step 2 Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -51792,7 +52039,7 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestStep4ThReadsFromTheDutTheTheSpeedSettingAttribute_4() + CHIP_ERROR TestStep4ThReadsFromTheDutTheSpeedSettingAttribute_4() { MTRBaseDevice * device = GetDevice("alpha"); @@ -51800,7 +52047,7 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeSpeedSettingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 4: TH reads from the DUT the the SpeedSetting attribute Error: %@", err); + NSLog(@"Step 4: TH reads from the DUT the SpeedSetting attribute Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -51820,7 +52067,7 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep5ThReadsFromTheDutTheTheSpeedCurrentAttribute_5() + CHIP_ERROR TestStep5ThReadsFromTheDutTheSpeedCurrentAttribute_5() { MTRBaseDevice * device = GetDevice("alpha"); @@ -51828,7 +52075,7 @@ class Test_TC_FAN_3_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeSpeedCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 5: TH reads from the DUT the the SpeedCurrent attribute Error: %@", err); + NSLog(@"Step 5: TH reads from the DUT the SpeedCurrent attribute Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -53870,11 +54117,11 @@ class Test_TC_DGGEN_2_1 : public TestCommandBridge { } }; -class Test_TC_ICDM_1_1 : public TestCommandBridge { +class Test_TC_GRPKEY_1_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced - Test_TC_ICDM_1_1() - : TestCommandBridge("Test_TC_ICDM_1_1") + Test_TC_GRPKEY_1_1() + : TestCommandBridge("Test_TC_GRPKEY_1_1") , mTestIndex(0) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); @@ -53884,7 +54131,7 @@ class Test_TC_ICDM_1_1 : public TestCommandBridge { } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) - ~Test_TC_ICDM_1_1() {} + ~Test_TC_GRPKEY_1_1() {} /////////// TestCommand Interface ///////// void NextTest() override @@ -53892,11 +54139,11 @@ class Test_TC_ICDM_1_1 : public TestCommandBridge { CHIP_ERROR err = CHIP_NO_ERROR; if (0 == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Start: Test_TC_ICDM_1_1\n"); + ChipLogProgress(chipTool, " **** Test Start: Test_TC_GRPKEY_1_1\n"); } if (mTestCount == mTestIndex) { - ChipLogProgress(chipTool, " **** Test Complete: Test_TC_ICDM_1_1\n"); + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_GRPKEY_1_1\n"); SetCommandExitStatus(CHIP_NO_ERROR); return; } @@ -53913,103 +54160,561 @@ class Test_TC_ICDM_1_1 : public TestCommandBridge { err = TestStep1WaitForTheCommissionedDeviceToBeRetrieved_0(); break; case 1: - ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); - err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); + ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: TH reads the ClusterRevision from DUT\n"); + err = TestStep2ThReadsTheClusterRevisionFromDut_1(); break; case 2: - ChipLogProgress(chipTool, " ***** Test Step 2 : Step 3: Read the global attribute: FeatureMap\n"); - if (ShouldSkip("ICDM.S.F00")) { + ChipLogProgress(chipTool, " ***** Test Step 2 : Step 3a: TH reads the FeatureMap from DUT\n"); + if (ShouldSkip(" !GRPKEY.S.F00 ")) { NextTest(); return; } - err = TestStep3ReadTheGlobalAttributeFeatureMap_2(); + err = TestStep3aThReadsTheFeatureMapFromDut_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Step 3: Read the global attribute: FeatureMap\n"); - if (ShouldSkip(" !ICDM.S.F00 ")) { + ChipLogProgress( + chipTool, " ***** Test Step 3 : Step 3b: Given GRPKEY.S.F00(CS) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("GRPKEY.S.F00")) { NextTest(); return; } - err = TestStep3ReadTheGlobalAttributeFeatureMap_3(); + err = TestStep3bGivenGrpkeysf00csEnsureFeaturemapHasTheCorrectBitSet_3(); break; case 4: - ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4a: Read the global attribute: AttributeList\n"); + ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4a: TH reads AttributeList from DUT\n"); if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_4(); + err = TestStep4aThReadsAttributeListFromDut_4(); break; case 5: - ChipLogProgress(chipTool, " ***** Test Step 5 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { + ChipLogProgress(chipTool, " ***** Test Step 5 : Step 4a: TH reads AttributeList from DUT\n"); + if (ShouldSkip(" !PICS_EVENT_LIST_ENABLED ")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_5(); + err = TestStep4aThReadsAttributeListFromDut_5(); break; case 6: - ChipLogProgress( - chipTool, " ***** Test Step 6 : Step 4b: Read the optional attribute(RegisteredClients) in AttributeList\n"); - if (ShouldSkip("ICDM.S.A0003")) { + ChipLogProgress(chipTool, + " ***** Test Step 6 : Step 4b: The list SHALL NOT contain any additional values in the standard or scoped range: " + "(0x0000_0000 - 0x0000_4FFF) and (0x0000_F000 - 0x0000_FFFE). 2.The list MAY contain values in the Manufacturer " + "Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_4FFF), where XXXX is the allowed MEI range (0x0001 - " + "0xFFF1), these values SHALL be ignored. 3.TThe list SHALL NOT contain any values in the Test Vendor or invalid " + "range: (0x0000_5000 - 0x0000_EFFF and 0x0000_FFFF), (0xXXXX_5000 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), " + "where XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeRegisteredClientsInAttributeList_6(); + err = TestStep4bTheListShallNotContainAnyAdditionalValuesInTheStandardOrScopedRange0x000000000x00004fffAnd0x0000F0000x0000Fffe2TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX4fffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored3TTheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000050000x0000EfffAnd0x0000Ffff0xXXXX50000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_6(); break; case 7: - ChipLogProgress(chipTool, " ***** Test Step 7 : Step 4c: Read the optional attribute(IcdCounter) in AttributeList\n"); - if (ShouldSkip("ICDM.S.A0004")) { + ChipLogProgress(chipTool, " ***** Test Step 7 : Step 5a: TH1 reads EventList from DUT\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } - err = TestStep4cReadTheOptionalAttributeIcdCounterInAttributeList_7(); - break; + NextTest(); + return; case 8: ChipLogProgress(chipTool, - " ***** Test Step 8 : Step 4d: Read the optional attribute(ClientsSupportedPerFabric) in AttributeList\n"); - if (ShouldSkip("ICDM.S.A0005")) { + " ***** Test Step 8 : Step 5b: TH reads EventList attribute from DUT. 1.The list SHALL NOT contain any additional " + "values in the standard or scoped range: (0x0000_0000 - 0x0000_00FF). 2.The list MAY contain values in the " + "Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI range " + "(0x0001 - 0xFFF1), these values SHALL be ignored. 3.The list SHALL NOT contain any values in the Test Vendor or " + "invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - 0xFFFF_FFFF), where " + "XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestStep4dReadTheOptionalAttributeClientsSupportedPerFabricInAttributeList_8(); + err = TestStep5bThReadsEventListAttributeFromDut1TheListShallNotContainAnyAdditionalValuesInTheStandardOrScopedRange0x000000000x000000ff2TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX00ffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored3TheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000001000x0000Ffff0xXXXX01000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Step 5: Read the global attribute: EventList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + ChipLogProgress(chipTool, " ***** Test Step 9 : Step 6a: TH reads AcceptedCommandList from DUT\n"); + err = TestStep6aThReadsAcceptedCommandListFromDut_9(); + break; + case 10: + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 6b: TH reads AcceptedCommandList attribute from DUT. 1.The list MAY contain values in " + "the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI " + "range (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test " + "Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - " + "0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - NextTest(); - return; - case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Step 6a: Read the global attribute: AcceptedCommandList\n"); - err = TestStep6aReadTheGlobalAttributeAcceptedCommandList_10(); + err = TestStep6bThReadsAcceptedCommandListAttributeFromDut1TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX00ffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored2TheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000001000x0000Ffff0xXXXX01000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_10(); break; case 11: - ChipLogProgress( - chipTool, " ***** Test Step 11 : Step 6b: Read the optional command (StayActiveRequest) in AttributeList\n"); - if (ShouldSkip("ICDM.S.C03.Rsp")) { - NextTest(); - return; - } - err = TestStep6bReadTheOptionalCommandStayActiveRequestInAttributeList_11(); + ChipLogProgress(chipTool, " ***** Test Step 11 : Step 7a: TH reads GeneratedCommandList from DUT\n"); + err = TestStep7aThReadsGeneratedCommandListFromDut_11(); break; case 12: - ChipLogProgress(chipTool, " ***** Test Step 12 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip(" !ICDM.S.F00 ")) { - NextTest(); - return; - } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_12(); - break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Step 7: Read the global attribute: GeneratedCommandList\n"); - if (ShouldSkip("ICDM.S.F00")) { + ChipLogProgress(chipTool, + " ***** Test Step 12 : Step 7b: TH reads GeneratedCommandList attribute from DUT. 1.The list MAY contain values in " + "the Manufacturer Extensible Identifier (MEI) range: (0xXXXX_0000 - 0xXXXX_00FF), where XXXX is the allowed MEI " + "range (0x0001 - 0xFFF1), these values SHALL be ignored. 2.The list SHALL NOT contain any values in the Test " + "Vendor or invalid range: (0x0000_0100 - 0x0000_FFFF), (0xXXXX_0100 - 0xXXXX_FFFF) and (0xFFF1_0000 - " + "0xFFFF_FFFF), where XXXX is the allowed MEI range (0x0001 - 0xFFF1)\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_13(); + err = TestStep7bThReadsGeneratedCommandListAttributeFromDut1TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX00ffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored2TheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000001000x0000Ffff0xXXXX01000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_12(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 13; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestStep1WaitForTheCommissionedDeviceToBeRetrieved_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestStep2ThReadsTheClusterRevisionFromDut_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 2: TH reads the ClusterRevision from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 2U)); + } + + VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3aThReadsTheFeatureMapFromDut_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3a: TH reads the FeatureMap from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3bGivenGrpkeysf00csEnsureFeaturemapHasTheCorrectBitSet_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3b: Given GRPKEY.S.F00(CS) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4aThReadsAttributeListFromDut_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4a: TH reads AttributeList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65530UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4aThReadsAttributeListFromDut_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4a: TH reads AttributeList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR + TestStep4bTheListShallNotContainAnyAdditionalValuesInTheStandardOrScopedRange0x000000000x00004fffAnd0x0000F0000x0000Fffe2TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX4fffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored3TTheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000050000x0000EfffAnd0x0000Ffff0xXXXX50000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_6() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR + TestStep5bThReadsEventListAttributeFromDut1TheListShallNotContainAnyAdditionalValuesInTheStandardOrScopedRange0x000000000x000000ff2TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX00ffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored3TheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000001000x0000Ffff0xXXXX01000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_8() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestStep6aThReadsAcceptedCommandListFromDut_9() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 6a: TH reads AcceptedCommandList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR + TestStep6bThReadsAcceptedCommandListAttributeFromDut1TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX00ffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored2TheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000001000x0000Ffff0xXXXX01000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_10() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } + + CHIP_ERROR TestStep7aThReadsGeneratedCommandListFromDut_11() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterGroupKeyManagement alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 7a: TH reads GeneratedCommandList from DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("generatedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 2UL)); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 5UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR + TestStep7bThReadsGeneratedCommandListAttributeFromDut1TheListMayContainValuesInTheManufacturerExtensibleIdentifierMeiRange0xXXXX00000xXXXX00ffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1TheseValuesShallBeIgnored2TheListShallNotContainAnyValuesInTheTestVendorOrInvalidRange0x000001000x0000Ffff0xXXXX01000xXXXXFfffAnd0xFFF100000xFFFFFfffWhereXxxxIsTheAllowedMeiRange0x00010xFFF1_12() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); + } +}; + +class Test_TC_ICDM_1_1 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_ICDM_1_1() + : TestCommandBridge("Test_TC_ICDM_1_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_ICDM_1_1() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_ICDM_1_1\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_ICDM_1_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 : Step 1: Wait for the commissioned device to be retrieved\n"); + err = TestStep1WaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); + err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Step 3: Read the global attribute: FeatureMap\n"); + if (ShouldSkip("ICDM.S.F00")) { + NextTest(); + return; + } + err = TestStep3ReadTheGlobalAttributeFeatureMap_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Step 3: Read the global attribute: FeatureMap\n"); + if (ShouldSkip(" !ICDM.S.F00 ")) { + NextTest(); + return; + } + err = TestStep3ReadTheGlobalAttributeFeatureMap_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = TestStep4aReadTheGlobalAttributeAttributeList_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = TestStep4aReadTheGlobalAttributeAttributeList_5(); + break; + case 6: + ChipLogProgress( + chipTool, " ***** Test Step 6 : Step 4b: Read the optional attribute(RegisteredClients) in AttributeList\n"); + if (ShouldSkip("ICDM.S.A0003")) { + NextTest(); + return; + } + err = TestStep4bReadTheOptionalAttributeRegisteredClientsInAttributeList_6(); + break; + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : Step 4c: Read the optional attribute(IcdCounter) in AttributeList\n"); + if (ShouldSkip("ICDM.S.A0004")) { + NextTest(); + return; + } + err = TestStep4cReadTheOptionalAttributeIcdCounterInAttributeList_7(); + break; + case 8: + ChipLogProgress(chipTool, + " ***** Test Step 8 : Step 4d: Read the optional attribute(ClientsSupportedPerFabric) in AttributeList\n"); + if (ShouldSkip("ICDM.S.A0005")) { + NextTest(); + return; + } + err = TestStep4dReadTheOptionalAttributeClientsSupportedPerFabricInAttributeList_8(); + break; + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Step 5: Read the global attribute: EventList\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + NextTest(); + return; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Step 6a: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6aReadTheGlobalAttributeAcceptedCommandList_10(); + break; + case 11: + ChipLogProgress( + chipTool, " ***** Test Step 11 : Step 6b: Read the optional command (StayActiveRequest) in AttributeList\n"); + if (ShouldSkip("ICDM.S.C03.Rsp")) { + NextTest(); + return; + } + err = TestStep6bReadTheOptionalCommandStayActiveRequestInAttributeList_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Step 7: Read the global attribute: GeneratedCommandList\n"); + if (ShouldSkip(" !ICDM.S.F00 ")) { + NextTest(); + return; + } + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Step 7: Read the global attribute: GeneratedCommandList\n"); + if (ShouldSkip("ICDM.S.F00")) { + NextTest(); + return; + } + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_13(); break; } @@ -93324,6 +94029,478 @@ class Test_TC_SWTCH_1_1 : public TestCommandBridge { } }; +class Test_TC_RVCOPSTATE_1_1 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_RVCOPSTATE_1_1() + : TestCommandBridge("Test_TC_RVCOPSTATE_1_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_RVCOPSTATE_1_1() {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_RVCOPSTATE_1_1\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_RVCOPSTATE_1_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 : Step 1: Wait for the commissioned device to be retrieved\n"); + err = TestStep1WaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: TH reads the ClusterRevision attribute from the DUT\n"); + err = TestStep2ThReadsTheClusterRevisionAttributeFromTheDut_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Step 3: TH reads the FeatureMap attribute from the DUT\n"); + err = TestStep3ThReadsTheFeatureMapAttributeFromTheDut_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Step 4a: TH reads the AttributeList attribute from the DUT\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = TestStep4aThReadsTheAttributeListAttributeFromTheDut_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Step 4a: TH reads the AttributeList attribute from the DUT\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = TestStep4aThReadsTheAttributeListAttributeFromTheDut_4(); + break; + case 5: + ChipLogProgress(chipTool, + " ***** Test Step 5 : Step 4b: TH reads from the DUT the optional attribute(CountdownTime) in the AttributeList " + "from the DUT\n"); + if (ShouldSkip("RVCOPSTATE.S.A0002")) { + NextTest(); + return; + } + err = TestStep4bThReadsFromTheDutTheOptionalAttributeCountdownTimeInTheAttributeListFromTheDut_5(); + break; + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : Step 5a: TH reads from the DUT the EventList attribute.\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + NextTest(); + return; + case 7: + ChipLogProgress(chipTool, + " ***** Test Step 7 : Step 5b: TH reads from the DUT the optional event(OperationCompletion) in EventList.\n"); + if (ShouldSkip("PICS_EVENT_LIST_ENABLED && RVCOPSTATE.S.E01")) { + NextTest(); + return; + } + NextTest(); + return; + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : Step 6a: Read the optional command(Pause) in AcceptedCommandList\n"); + if (ShouldSkip("RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C03.Rsp")) { + NextTest(); + return; + } + err = TestStep6aReadTheOptionalCommandPauseInAcceptedCommandList_8(); + break; + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : Step 6b: Read the optional command(Stop) in AcceptedCommandList\n"); + if (ShouldSkip("RVCOPSTATE.S.C01.Rsp || RVCOPSTATE.S.C02.Rsp")) { + NextTest(); + return; + } + err = TestStep6bReadTheOptionalCommandStopInAcceptedCommandList_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : Step 6c: Read the optional command(Start) in AcceptedCommandList\n"); + if (ShouldSkip("RVCOPSTATE.S.C02.Rsp")) { + NextTest(); + return; + } + err = TestStep6cReadTheOptionalCommandStartInAcceptedCommandList_10(); + break; + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Step 6d: Read the optional command(Resume) in AcceptedCommandList\n"); + if (ShouldSkip("RVCOPSTATE.S.C03.Rsp || RVCOPSTATE.S.C00.Rsp")) { + NextTest(); + return; + } + err = TestStep6dReadTheOptionalCommandResumeInAcceptedCommandList_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Step 7: Read the global attribute: GeneratedCommandList\n"); + if (ShouldSkip(" RVCOPSTATE.S.C00.Rsp || RVCOPSTATE.S.C01.Rsp || RVCOPSTATE.S.C02.Rsp || RVCOPSTATE.S.C03.Rsp ")) { + NextTest(); + return; + } + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_12(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 13; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mTimeout; + + CHIP_ERROR TestStep1WaitForTheCommissionedDeviceToBeRetrieved_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + + CHIP_ERROR TestStep2ThReadsTheClusterRevisionAttributeFromTheDut_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 2: TH reads the ClusterRevision attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 1U)); + } + + VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep3ThReadsTheFeatureMapAttributeFromTheDut_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3: TH reads the FeatureMap attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValue("FeatureMap", actualValue, 0UL)); + } + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4aThReadsTheAttributeListAttributeFromTheDut_3() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4a: TH reads the AttributeList attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65530UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4aThReadsTheAttributeListAttributeFromTheDut_4() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4a: TH reads the AttributeList attribute from the DUT Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65528UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65529UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65531UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65532UL)); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65533UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4bThReadsFromTheDutTheOptionalAttributeCountdownTimeInTheAttributeListFromTheDut_5() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog( + @"Step 4b: TH reads from the DUT the optional attribute(CountdownTime) in the AttributeList from the DUT Error: %@", + err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 2UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6aReadTheOptionalCommandPauseInAcceptedCommandList_8() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 6a: Read the optional command(Pause) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6bReadTheOptionalCommandStopInAcceptedCommandList_9() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 6b: Read the optional command(Stop) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 1UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6cReadTheOptionalCommandStartInAcceptedCommandList_10() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 6c: Read the optional command(Start) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 2UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6dReadTheOptionalCommandResumeInAcceptedCommandList_11() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 6d: Read the optional command(Resume) in AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_12() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterRVCOperationalState alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 7: Read the global attribute: GeneratedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("generatedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("generatedCommandList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_TMP_1_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -93968,6 +95145,10 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { break; case 1: ChipLogProgress(chipTool, " ***** Test Step 1 : Step 2: Read the global attribute: ClusterRevision\n"); + if (ShouldSkip("PICS_USER_PROMPT")) { + NextTest(); + return; + } err = TestStep2ReadTheGlobalAttributeClusterRevision_1(); break; case 2: @@ -94033,153 +95214,444 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { err = TestStep3gGivenTstatsf05autoEnsureFeaturemapHasTheCorrectBitSet_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { + ChipLogProgress( + chipTool, " ***** Test Step 9 : Step 3h: Given TSTAT.S.F06(LTNE) ensure featuremap has the correct bit set\n"); + if (ShouldSkip("TSTAT.S.F06")) { NextTest(); return; } - err = TestStep4aReadTheGlobalAttributeAttributeList_9(); + err = TestStep3hGivenTstatsf06ltneEnsureFeaturemapHasTheCorrectBitSet_9(); break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : Step 4a: Read the global attribute: AttributeList\n"); - if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { + if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } err = TestStep4aReadTheGlobalAttributeAttributeList_10(); break; case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : Step 4a: Read the global attribute: AttributeList\n"); + if (ShouldSkip("!PICS_EVENT_LIST_ENABLED")) { + NextTest(); + return; + } + err = TestStep4aReadTheGlobalAttributeAttributeList_11(); + break; + case 12: ChipLogProgress(chipTool, - " ***** Test Step 11 : Step 4b: Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList\n"); + " ***** Test Step 12 : Step 4b: Read the Feature dependent(TSTAT.S.F00(HEAT)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F00")) { NextTest(); return; } - err = TestStep4bReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_11(); + err = TestStep4bReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_12(); break; - case 12: + case 13: ChipLogProgress(chipTool, - " ***** Test Step 12 : Step 4c: Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList\n"); + " ***** Test Step 13 : Step 4c: Read the Feature dependent(TSTAT.S.F01(COOL)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F01")) { NextTest(); return; } - err = TestStep4cReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_12(); + err = TestStep4cReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_13(); break; - case 13: + case 14: ChipLogProgress(chipTool, - " ***** Test Step 13 : Step 4d: Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList\n"); + " ***** Test Step 14 : Step 4d: Read the Feature dependent(TSTAT.S.F02(OCC)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F02")) { NextTest(); return; } - err = TestStep4dReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_13(); + err = TestStep4dReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_14(); break; - case 14: + case 15: ChipLogProgress(chipTool, - " ***** Test Step 14 : Step 4e: Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in " + " ***** Test Step 15 : Step 4e: Read the Feature dependent(TSTAT.S.F00(HEAT) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.F02")) { NextTest(); return; } - err = TestStep4eReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_14(); + err = TestStep4eReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_15(); break; - case 15: + case 16: ChipLogProgress(chipTool, - " ***** Test Step 15 : Step 4f: Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in " + " ***** Test Step 16 : Step 4f: Read the Feature dependent(TSTAT.S.F01(COOL) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.F02")) { NextTest(); return; } - err = TestStep4fReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_15(); + err = TestStep4fReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_16(); break; - case 16: + case 17: ChipLogProgress(chipTool, - " ***** Test Step 16 : Step 4g: Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList\n"); + " ***** Test Step 17 : Step 4g: Read the Feature dependent(TSTAT.S.F05(AUTO)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F05")) { NextTest(); return; } - err = TestStep4gReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_16(); + err = TestStep4gReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_17(); break; - case 17: + case 18: ChipLogProgress(chipTool, - " ***** Test Step 17 : Step 4h: Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList\n"); + " ***** Test Step 18 : Step 4h: Read the Feature dependent(TSTAT.S.F03(SCH)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F03")) { NextTest(); return; } - err = TestStep4hReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_17(); + err = TestStep4hReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_18(); break; - case 18: + case 19: ChipLogProgress(chipTool, - " ***** Test Step 18 : Step 4i: Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList\n"); + " ***** Test Step 19 : Step 4i: Read the Feature dependent(TSTAT.S.F04(SB)) attribute in AttributeList\n"); if (ShouldSkip("TSTAT.S.F04")) { NextTest(); return; } - err = TestStep4iReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_18(); + err = TestStep4iReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_19(); break; - case 19: + case 20: ChipLogProgress(chipTool, - " ***** Test Step 19 : Step 4j: Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in " + " ***** Test Step 20 : Step 4j: Read the Feature dependent(TSTAT.S.F04(SB) & TSTAT.S.F02(OCC)) attribute in " "AttributeList\n"); if (ShouldSkip("TSTAT.S.F04 && TSTAT.S.F02")) { NextTest(); return; } - err = TestStep4jReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_19(); - break; - case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Step 5a: Read the global attribute: AcceptedCommandList\n"); - err = TestStep5aReadTheGlobalAttributeAcceptedCommandList_20(); + err = TestStep4jReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_20(); break; case 21: + ChipLogProgress(chipTool, " ***** Test Step 21 : Step 4k: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0001")) { + NextTest(); + return; + } + err = TestStep4kReadTheOptionalAttributeInAttributeList_21(); + break; + case 22: + ChipLogProgress(chipTool, " ***** Test Step 22 : Step 4l: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0009")) { + NextTest(); + return; + } + err = TestStep4lReadTheOptionalAttributeInAttributeList_22(); + break; + case 23: + ChipLogProgress(chipTool, " ***** Test Step 23 : Step 4m: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0010")) { + NextTest(); + return; + } + err = TestStep4mReadTheOptionalAttributeInAttributeList_23(); + break; + case 24: + ChipLogProgress(chipTool, " ***** Test Step 24 : Step 4n: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A001a")) { + NextTest(); + return; + } + err = TestStep4nReadTheOptionalAttributeInAttributeList_24(); + break; + case 25: + ChipLogProgress(chipTool, " ***** Test Step 25 : Step 4o: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A001d")) { + NextTest(); + return; + } + err = TestStep4oReadTheOptionalAttributeInAttributeList_25(); + break; + case 26: + ChipLogProgress(chipTool, " ***** Test Step 26 : Step 4p: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0023")) { + NextTest(); + return; + } + err = TestStep4pReadTheOptionalAttributeInAttributeList_26(); + break; + case 27: + ChipLogProgress(chipTool, " ***** Test Step 27 : Step 4q: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0024")) { + NextTest(); + return; + } + err = TestStep4qReadTheOptionalAttributeInAttributeList_27(); + break; + case 28: + ChipLogProgress(chipTool, " ***** Test Step 28 : Step 4r: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0025")) { + NextTest(); + return; + } + err = TestStep4rReadTheOptionalAttributeInAttributeList_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : Step 4s: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0029")) { + NextTest(); + return; + } + err = TestStep4sReadTheOptionalAttributeInAttributeList_29(); + break; + case 30: + ChipLogProgress(chipTool, " ***** Test Step 30 : Step 4t: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0030")) { + NextTest(); + return; + } + err = TestStep4tReadTheOptionalAttributeInAttributeList_30(); + break; + case 31: + ChipLogProgress(chipTool, " ***** Test Step 31 : Step 4u: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0031")) { + NextTest(); + return; + } + err = TestStep4uReadTheOptionalAttributeInAttributeList_31(); + break; + case 32: + ChipLogProgress(chipTool, " ***** Test Step 32 : Step 4x: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0032")) { + NextTest(); + return; + } + err = TestStep4xReadTheOptionalAttributeInAttributeList_32(); + break; + case 33: + ChipLogProgress(chipTool, " ***** Test Step 33 : Step 5y: Read the optional attribute: AttributeList\n"); + if (ShouldSkip("TSTAT.S.A003a")) { + NextTest(); + return; + } + err = TestStep5yReadTheOptionalAttributeAttributeList_33(); + break; + case 34: + ChipLogProgress(chipTool, " ***** Test Step 34 : Step 4z: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0040")) { + NextTest(); + return; + } + err = TestStep4zReadTheOptionalAttributeInAttributeList_34(); + break; + case 35: + ChipLogProgress(chipTool, " ***** Test Step 35 : Step 4A: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0041")) { + NextTest(); + return; + } + err = TestStep4aReadTheOptionalAttributeInAttributeList_35(); + break; + case 36: + ChipLogProgress(chipTool, " ***** Test Step 36 : Step 4B: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0042")) { + NextTest(); + return; + } + err = TestStep4bReadTheOptionalAttributeInAttributeList_36(); + break; + case 37: + ChipLogProgress(chipTool, " ***** Test Step 37 : Step 4C: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0043")) { + NextTest(); + return; + } + err = TestStep4cReadTheOptionalAttributeInAttributeList_37(); + break; + case 38: + ChipLogProgress(chipTool, " ***** Test Step 38 : Step 5D: Read the optional attribute: AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0044")) { + NextTest(); + return; + } + err = TestStep5dReadTheOptionalAttributeAttributeList_38(); + break; + case 39: + ChipLogProgress(chipTool, " ***** Test Step 39 : Step 4E: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0045")) { + NextTest(); + return; + } + err = TestStep4eReadTheOptionalAttributeInAttributeList_39(); + break; + case 40: + ChipLogProgress(chipTool, " ***** Test Step 40 : Step 4F: Read the optional attribute in AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0046")) { + NextTest(); + return; + } + err = TestStep4fReadTheOptionalAttributeInAttributeList_40(); + break; + case 41: + ChipLogProgress(chipTool, " ***** Test Step 41 : Step 5G: Read the optional attribute: AttributeList\n"); + if (ShouldSkip("TSTAT.S.A0047")) { + NextTest(); + return; + } + err = TestStep5gReadTheOptionalAttributeAttributeList_41(); + break; + case 42: + ChipLogProgress(chipTool, + " ***** Test Step 42 : Step 4H: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0003")) { + NextTest(); + return; + } + err = TestStep4hReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_42(); + break; + case 43: + ChipLogProgress(chipTool, + " ***** Test Step 43 : Step 4I: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0004")) { + NextTest(); + return; + } + err = TestStep4iReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_43(); + break; + case 44: + ChipLogProgress(chipTool, + " ***** Test Step 44 : Step 4J: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0008")) { + NextTest(); + return; + } + err = TestStep4jReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_44(); + break; + case 45: + ChipLogProgress(chipTool, + " ***** Test Step 45 : Step 4K: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0015")) { + NextTest(); + return; + } + err = TestStep4kReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_45(); + break; + case 46: + ChipLogProgress(chipTool, + " ***** Test Step 46 : Step 4L: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F00 && TSTAT.S.A0016")) { + NextTest(); + return; + } + err = TestStep4lReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_46(); + break; + case 47: + ChipLogProgress(chipTool, + " ***** Test Step 47 : Step 4M: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0005")) { + NextTest(); + return; + } + err = TestStep4mReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_47(); + break; + case 48: + ChipLogProgress(chipTool, + " ***** Test Step 48 : Step 4N: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0007")) { + NextTest(); + return; + } + err = TestStep4nReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_48(); + break; + case 49: + ChipLogProgress(chipTool, + " ***** Test Step 49 : Step 4O: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0007")) { + NextTest(); + return; + } + err = TestStep4oReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_49(); + break; + case 50: + ChipLogProgress(chipTool, + " ***** Test Step 50 : Step 4P: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0017")) { + NextTest(); + return; + } + err = TestStep4pReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_50(); + break; + case 51: + ChipLogProgress(chipTool, + " ***** Test Step 51 : Step 4Q: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F01 && TSTAT.S.A0018")) { + NextTest(); + return; + } + err = TestStep4qReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_51(); + break; + case 52: ChipLogProgress(chipTool, - " ***** Test Step 21 : Step 5b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList\n"); + " ***** Test Step 52 : Step 4R: Read the Feature dependent(TSTAT.S.F05(AUTO)) optional attribute in " + "AttributeList\n"); + if (ShouldSkip("TSTAT.S.F05 && TSTAT.S.A001e")) { + NextTest(); + return; + } + err = TestStep4rReadTheFeatureDependentTSTATSF05AUTOOptionalAttributeInAttributeList_52(); + break; + case 53: + ChipLogProgress(chipTool, + " ***** Test Step 53 : Step 5a: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList\n"); if (ShouldSkip("TSTAT.S.F03")) { NextTest(); return; } - err = TestStep5bReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_21(); + err = TestStep5aReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_53(); break; - case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : Step 6a: Read the global attribute: GeneratedCommandList\n"); + case 54: + ChipLogProgress(chipTool, " ***** Test Step 54 : Step 5b: Read the optional attribute: AcceptedCommandList\n"); + if (ShouldSkip("TSTAT.S.C04.Rsp")) { + NextTest(); + return; + } + err = TestStep5bReadTheOptionalAttributeAcceptedCommandList_54(); + break; + case 55: + ChipLogProgress(chipTool, " ***** Test Step 55 : Step 6a: Read the global attribute: GeneratedCommandList\n"); if (ShouldSkip(" !TSTAT.S.C04.Rsp && !TSTAT.S.C02.Rsp ")) { NextTest(); return; } - err = TestStep6aReadTheGlobalAttributeGeneratedCommandList_22(); + err = TestStep6aReadTheGlobalAttributeGeneratedCommandList_55(); break; - case 23: + case 56: ChipLogProgress(chipTool, - " ***** Test Step 23 : Step 6b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in GeneratedCommandList\n"); + " ***** Test Step 56 : Step 6b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in GeneratedCommandList\n"); if (ShouldSkip("TSTAT.S.F03")) { NextTest(); return; } - err = TestStep6bReadFeatureDependentTSTATSF03SCHCommandsInGeneratedCommandList_23(); + err = TestStep6bReadFeatureDependentTSTATSF03SCHCommandsInGeneratedCommandList_56(); break; - case 24: + case 57: ChipLogProgress(chipTool, - " ***** Test Step 24 : Step 6c: Read optional command (GetRelayStatusLogResponse) in GeneratedCommandList\n"); + " ***** Test Step 57 : Step 6c: Read optional command (GetRelayStatusLogResponse) in GeneratedCommandList\n"); if (ShouldSkip("TSTAT.S.C04.Rsp")) { NextTest(); return; } - err = TestStep6cReadOptionalCommandGetRelayStatusLogResponseInGeneratedCommandList_24(); + err = TestStep6cReadOptionalCommandGetRelayStatusLogResponseInGeneratedCommandList_57(); break; - case 25: + case 58: ChipLogProgress(chipTool, - " ***** Test Step 25 : Step 7: Read EventList attribute from the DUT.For this cluster the list is usually empty " + " ***** Test Step 58 : Step 7: Read EventList attribute from the DUT.For this cluster the list is usually empty " "but it can contain manufacturer specific event IDs.\n"); if (ShouldSkip("PICS_USER_PROMPT")) { NextTest(); return; } - err = TestStep7ReadEventListAttributeFromTheDUTForThisClusterTheListIsUsuallyEmptyButItCanContainManufacturerSpecificEventIDs_25(); + err = TestStep7ReadEventListAttributeFromTheDUTForThisClusterTheListIsUsuallyEmptyButItCanContainManufacturerSpecificEventIDs_58(); break; } @@ -94270,6 +95742,105 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { case 25: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 26: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 27: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 28: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 29: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 30: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 31: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 32: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 33: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 34: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 35: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 36: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 37: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 38: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 39: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 40: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 41: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 42: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 43: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 44: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 45: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 46: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 47: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 48: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 49: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 50: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 51: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 52: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 53: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 54: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 55: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 56: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 57: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 58: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -94283,7 +95854,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 26; + const uint16_t mTestCount = 59; chip::Optional mNodeId; chip::Optional mCluster; @@ -94301,25 +95872,11 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { CHIP_ERROR TestStep2ReadTheGlobalAttributeClusterRevision_1() { - MTRBaseDevice * device = GetDevice("alpha"); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; - VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - - [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 2: Read the global attribute: ClusterRevision Error: %@", err); - - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - - { - id actualValue = value; - VerifyOrReturn(CheckValue("ClusterRevision", actualValue, 5U)); - } - - VerifyOrReturn(CheckConstraintType("clusterRevision", "int16u", "int16u")); - NextTest(); - }]; - - return CHIP_NO_ERROR; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt("alpha", value); } CHIP_ERROR TestStep3aReadTheGlobalAttributeFeatureMap_2() @@ -94460,7 +96017,26 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_9() + CHIP_ERROR TestStep3hGivenTstatsf06ltneEnsureFeaturemapHasTheCorrectBitSet_9() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 3h: Given TSTAT.S.F06(LTNE) ensure featuremap has the correct bit set Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("featureMap", "bitmap32", "bitmap32")); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_10() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94489,7 +96065,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_10() + CHIP_ERROR TestStep4aReadTheGlobalAttributeAttributeList_11() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94517,7 +96093,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_11() + CHIP_ERROR TestStep4bReadTheFeatureDependentTSTATSF00HEATAttributeInAttributeList_12() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94538,7 +96114,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_12() + CHIP_ERROR TestStep4cReadTheFeatureDependentTSTATSF01COOLAttributeInAttributeList_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94559,7 +96135,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4dReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_13() + CHIP_ERROR TestStep4dReadTheFeatureDependentTSTATSF02OCCAttributeInAttributeList_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94580,7 +96156,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4eReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_14() + CHIP_ERROR TestStep4eReadTheFeatureDependentTSTATSF00HEATTstatsf02occAttributeInAttributeList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94602,7 +96178,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4fReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_15() + CHIP_ERROR TestStep4fReadTheFeatureDependentTSTATSF01COOLTstatsf02occAttributeInAttributeList_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94624,7 +96200,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4gReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_16() + CHIP_ERROR TestStep4gReadTheFeatureDependentTSTATSF05AUTOAttributeInAttributeList_17() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94647,7 +96223,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4hReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_17() + CHIP_ERROR TestStep4hReadTheFeatureDependentTSTATSF03SCHAttributeInAttributeList_18() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94670,7 +96246,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4iReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_18() + CHIP_ERROR TestStep4iReadTheFeatureDependentTSTATSF04SBAttributeInAttributeList_19() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94693,7 +96269,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4jReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_19() + CHIP_ERROR TestStep4jReadTheFeatureDependentTSTATSF04SBTstatsf02occAttributeInAttributeList_20() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94717,20 +96293,671 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep5aReadTheGlobalAttributeAcceptedCommandList_20() + CHIP_ERROR TestStep4kReadTheOptionalAttributeInAttributeList_21() { MTRBaseDevice * device = GetDevice("alpha"); __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 5a: Read the global attribute: AcceptedCommandList Error: %@", err); + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4k: Read the optional attribute in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); - VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 0UL)); + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 1UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4lReadTheOptionalAttributeInAttributeList_22() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4l: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 9UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4mReadTheOptionalAttributeInAttributeList_23() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4m: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 16UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4nReadTheOptionalAttributeInAttributeList_24() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4n: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 26UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4oReadTheOptionalAttributeInAttributeList_25() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4o: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 29UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4pReadTheOptionalAttributeInAttributeList_26() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4p: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 35UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4qReadTheOptionalAttributeInAttributeList_27() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4q: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 36UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4rReadTheOptionalAttributeInAttributeList_28() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4r: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 37UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4sReadTheOptionalAttributeInAttributeList_29() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4s: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 41UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4tReadTheOptionalAttributeInAttributeList_30() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4t: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 48UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4uReadTheOptionalAttributeInAttributeList_31() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4u: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 49UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4xReadTheOptionalAttributeInAttributeList_32() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4x: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 50UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep5yReadTheOptionalAttributeAttributeList_33() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 5y: Read the optional attribute: AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 58UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4zReadTheOptionalAttributeInAttributeList_34() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4z: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 64UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4aReadTheOptionalAttributeInAttributeList_35() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4A: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 65UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4bReadTheOptionalAttributeInAttributeList_36() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4B: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 66UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4cReadTheOptionalAttributeInAttributeList_37() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4C: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 67UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep5dReadTheOptionalAttributeAttributeList_38() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 5D: Read the optional attribute: AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 68UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4eReadTheOptionalAttributeInAttributeList_39() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4E: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 69UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4fReadTheOptionalAttributeInAttributeList_40() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4F: Read the optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 70UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep5gReadTheOptionalAttributeAttributeList_41() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 5G: Read the optional attribute: AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 71UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4hReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_42() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4H: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 3UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4iReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_43() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4I: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4jReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_44() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4J: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 8UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4kReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_45() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4K: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 21UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4lReadTheFeatureDependentTSTATSF00HEATOptionalAttributeInAttributeList_46() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4L: Read the Feature dependent(TSTAT.S.F00(HEAT)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 22UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4mReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_47() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4M: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4nReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_48() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4N: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 6UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4oReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_49() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4O: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 7UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4pReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_50() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4P: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 23UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4qReadTheFeatureDependentTSTATSF01COOLOptionalAttributeInAttributeList_51() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4Q: Read the Feature dependent(TSTAT.S.F01(COOL)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 24UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4rReadTheFeatureDependentTSTATSF05AUTOOptionalAttributeInAttributeList_52() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4R: Read the Feature dependent(TSTAT.S.F05(AUTO)) optional attribute in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 30UL)); NextTest(); }]; @@ -94738,7 +96965,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep5bReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_21() + CHIP_ERROR TestStep5aReadFeatureDependentTSTATSF03SCHCommandsInAcceptedCommandList_53() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94746,7 +96973,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 5b: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList Error: %@", err); + NSLog(@"Step 5a: Read Feature dependent(TSTAT.S.F03(SCH)) commands in AcceptedCommandList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -94762,7 +96989,28 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6aReadTheGlobalAttributeGeneratedCommandList_22() + CHIP_ERROR TestStep5bReadTheOptionalAttributeAcceptedCommandList_54() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 5b: Read the optional attribute: AcceptedCommandList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("acceptedCommandList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("acceptedCommandList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6aReadTheGlobalAttributeGeneratedCommandList_55() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94786,7 +97034,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6bReadFeatureDependentTSTATSF03SCHCommandsInGeneratedCommandList_23() + CHIP_ERROR TestStep6bReadFeatureDependentTSTATSF03SCHCommandsInGeneratedCommandList_56() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94807,7 +97055,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6cReadOptionalCommandGetRelayStatusLogResponseInGeneratedCommandList_24() + CHIP_ERROR TestStep6cReadOptionalCommandGetRelayStatusLogResponseInGeneratedCommandList_57() { MTRBaseDevice * device = GetDevice("alpha"); @@ -94829,7 +97077,7 @@ class Test_TC_TSTAT_1_1 : public TestCommandBridge { } CHIP_ERROR - TestStep7ReadEventListAttributeFromTheDUTForThisClusterTheListIsUsuallyEmptyButItCanContainManufacturerSpecificEventIDs_25() + TestStep7ReadEventListAttributeFromTheDUTForThisClusterTheListIsUsuallyEmptyButItCanContainManufacturerSpecificEventIDs_58() { chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; @@ -165908,12 +168156,12 @@ class Test_TC_DRLK_2_2 : public TestCommandBridge { err = TestStep9ThSendsLockDoorCommandToTheDutWithoutAnyArgumentPINCode_15(); break; case 16: - ChipLogProgress(chipTool, " ***** Test Step 16 : TStep 10a: H reads the WrongCodeEntryLimit attribute from the DUT\n"); + ChipLogProgress(chipTool, " ***** Test Step 16 : Step 10a: H reads the WrongCodeEntryLimit attribute from the DUT\n"); if (ShouldSkip("DRLK.S.A0030")) { NextTest(); return; } - err = TestTStep10aHReadsTheWrongCodeEntryLimitAttributeFromTheDut_16(); + err = TestStep10aHReadsTheWrongCodeEntryLimitAttributeFromTheDut_16(); break; case 17: ChipLogProgress(chipTool, @@ -166590,7 +168838,7 @@ class Test_TC_DRLK_2_2 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTStep10aHReadsTheWrongCodeEntryLimitAttributeFromTheDut_16() + CHIP_ERROR TestStep10aHReadsTheWrongCodeEntryLimitAttributeFromTheDut_16() { MTRBaseDevice * device = GetDevice("alpha"); @@ -166598,7 +168846,7 @@ class Test_TC_DRLK_2_2 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeWrongCodeEntryLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { - NSLog(@"TStep 10a: H reads the WrongCodeEntryLimit attribute from the DUT Error: %@", err); + NSLog(@"Step 10a: H reads the WrongCodeEntryLimit attribute from the DUT Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -176380,37 +178628,56 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { break; case 9: ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 4c: Read the optional attribute InPlaceIndicator (ACFREMON.S.A0002) in AttributeList\n"); - if (ShouldSkip("ACFREMON.S.A0002")) { + " ***** Test Step 9 : Step 4c: Read the optional attribute InPlaceIndicator (ACFREMON.S.A0003) in AttributeList\n"); + if (ShouldSkip("ACFREMON.S.A0003")) { NextTest(); return; } - err = TestStep4cReadTheOptionalAttributeInPlaceIndicatorAcfremonsa0002InAttributeList_9(); + err = TestStep4cReadTheOptionalAttributeInPlaceIndicatorAcfremonsa0003InAttributeList_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Step 5: TH reads EventList attribute from DUT\n"); + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 4d: Read the optional attribute LastChangedTime (ACFREMON.S.A0004) in AttributeList\n"); + if (ShouldSkip("ACFREMON.S.A0004")) { + NextTest(); + return; + } + err = TestStep4dReadTheOptionalAttributeLastChangedTimeAcfremonsa0004InAttributeList_10(); + break; + case 11: + ChipLogProgress(chipTool, + " ***** Test Step 11 : Step 4e: Read the optional attribute ReplacementProductList (ACFREMON.S.F02) in " + "AttributeList\n"); + if (ShouldSkip("ACFREMON.S.F02")) { + NextTest(); + return; + } + err = TestStep4eReadTheOptionalAttributeReplacementProductListAcfremonsf02InAttributeList_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Step 5: TH reads EventList attribute from DUT\n"); if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } NextTest(); return; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Step 6a: Read the global attribute: AcceptedCommandList\n"); - err = TestStep6aReadTheGlobalAttributeAcceptedCommandList_11(); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Step 6a: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6aReadTheGlobalAttributeAcceptedCommandList_13(); break; - case 12: + case 14: ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 14 : Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList\n"); if (ShouldSkip("ACFREMON.S.C00.Rsp")) { NextTest(); return; } - err = TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_12(); + err = TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_14(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Step 7: Read the global attribute: GeneratedCommandList\n"); - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_13(); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_15(); break; } @@ -176465,6 +178732,12 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -176478,7 +178751,7 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 14; + const uint16_t mTestCount = 16; chip::Optional mNodeId; chip::Optional mCluster; @@ -176691,7 +178964,7 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4cReadTheOptionalAttributeInPlaceIndicatorAcfremonsa0002InAttributeList_9() + CHIP_ERROR TestStep4cReadTheOptionalAttributeInPlaceIndicatorAcfremonsa0003InAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -176701,7 +178974,7 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 4c: Read the optional attribute InPlaceIndicator (ACFREMON.S.A0002) in AttributeList Error: %@", err); + NSLog(@"Step 4c: Read the optional attribute InPlaceIndicator (ACFREMON.S.A0003) in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -176714,7 +178987,53 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6aReadTheGlobalAttributeAcceptedCommandList_11() + CHIP_ERROR TestStep4dReadTheOptionalAttributeLastChangedTimeAcfremonsa0004InAttributeList_10() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterActivatedCarbonFilterMonitoring alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4d: Read the optional attribute LastChangedTime (ACFREMON.S.A0004) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4eReadTheOptionalAttributeReplacementProductListAcfremonsf02InAttributeList_11() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterActivatedCarbonFilterMonitoring alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4e: Read the optional attribute ReplacementProductList (ACFREMON.S.F02) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6aReadTheGlobalAttributeAcceptedCommandList_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -176735,7 +179054,7 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_12() + CHIP_ERROR TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -176758,7 +179077,7 @@ class Test_TC_ACFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_13() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -177175,47 +179494,67 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { break; case 8: ChipLogProgress(chipTool, - " ***** Test Step 8 : Step 4a: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList\n"); + " ***** Test Step 8 : Step 4b: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList\n"); if (ShouldSkip("HEPAFREMON.S.F00")) { NextTest(); return; } - err = TestStep4aReadTheFeatureDependentHEPAFREMONSF00AttributeInAttributeList_8(); + err = TestStep4bReadTheFeatureDependentHEPAFREMONSF00AttributeInAttributeList_8(); break; case 9: ChipLogProgress(chipTool, - " ***** Test Step 9 : Step 4b: Read the optional attribute InPlaceIndicator (HEPAFREMON.S.A0002) in " + " ***** Test Step 9 : Step 4c: Read the optional attribute InPlaceIndicator (HEPAFREMON.S.A0003) in " "AttributeList\n"); - if (ShouldSkip("HEPAFREMON.S.A0002")) { + if (ShouldSkip("HEPAFREMON.S.A0003")) { NextTest(); return; } - err = TestStep4bReadTheOptionalAttributeInPlaceIndicatorHepafremonsa0002InAttributeList_9(); + err = TestStep4cReadTheOptionalAttributeInPlaceIndicatorHepafremonsa0003InAttributeList_9(); break; case 10: - ChipLogProgress(chipTool, " ***** Test Step 10 : Step 5: TH reads EventList attribute from DUT\n"); + ChipLogProgress(chipTool, + " ***** Test Step 10 : Step 4d: Read the optional attribute LastChangedTime (HEPAFREMON.S.A0004) in " + "AttributeList\n"); + if (ShouldSkip("HEPAFREMON.S.A0004")) { + NextTest(); + return; + } + err = TestStep4dReadTheOptionalAttributeLastChangedTimeHepafremonsa0004InAttributeList_10(); + break; + case 11: + ChipLogProgress(chipTool, + " ***** Test Step 11 : Step 4e: Read the optional attribute ReplacementProductList (HEPAFREMON.S.F02) in " + "AttributeList\n"); + if (ShouldSkip("HEPAFREMON.S.F02")) { + NextTest(); + return; + } + err = TestStep4eReadTheOptionalAttributeReplacementProductListHepafremonsf02InAttributeList_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : Step 5: TH reads EventList attribute from DUT\n"); if (ShouldSkip("PICS_EVENT_LIST_ENABLED")) { NextTest(); return; } NextTest(); return; - case 11: - ChipLogProgress(chipTool, " ***** Test Step 11 : Step 6a: Read the global attribute: AcceptedCommandList\n"); - err = TestStep6aReadTheGlobalAttributeAcceptedCommandList_11(); + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : Step 6a: Read the global attribute: AcceptedCommandList\n"); + err = TestStep6aReadTheGlobalAttributeAcceptedCommandList_13(); break; - case 12: + case 14: ChipLogProgress( - chipTool, " ***** Test Step 12 : Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList\n"); + chipTool, " ***** Test Step 14 : Step 6b: Read the optional command (ResetCondition) in AcceptedCommandList\n"); if (ShouldSkip("HEPAFREMON.S.C00.Rsp")) { NextTest(); return; } - err = TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_12(); + err = TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_14(); break; - case 13: - ChipLogProgress(chipTool, " ***** Test Step 13 : Step 7: Read the global attribute: GeneratedCommandList\n"); - err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_13(); + case 15: + ChipLogProgress(chipTool, " ***** Test Step 15 : Step 7: Read the global attribute: GeneratedCommandList\n"); + err = TestStep7ReadTheGlobalAttributeGeneratedCommandList_15(); break; } @@ -177270,6 +179609,12 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); break; + case 14: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 15: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; } // Go on to the next test. @@ -177283,7 +179628,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 14; + const uint16_t mTestCount = 16; chip::Optional mNodeId; chip::Optional mCluster; @@ -177471,7 +179816,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4aReadTheFeatureDependentHEPAFREMONSF00AttributeInAttributeList_8() + CHIP_ERROR TestStep4bReadTheFeatureDependentHEPAFREMONSF00AttributeInAttributeList_8() { MTRBaseDevice * device = GetDevice("alpha"); @@ -177481,7 +179826,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 4a: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList Error: %@", err); + NSLog(@"Step 4b: Read the feature dependent(HEPAFREMON.S.F00) attribute in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -177496,7 +179841,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep4bReadTheOptionalAttributeInPlaceIndicatorHepafremonsa0002InAttributeList_9() + CHIP_ERROR TestStep4cReadTheOptionalAttributeInPlaceIndicatorHepafremonsa0003InAttributeList_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -177506,7 +179851,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"Step 4b: Read the optional attribute InPlaceIndicator (HEPAFREMON.S.A0002) in AttributeList Error: %@", err); + NSLog(@"Step 4c: Read the optional attribute InPlaceIndicator (HEPAFREMON.S.A0003) in AttributeList Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -177519,7 +179864,54 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6aReadTheGlobalAttributeAcceptedCommandList_11() + CHIP_ERROR TestStep4dReadTheOptionalAttributeLastChangedTimeHepafremonsa0004InAttributeList_10() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterHEPAFilterMonitoring alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Step 4d: Read the optional attribute LastChangedTime (HEPAFREMON.S.A0004) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 4UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep4eReadTheOptionalAttributeReplacementProductListHepafremonsf02InAttributeList_11() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterHEPAFilterMonitoring alloc] initWithDevice:device + endpointID:@(1) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog( + @"Step 4e: Read the optional attribute ReplacementProductList (HEPAFREMON.S.F02) in AttributeList Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + VerifyOrReturn(CheckConstraintType("attributeList", "list", "list")); + VerifyOrReturn(CheckConstraintContains("attributeList", value, 5UL)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestStep6aReadTheGlobalAttributeAcceptedCommandList_13() { MTRBaseDevice * device = GetDevice("alpha"); @@ -177540,7 +179932,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_12() + CHIP_ERROR TestStep6bReadTheOptionalCommandResetConditionInAcceptedCommandList_14() { MTRBaseDevice * device = GetDevice("alpha"); @@ -177563,7 +179955,7 @@ class Test_TC_HEPAFREMON_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_13() + CHIP_ERROR TestStep7ReadTheGlobalAttributeGeneratedCommandList_15() { MTRBaseDevice * device = GetDevice("alpha"); @@ -177965,6 +180357,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), @@ -178050,6 +180443,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), diff --git a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h index c7509b6750793a..85b6ca3fc694ae 100644 --- a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h @@ -23,10 +23,10 @@ #include -class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand +class Test_TC_WNCV_5_1_SimulatedSuite : public TestCommand { public: - Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 6) + Test_TC_WNCV_5_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_5_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -34,7 +34,7 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_3_1_SimulatedSuite() {} + ~Test_TC_WNCV_5_1_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -54,18 +54,6 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - 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)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -82,64 +70,39 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: ActionList"); - VerifyOrDo(!ShouldSkip("ACT.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Actions::Id, Actions::Attributes::ActionList::Id); + LogStep(0, "DUT reads the FeatureMap attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::FeatureMap::Id); } case 1: { - LogStep(1, "Read attribute: EndpointLists"); - VerifyOrDo(!ShouldSkip("ACT.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Actions::Id, Actions::Attributes::EndpointLists::Id); + LogStep(1, "DUT reads the Type attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Type::Id); } case 2: { - LogStep(2, "Read attribute: SetupURL"); - VerifyOrDo(!ShouldSkip("ACT.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Actions::Id, Actions::Attributes::SetupURL::Id); + LogStep(2, "DUT reads the EndProductType attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::EndProductType::Id); } case 3: { - LogStep(3, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(3, "DUT reads the Mode attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Mode::Id); } case 4: { - LogStep(4, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && ACT.C.AO-READ"), 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 5: { - LogStep(5, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && ACT.C.AO-WRITE"), 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); + LogStep(4, "DUT reads the ConfigStatus attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand +class Test_TC_OCC_2_4_SimulatedSuite : public TestCommand { public: - Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 4) + Test_TC_OCC_2_4_SimulatedSuite() : TestCommand("Test_TC_OCC_2_4_Simulated", 2) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -147,7 +110,7 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BOOL_3_1_SimulatedSuite() {} + ~Test_TC_OCC_2_4_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -167,18 +130,6 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -195,54 +146,24 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: StateValue"); - VerifyOrDo(!ShouldSkip("BOOL.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), BooleanState::Id, BooleanState::Attributes::StateValue::Id); + LogStep(0, "TH reads OccupancySensorType attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); } case 1: { - LogStep(1, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 2: { - LogStep(2, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 3: { - LogStep(3, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(1, "TH reads OccupancySensorTypeBitmap attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand +class Test_TC_DGSW_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DESC_2_2_SimulatedSuite() : TestCommand("Test_TC_DESC_2_2_Simulated", 5) + Test_TC_DGSW_3_2_SimulatedSuite() : TestCommand("Test_TC_DGSW_3_2_Simulated", 1) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -250,7 +171,7 @@ class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DESC_2_2_SimulatedSuite() {} + ~Test_TC_DGSW_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -270,10 +191,6 @@ class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -290,44 +207,19 @@ class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "DUT reads DeviceTypeList from TH."); - VerifyOrDo(!ShouldSkip("DESC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::DeviceTypeList::Id); - } - case 1: { - LogStep(1, "DUT reads ServerList from the TH"); - VerifyOrDo(!ShouldSkip("DESC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::ServerList::Id); - } - case 2: { - LogStep(2, "DUT reads ClientList attribute from the TH"); - VerifyOrDo(!ShouldSkip("DESC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::ClientList::Id); - } - case 3: { - LogStep(3, "DUT reads PartsList attribute from the TH"); - VerifyOrDo(!ShouldSkip("DESC.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::PartsList::Id); - } - case 4: { - LogStep(4, "DUT reads TagList from the TH"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(0, "DUT sends ResetWatermarks to TH"); + VerifyOrDo(!ShouldSkip("DGSW.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Commands::ResetWatermarks::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGETH_3_1_SimulatedSuite : public TestCommand +class Test_TC_DGETH_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DGETH_3_1_SimulatedSuite() : TestCommand("Test_TC_DGETH_3_1_Simulated", 9) + Test_TC_DGETH_3_2_SimulatedSuite() : TestCommand("Test_TC_DGETH_3_2_Simulated", 1) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -335,7 +227,7 @@ class Test_TC_DGETH_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGETH_3_1_SimulatedSuite() {} + ~Test_TC_DGETH_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -371,68 +263,20 @@ class Test_TC_DGETH_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: PHYRate"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::PHYRate::Id); - } - case 1: { - LogStep(1, "Read attribute: FullDuplex"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::FullDuplex::Id); - } - case 2: { - LogStep(2, "Read attribute: PacketRxCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::PacketRxCount::Id); - } - case 3: { - LogStep(3, "Read attribute: PacketTxCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::PacketTxCount::Id); - } - case 4: { - LogStep(4, "Read attribute: TxErrCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::TxErrCount::Id); - } - case 5: { - LogStep(5, "Read attribute: CollisionCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::CollisionCount::Id); - } - case 6: { - LogStep(6, "Read attribute: OverrunCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::OverrunCount::Id); - } - case 7: { - LogStep(7, "Read attribute: CarrierDetect"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::CarrierDetect::Id); - } - case 8: { - LogStep(8, "Read attribute: TimeSinceReset"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::TimeSinceReset::Id); + LogStep(0, "DUT sends ResetCounts to TH"); + VerifyOrDo(!ShouldSkip("DGETH.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), EthernetNetworkDiagnostics::Id, + EthernetNetworkDiagnostics::Commands::ResetCounts::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGSW_3_1_SimulatedSuite : public TestCommand +class Test_TC_DGWIFI_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DGSW_3_1_SimulatedSuite() : TestCommand("Test_TC_DGSW_3_1_Simulated", 4) + Test_TC_DGWIFI_3_2_SimulatedSuite() : TestCommand("Test_TC_DGWIFI_3_2_Simulated", 1) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -440,7 +284,7 @@ class Test_TC_DGSW_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGSW_3_1_SimulatedSuite() {} + ~Test_TC_DGWIFI_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -476,35 +320,19 @@ class Test_TC_DGSW_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: ThreadMetrics"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::ThreadMetrics::Id); - } - case 1: { - LogStep(1, "Read attribute: CurrentHeapFree"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::CurrentHeapFree::Id); - } - case 2: { - LogStep(2, "Read attribute: CurrentHeapUsed"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::CurrentHeapUsed::Id); - } - case 3: { - LogStep(3, "Read attribute: CurrentHeapHighWatermark"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, - SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::Id); + LogStep(0, "DUT sends ResetCounts command to TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Commands::ResetCounts::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand +class Test_TC_WNCV_6_1_SimulatedSuite : public TestCommand { public: - Test_TC_DGWIFI_3_1_SimulatedSuite() : TestCommand("Test_TC_DGWIFI_3_1_Simulated", 13) + Test_TC_WNCV_6_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_6_1_Simulated", 3) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -512,7 +340,7 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGWIFI_3_1_SimulatedSuite() {} + ~Test_TC_WNCV_6_1_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -548,85 +376,29 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: BSSID"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::Bssid::Id); + LogStep(0, "DUT sends UpOrOpen command to TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::UpOrOpen::Id); } case 1: { - LogStep(1, "Read attribute: SecurityType"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::SecurityType::Id); + LogStep(1, "DUT sends DownOrClose command to TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::DownOrClose::Id); } case 2: { - LogStep(2, "Read attribute: WiFiVersion"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::WiFiVersion::Id); - } - case 3: { - LogStep(3, "Read attribute: ChannelNumber"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::ChannelNumber::Id); - } - case 4: { - LogStep(4, "Read attribute: RSSI"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::Rssi::Id); - } - case 5: { - LogStep(5, "Read attribute: BeaconLostCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::BeaconLostCount::Id); - } - case 6: { - LogStep(6, "Read attribute: BeaconRxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::BeaconRxCount::Id); - } - case 7: { - LogStep(7, "Read attribute: PacketMulticastRxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::Id); - } - case 8: { - LogStep(8, "Read attribute: PacketMulticastTxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::Id); - } - case 9: { - LogStep(9, "Read attribute: PacketUnicastRxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::Id); - } - case 10: { - LogStep(10, "Read attribute: PacketUnicastTxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::Id); - } - case 11: { - LogStep(11, "Read attribute: CurrentMaxRate"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::Id); - } - case 12: { - LogStep(12, "Read attribute: OverrunCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::OverrunCount::Id); + LogStep(2, "DUT sends StopMotion command to TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::StopMotion::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand +class Test_TC_WNCV_7_1_SimulatedSuite : public TestCommand { public: - Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 7) + Test_TC_WNCV_7_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_7_1_Simulated", 2) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -634,7 +406,7 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_FLW_3_1_SimulatedSuite() {} + ~Test_TC_WNCV_7_1_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -654,18 +426,6 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -682,83 +442,40 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("FLW.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::MeasuredValue::Id); + LogStep(0, "If (PA_LF & LF) DUT sends GoToLiftPercentage command with 50% to DUT"); + VerifyOrDo(!ShouldSkip("WNCV.C.C05.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToLiftPercentage::Id); } case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("FLW.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::MinMeasuredValue::Id); - } - case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("FLW.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::MaxMeasuredValue::Id); - } - case 3: { - LogStep(3, "Read attribute: Tolerance"); - VerifyOrDo(!ShouldSkip("FLW.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::Tolerance::Id); - } - case 4: { - LogStep(4, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && FLW.C.AO-READ"), 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 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(1, "If (PA_TL & TL) DUT sends GoToTiltPercentage command with 50% to DUT"); + VerifyOrDo(!ShouldSkip("WNCV.C.C08.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToTiltPercentage::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_G_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_3_4_SimulatedSuite : public TestCommand { public: - Test_TC_G_3_1_SimulatedSuite() : TestCommand("Test_TC_G_3_1_Simulated", 1) + Test_TC_CC_3_4_SimulatedSuite() : TestCommand("Test_TC_CC_3_4_Simulated", 16) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_G_3_1_SimulatedSuite() {} + ~Test_TC_CC_3_4_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -772,71 +489,19 @@ class Test_TC_G_3_1_SimulatedSuite : public TestCommand 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) - { - case 0: { - LogStep(0, "DUT reads NameSupport attribute value from TH"); - VerifyOrDo(!ShouldSkip("G.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Groups::Id, Groups::Attributes::NameSupport::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_I_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 7) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_I_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 4: + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 5: + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 6: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -856,83 +521,121 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: IdentifyTime"); - VerifyOrDo(!ShouldSkip("I.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyTime::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute: identifytype"); - VerifyOrDo(!ShouldSkip("I.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyType::Id); + LogStep(1, "DUT sends MoveToHue command to TH an Hue with _TransitionTime 300"); + VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id); } case 2: { - LogStep(2, "write attribute: IdentifyTime"); - VerifyOrDo(!ShouldSkip("I.C.AM-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyTime::Id); + LogStep(2, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 3: { - LogStep(3, "Readback attribute: IdentifyTime"); - VerifyOrDo(!ShouldSkip("I.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyTime::Id); + LogStep(3, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(4, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(5, "DUT sends MoveHue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id); } case 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 7: { + LogStep(7, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 8: { + LogStep(8, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 9: { + LogStep(9, "DUT sends StepHue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepHue::Id); + } + case 10: { + LogStep(10, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 11: { + LogStep(11, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 12: { + LogStep(12, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 13: { + LogStep(13, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); + } + case 14: { + LogStep(14, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 15: { + LogStep(15, "Over TransitionTime, DUT reads CurrentHue attribute from TH"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_4_5_SimulatedSuite : public TestCommand { public: - Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 12) + Test_TC_CC_4_5_SimulatedSuite() : TestCommand("Test_TC_CC_4_5_Simulated", 22) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_PRS_3_1_SimulatedSuite() {} + ~Test_TC_CC_4_5_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -946,11 +649,11 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 9: + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 10: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -958,6 +661,14 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -974,3183 +685,154 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MeasuredValue::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MinMeasuredValue::Id); + LogStep(1, "DUT sends MoveToSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToSaturation::Id); } case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MaxMeasuredValue::Id); + LogStep(2, "DUT reads CurrentSaturation attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 3: { - LogStep(3, "Read attribute: Tolerance"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::Tolerance::Id); + LogStep(3, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, "Read attribute: ScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::ScaledValue::Id); + LogStep(4, "DUT reads CurrentSaturation attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 5: { - LogStep(5, "Read attribute: MinScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MinScaledValue::Id); + LogStep(5, "DUT sends MoveSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id); } case 6: { - LogStep(6, "Read attribute: MaxScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MaxScaledValue::Id); + LogStep(6, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 7: { - LogStep(7, "Read attribute: ScaledTolerance"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::ScaledTolerance::Id); + LogStep(7, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 8: { - LogStep(8, "Read attribute: Scale"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::Scale::Id); + LogStep(8, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 9: { - LogStep(9, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(9, "DUT sends StepSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepSaturation::Id); } case 10: { - LogStep(10, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && PRS.C.AO-READ"), 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); + LogStep(10, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 11: { - LogStep(11, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_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_PSCFG_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 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read attribute: Sources"); - VerifyOrDo(!ShouldSkip("PSCFG.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PowerSourceConfiguration::Id, PowerSourceConfiguration::Attributes::Sources::Id); - } - case 1: { - LogStep(1, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 2: { - LogStep(2, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 3: { - LogStep(3, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_RH_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_RH_3_1_SimulatedSuite() : TestCommand("Test_TC_RH_3_1_Simulated", 7) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_RH_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 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read attribute MeasuredValue"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MeasuredValue::Id); - } - case 1: { - LogStep(1, "Read attribute MinMeasuredValue"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MinMeasuredValue::Id); - } - case 2: { - LogStep(2, "Read attribute MaxMeasuredValue"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::Id); - } - case 3: { - LogStep(3, "Read attribute Tolerance"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::Tolerance::Id); - } - case 4: { - LogStep(4, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_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_SWTCH_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 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)); - 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, "Read NumberOfPositions attribute"); - VerifyOrDo(!ShouldSkip("SWTCH.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Switch::Id, Switch::Attributes::NumberOfPositions::Id); - } - case 1: { - LogStep(1, "Read CurrentPosition attribute"); - VerifyOrDo(!ShouldSkip("SWTCH.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Switch::Id, Switch::Attributes::CurrentPosition::Id); - } - case 2: { - LogStep(2, "Read MultiPressMax attribute"); - VerifyOrDo(!ShouldSkip("SWTCH.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Switch::Id, Switch::Attributes::MultiPressMax::Id); - } - case 3: { - LogStep(3, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 4: { - LogStep(4, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && SWTCH.C.AO-READ"), 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 5: { - LogStep(5, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_5_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_WNCV_5_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_5_1_Simulated", 5) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_WNCV_5_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) - { - 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, "DUT reads the FeatureMap attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::FeatureMap::Id); - } - case 1: { - LogStep(1, "DUT reads the Type attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Type::Id); - } - case 2: { - LogStep(2, "DUT reads the EndProductType attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::EndProductType::Id); - } - case 3: { - LogStep(3, "DUT reads the Mode attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Mode::Id); - } - case 4: { - LogStep(4, "DUT reads the ConfigStatus attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_LCFG_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_LCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_LCFG_3_1_Simulated", 2) - { - 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) - { - 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, "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 1: { - LogStep(1, "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", 5) - { - 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) - { - 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, "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 1: { - LogStep(1, "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 2: { - LogStep(2, "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 3: { - LogStep(3, "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 4: { - LogStep(4, "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", 3) - { - 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) - { - 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, "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 1: { - LogStep(1, "DUT writes 2 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 2: { - LogStep(2, "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", 12) - { - 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) - { - 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, "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 1: { - LogStep(1, "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 2: { - LogStep(2, "DUT reads from the TH the (0x0002) OccupancySensorTypeBitmap attribute"); - VerifyOrDo(!ShouldSkip("OCC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); - } - case 3: { - LogStep(3, "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 4: { - LogStep(4, "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 5: { - LogStep(5, "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 6: { - LogStep(6, "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 7: { - LogStep(7, "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 8: { - LogStep(8, "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 9: { - LogStep(9, "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 10: { - LogStep(10, "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 11: { - LogStep(11, "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", 2) - { - 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) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "TH reads OccupancySensorType attribute from DUT"); - VerifyOrDo(!ShouldSkip("OCC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); - } - case 1: { - LogStep(1, "TH reads OccupancySensorTypeBitmap attribute from DUT"); - VerifyOrDo(!ShouldSkip("OCC.C.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", 2) - { - 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) - { - 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: Read attribute: LabelList"); - VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), UserLabel::Id, UserLabel::Attributes::LabelList::Id); - } - case 1: { - LogStep(1, "Step 2: write attribute: LabelList"); - VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), UserLabel::Id, UserLabel::Attributes::LabelList::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_FLABEL_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_FLABEL_3_1_SimulatedSuite() : TestCommand("Test_TC_FLABEL_3_1_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_FLABEL_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) - { - 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, "DUT reads LabelList from the TH"); - VerifyOrDo(!ShouldSkip("FLABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), FixedLabel::Id, FixedLabel::Attributes::LabelList::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_LTIME_1_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_LTIME_1_1_SimulatedSuite() : TestCommand("Test_TC_LTIME_1_1_Simulated", 5) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_LTIME_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) - { - 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, "DUT read (0xFFFD) ClusterRevision attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, - TimeFormatLocalization::Attributes::ClusterRevision::Id); - } - case 1: { - LogStep(1, "DUT read (0xFFFC) FeatureMap attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, TimeFormatLocalization::Attributes::FeatureMap::Id); - } - case 2: { - LogStep(2, "DUT read (0xFFFB) AttributeList attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, TimeFormatLocalization::Attributes::AttributeList::Id); - } - case 3: { - LogStep(3, "DUT read (0xFFF9) AcceptedCommandList attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, - TimeFormatLocalization::Attributes::AcceptedCommandList::Id); - } - case 4: { - LogStep(4, "DUT read (0xFFF8) GeneratedCommandList attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, - TimeFormatLocalization::Attributes::GeneratedCommandList::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_ILL_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_ILL_3_1_SimulatedSuite() : TestCommand("Test_TC_ILL_3_1_Simulated", 8) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_ILL_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 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read attribute: MeasuredValue"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, IlluminanceMeasurement::Attributes::MeasuredValue::Id); - } - case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, - IlluminanceMeasurement::Attributes::MinMeasuredValue::Id); - } - case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, - IlluminanceMeasurement::Attributes::MaxMeasuredValue::Id); - } - case 3: { - LogStep(3, "Read attribute: Tolerance"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, IlluminanceMeasurement::Attributes::Tolerance::Id); - } - case 4: { - LogStep(4, "Read attribute: LightSensorType"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, - IlluminanceMeasurement::Attributes::LightSensorType::Id); - } - case 5: { - LogStep(5, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 6: { - LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 7: { - LogStep(7, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGSW_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGSW_3_2_SimulatedSuite() : TestCommand("Test_TC_DGSW_3_2_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGSW_3_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) - { - 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, "DUT sends ResetWatermarks to TH"); - VerifyOrDo(!ShouldSkip("DGSW.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Commands::ResetWatermarks::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGETH_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGETH_3_2_SimulatedSuite() : TestCommand("Test_TC_DGETH_3_2_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGETH_3_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) - { - 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, "DUT sends ResetCounts to TH"); - VerifyOrDo(!ShouldSkip("DGETH.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Commands::ResetCounts::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGWIFI_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGWIFI_3_2_SimulatedSuite() : TestCommand("Test_TC_DGWIFI_3_2_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGWIFI_3_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) - { - 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, "DUT sends ResetCounts command to TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Commands::ResetCounts::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_6_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_WNCV_6_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_6_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_WNCV_6_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) - { - 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, "DUT sends UpOrOpen command to TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::UpOrOpen::Id); - } - case 1: { - LogStep(1, "DUT sends DownOrClose command to TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::DownOrClose::Id); - } - case 2: { - LogStep(2, "DUT sends StopMotion command to TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::StopMotion::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_7_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_WNCV_7_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_7_1_Simulated", 2) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_WNCV_7_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) - { - 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, "If (PA_LF & LF) DUT sends GoToLiftPercentage command with 50% to DUT"); - VerifyOrDo(!ShouldSkip("WNCV.C.C05.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToLiftPercentage::Id); - } - case 1: { - LogStep(1, "If (PA_TL & TL) DUT sends GoToTiltPercentage command with 50% to DUT"); - VerifyOrDo(!ShouldSkip("WNCV.C.C08.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToTiltPercentage::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_3_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_3_4_SimulatedSuite() : TestCommand("Test_TC_CC_3_4_Simulated", 16) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_3_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - chip::Optional mConfigTransitionTime; - - 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 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 14: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToHue command to TH an Hue with _TransitionTime 300"); - VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id); - } - case 2: { - LogStep(2, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 3: { - LogStep(3, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 4: { - LogStep(4, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 5: { - LogStep(5, "DUT sends MoveHue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id); - } - case 6: { - LogStep(6, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 7: { - LogStep(7, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 9: { - LogStep(9, "DUT sends StepHue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepHue::Id); - } - case 10: { - LogStep(10, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 11: { - LogStep(11, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 13: { - LogStep(13, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 14: { - LogStep(14, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 15: { - LogStep(15, "Over TransitionTime, DUT reads CurrentHue attribute from TH"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_4_5_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_4_5_SimulatedSuite() : TestCommand("Test_TC_CC_4_5_Simulated", 22) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_4_5_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - chip::Optional mConfigTransitionTime; - - 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 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToSaturation::Id); - } - case 2: { - LogStep(2, "DUT reads CurrentSaturation attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 3: { - LogStep(3, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 4: { - LogStep(4, "DUT reads CurrentSaturation attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 5: { - LogStep(5, "DUT sends MoveSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id); - } - case 6: { - LogStep(6, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 7: { - LogStep(7, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 9: { - LogStep(9, "DUT sends StepSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepSaturation::Id); - } - case 10: { - LogStep(10, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 11: { - LogStep(11, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 13: { - LogStep(13, "DUT sends MoveToHueAndSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHueAndSaturation::Id); - } - case 14: { - LogStep(14, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 15: { - LogStep(15, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 18: { - LogStep(18, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 19: { - LogStep(19, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 20: { - LogStep(20, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 21: { - LogStep(21, "Over TransitionTime, DUT reads CurrentSaturation attribute from TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_5_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_5_4_SimulatedSuite() : TestCommand("Test_TC_CC_5_4_Simulated", 25) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_5_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mTimeout; - chip::Optional mEndpoint; - chip::Optional mConfigTransitionTime; - - 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 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToColor command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColor::Id); - } - case 2: { - LogStep(2, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 3: { - LogStep(3, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 4: { - LogStep(4, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 5: { - LogStep(5, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 6: { - LogStep(6, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 7: { - LogStep(7, "DUT sends MoveColor command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColor::Id); - } - case 8: { - LogStep(8, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 9: { - LogStep(9, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 10: { - LogStep(10, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 11: { - LogStep(11, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 12: { - LogStep(12, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 13: { - LogStep(13, "DUT sends StepColor command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColor::Id); - } - case 14: { - LogStep(14, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 15: { - LogStep(15, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 18: { - LogStep(18, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 19: { - LogStep(19, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 20: { - LogStep(20, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 21: { - LogStep(21, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 22: { - LogStep(22, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 23: { - LogStep(23, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 24: { - LogStep( - 24, - "DUT reads CurrentY attribute from ConfiguredTime: type: int16u defaultValue: 30000TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_6_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_6_4_SimulatedSuite() : TestCommand("Test_TC_CC_6_4_Simulated", 18) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_6_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mTimeout; - chip::Optional mEndpoint; - chip::Optional mConfigTransitionTime; - - 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 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, - "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " - "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " - "attribute ColorTempPhysicalMinMireds from TH"); - VerifyOrDo(!ShouldSkip("CC.C.A400b && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); - } - case 2: { - LogStep(2, - "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " - "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " - "attribute ColorTempPhysicalMaxMireds from TH"); - VerifyOrDo(!ShouldSkip("CC.C.A400c && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); - } - case 3: { - LogStep(3, "DUT sends MoveToColorTemperature command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColorTemperature::Id); - } - case 4: { - LogStep(4, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 5: { - LogStep(5, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 6: { - LogStep(6, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 7: { - LogStep(7, "DUT sends MoveColorTemperatureMireds command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id); - } - case 8: { - LogStep(8, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 9: { - LogStep(9, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 11: { - LogStep(11, "DUT sends StepColorTemperature command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColorTemperature::Id); - } - case 12: { - LogStep(12, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 13: { - LogStep(13, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 15: { - LogStep(15, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_7_5_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_7_5_SimulatedSuite() : TestCommand("Test_TC_CC_7_5_Simulated", 23) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_7_5_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mTimeout; - chip::Optional mEndpoint; - chip::Optional mConfigTransitionTime; - - 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 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 21: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToEnhancedHue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id); - } - case 2: { - LogStep(2, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 3: { - LogStep(3, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 4: { - LogStep(4, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 5: { - LogStep(5, "DUT sends MoveEnhanced Hue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id); - } - case 6: { - LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 7: { - LogStep(7, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 9: { - LogStep(9, "DUT sends StepEnhanced command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id); - } - case 10: { - LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 11: { - LogStep(11, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 13: { - LogStep(13, "DUT sends EnhancedMoveToHueAndSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHueAndSaturation::Id); - } - case 14: { - LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 15: { - LogStep(15, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 18: { - LogStep(18, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 19: { - LogStep(19, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 20: { - LogStep(20, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 21: { - LogStep(21, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 22: { - LogStep(22, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_9_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_9_4_SimulatedSuite() : TestCommand("Test_TC_CC_9_4_Simulated", 19) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - } - - ~Test_TC_CC_9_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mTimeout; - chip::Optional mCluster; - chip::Optional mEndpoint; - - 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 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 17: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends ColorLoopSet command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C44.Tx && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id); - } - case 2: { - LogStep(2, "DUT reads ColorLoopActive attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4002 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); - } - case 3: { - LogStep(3, "DUT reads ColorLoopDirection attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4003 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); - } - case 4: { - LogStep(4, "DUT reads ColorLoopTime attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4004 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); - } - case 5: { - LogStep(5, "DUT reads ColorLoopStartEnhancedHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4005 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); - } - case 6: { - LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 7: { - LogStep(7, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 9: { - LogStep(9, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 11: { - LogStep(11, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 13: { - LogStep(13, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 15: { - LogStep(15, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 16: { - LogStep(16, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 17: { - LogStep(17, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 18: { - LogStep(18, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGTHREAD_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGTHREAD_3_2_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_2_Simulated", 17) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGTHREAD_3_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) - { - 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, "DUT reads TxTotalCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxTotalCount::Id); - } - case 1: { - LogStep(1, "DUT reads TxUnicastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxUnicastCount::Id); - } - case 2: { - LogStep(2, "DUT reads TxBroadcastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::Id); - } - case 3: { - LogStep(3, "DUT reads TxAckRequestedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::Id); - } - case 4: { - LogStep(4, "DUT reads TxAckedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxAckedCount::Id); - } - case 5: { - LogStep(5, "DUT reads TxNoAckRequestedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::Id); - } - case 6: { - LogStep(6, "DUT reads TxDataCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxDataCount::Id); - } - case 7: { - LogStep(7, "DUT reads TxDataPollCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxDataPollCount::Id); - } - case 8: { - LogStep(8, "DUT reads TxBeaconCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxBeaconCount::Id); - } - case 9: { - LogStep(9, "DUT reads TxBeaconRequestCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::Id); - } - case 10: { - LogStep(10, "DUT reads TxOtherCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxOtherCount::Id); - } - case 11: { - LogStep(11, "DUT reads TxRetryCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxRetryCount::Id); - } - case 12: { - LogStep(12, "DUT reads TxDirectMaxRetryExpiryCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::Id); - } - case 13: { - LogStep(13, "DUT reads TxIndirectMaxRetryExpiryCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::Id); - } - case 14: { - LogStep(14, "DUT reads TxErrCcaCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::Id); - } - case 15: { - LogStep(15, "DUT reads TxErrAbortCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::Id); - } - case 16: { - LogStep(16, "DUT reads TxErrBusyChannelCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGTHREAD_3_3_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGTHREAD_3_3_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_3_Simulated", 17) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGTHREAD_3_3_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) - { - 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, "DUT reads RxTotalCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxTotalCount::Id); - } - case 1: { - LogStep(1, "DUT reads RxUnicastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxUnicastCount::Id); - } - case 2: { - LogStep(2, "DUT reads RxBroadcastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::Id); - } - case 3: { - LogStep(3, "DUT reads RxDataCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDataCount::Id); - } - case 4: { - LogStep(4, "DUT reads RxDataPollCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDataPollCount::Id); - } - case 5: { - LogStep(5, "DUT reads RxBeaconCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxBeaconCount::Id); - } - case 6: { - LogStep(6, "DUT reads RxBeaconRequestCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::Id); - } - case 7: { - LogStep(7, "DUT reads RxOtherCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxOtherCount::Id); - } - case 8: { - LogStep(8, "DUT reads RxAddressFilteredCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::Id); - } - case 9: { - LogStep(9, "DUT reads RxDestAddrFilteredCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::Id); - } - case 10: { - LogStep(10, "DUT reads RxDuplicatedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::Id); - } - case 11: { - LogStep(11, "DUT reads RxErrNoFrameCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::Id); - } - case 12: { - LogStep(12, "DUT reads RxErrUnknownNeighborCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::Id); - } - case 13: { - LogStep(13, "DUT reads RxErrInvalidSrcAddrCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::Id); - } - case 14: { - LogStep(14, "DUT reads RxErrSecCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrSecCount::Id); - } - case 15: { - LogStep(15, "DUT reads RxErrFcsCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::Id); - } - case 16: { - LogStep(16, "DUT reads RxErrOtherCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGTHREAD_3_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGTHREAD_3_4_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_4_Simulated", 2) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGTHREAD_3_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) - { - 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, "DUT sends ResetCounts command to TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Commands::ResetCounts::Id); - } - case 1: { - LogStep(1, "DUT reads OverrunCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_LVL_2_3_SimulatedSuite : public TestCommand -{ -public: - Test_TC_LVL_2_3_SimulatedSuite() : TestCommand("Test_TC_LVL_2_3_Simulated", 24) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_LVL_2_3_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 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read mandatory attribute CurrentLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id); - } - case 1: { - LogStep(1, "Read mandatory attribute OnLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); - } - case 2: { - LogStep(2, "Read mandatory attribute Options"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); - } - case 3: { - LogStep(3, "Read optional attribute RemainingTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::RemainingTime::Id); - } - case 4: { - LogStep(4, "Read optional attribute StartUpCurrentLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); - } - case 5: { - LogStep(5, "Read optional attribute CurrentFrequency"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id); - } - case 6: { - LogStep(6, "Read optional attribute MinFrequency"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinFrequency::Id); - } - case 7: { - LogStep(7, "Read optional attribute MaxFrequency"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxFrequency::Id); - } - case 8: { - LogStep(8, "Read optional attribute MinLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id); - } - case 9: { - LogStep(9, "Read optional attribute MaxLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id); - } - case 10: { - LogStep(10, "Read optional attribute OnOffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); - } - case 11: { - LogStep(11, "Read optional attribute OnTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); - } - case 12: { - LogStep(12, "Read optional attribute OffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); + case 12: { + LogStep(12, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 13: { - LogStep(13, "Read optional attribute DefaultMoveRate"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); + LogStep(13, "DUT sends MoveToHueAndSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHueAndSaturation::Id); } case 14: { - LogStep(14, "Write mandatory attribute OnLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); + LogStep(14, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 15: { - LogStep(15, "Write mandatory attribute Options"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); + LogStep(15, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 16: { - LogStep(16, "Write optional attribute OnOffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); + LogStep(16, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 17: { - LogStep(17, "Write optional attribute OnTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); + LogStep(17, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 18: { - LogStep(18, "Write optional attribute OffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); + LogStep(18, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 19: { - LogStep(19, "Write optional attribute DefaultMoveRate"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); + LogStep(19, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); } case 20: { - LogStep(20, "Write optional attribute StartUpCurrentLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); - } - case 21: { - LogStep(21, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 22: { - LogStep(22, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(20, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - case 23: { - LogStep(23, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 21: { + LogStep(21, "Over TransitionTime, DUT reads CurrentSaturation attribute from TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_OO_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_5_4_SimulatedSuite : public TestCommand { public: - Test_TC_OO_3_1_SimulatedSuite() : TestCommand("Test_TC_OO_3_1_Simulated", 11) + Test_TC_CC_5_4_SimulatedSuite() : TestCommand("Test_TC_CC_5_4_Simulated", 25) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_OO_3_1_SimulatedSuite() {} + ~Test_TC_CC_5_4_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4164,15 +846,19 @@ class Test_TC_OO_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 8: + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 10: + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4192,176 +878,164 @@ class Test_TC_OO_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute OnOff"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute GlobalSceneControl"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::GlobalSceneControl::Id); + LogStep(1, "DUT sends MoveToColor command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColor::Id); } case 2: { - LogStep(2, "Read attribute OnTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id); + LogStep(2, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } case 3: { - LogStep(3, "Read attribute OffWaitTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id); + LogStep(3, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } case 4: { - LogStep(4, "Read attribute StartUpOnOff"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::StartUpOnOff::Id); + LogStep(4, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 5: { - LogStep(5, "Write attribute OnTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id); + LogStep(5, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } case 6: { - LogStep(6, "Write attribute OffWaitTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id); + LogStep(6, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } case 7: { - LogStep(7, "Write attribute StartUpOnOff"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::StartUpOnOff::Id); + LogStep(7, "DUT sends MoveColor command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColor::Id); } case 8: { - LogStep(8, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(8, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } case 9: { - LogStep(9, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(9, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } case 10: { - LogStep(10, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Wait for ConfigTransitionTime"); 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } + case 11: { + LogStep(11, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OO_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_OO_3_2_SimulatedSuite() : TestCommand("Test_TC_OO_3_2_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_OO_3_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) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + case 12: { + LogStep(12, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); + case 13: { + LogStep(13, "DUT sends StepColor command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColor::Id); } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "DUT issues an Off command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id); + case 14: { + LogStep(14, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } - case 1: { - LogStep(1, "DUT issues an On command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); + case 15: { + LogStep(15, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); + } + case 16: { + LogStep(16, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 17: { + LogStep(17, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); + } + case 18: { + LogStep(18, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); + } + case 19: { + LogStep(19, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); } - case 2: { - LogStep(2, "DUT issues an Toggle command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Toggle::Id); + case 20: { + LogStep(20, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } - case 3: { - LogStep(3, "DUT issues an OffWithEffect command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C40.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OffWithEffect::Id); + case 21: { + LogStep(21, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } - case 4: { - LogStep(4, "DUT issues an OnWithRecallGlobalScene command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithRecallGlobalScene::Id); + case 22: { + LogStep(22, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - case 5: { - LogStep(5, "DUT issues an OnWithTimedOff command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id); + case 23: { + LogStep(23, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); + } + case 24: { + LogStep( + 24, + "DUT reads CurrentY attribute from ConfiguredTime: type: int16u defaultValue: 30000TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_TSUIC_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_6_4_SimulatedSuite : public TestCommand { public: - Test_TC_TSUIC_3_1_SimulatedSuite() : TestCommand("Test_TC_TSUIC_3_1_Simulated", 9) + Test_TC_CC_6_4_SimulatedSuite() : TestCommand("Test_TC_CC_6_4_Simulated", 18) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_TSUIC_3_1_SimulatedSuite() {} + ~Test_TC_CC_6_4_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4375,15 +1049,19 @@ class Test_TC_TSUIC_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 6: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 7: + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 8: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4403,93 +1081,133 @@ class Test_TC_TSUIC_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "DUT reads TemperatureDisplayMode attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "DUT reads KeypadLockout attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::Id); + LogStep(1, + "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " + "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " + "attribute ColorTempPhysicalMinMireds from TH"); + VerifyOrDo(!ShouldSkip("CC.C.A400b && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); } case 2: { - LogStep(2, "DUT reads ScheduleProgrammingVisibility attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::Id); + LogStep(2, + "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " + "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " + "attribute ColorTempPhysicalMaxMireds from TH"); + VerifyOrDo(!ShouldSkip("CC.C.A400c && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); } case 3: { - LogStep(3, "DUT writes TemperatureDisplayMode attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::Id); + LogStep(3, "DUT sends MoveToColorTemperature command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColorTemperature::Id); } case 4: { - LogStep(4, "DUT writes KeypadLockout attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::Id); + LogStep(4, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); } case 5: { - LogStep(5, "DUT writes ScheduleProgrammingVisibility attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::Id); + LogStep(5, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 6: { - LogStep(6, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(6, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); } case 7: { - LogStep(7, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(7, "DUT sends MoveColorTemperatureMireds command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id); } case 8: { - LogStep(8, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 9: { + LogStep(9, "Wait for ConfigTransitionTime"); 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 11: { + LogStep(11, "DUT sends StepColorTemperature command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColorTemperature::Id); + } + case 12: { + LogStep(12, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 13: { + LogStep(13, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 15: { + LogStep(15, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); + } + case 16: { + LogStep(16, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 17: { + LogStep(17, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_PCC_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_7_5_SimulatedSuite : public TestCommand { public: - Test_TC_PCC_3_1_SimulatedSuite() : TestCommand("Test_TC_PCC_3_1_Simulated", 30) + Test_TC_CC_7_5_SimulatedSuite() : TestCommand("Test_TC_CC_7_5_Simulated", 23) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_PCC_3_1_SimulatedSuite() {} + ~Test_TC_CC_7_5_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4503,15 +1221,23 @@ class Test_TC_PCC_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 27: + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 28: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 29: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4531,225 +1257,152 @@ class Test_TC_PCC_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute MaxPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxPressure::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute MaxSpeed"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxSpeed::Id); + LogStep(1, "DUT sends MoveToEnhancedHue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id); } case 2: { - LogStep(2, "Read attribute MaxFlow"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxFlow::Id); + LogStep(2, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 3: { - LogStep(3, "Read attribute EffectiveOperationMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::EffectiveOperationMode::Id); + LogStep(3, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, "Read attribute EffectiveControlMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::EffectiveControlMode::Id); + LogStep(4, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 5: { - LogStep(5, "Read attribute Capacity"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::Capacity::Id); + LogStep(5, "DUT sends MoveEnhanced Hue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id); } case 6: { - LogStep(6, "Read attribute OperationMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::OperationMode::Id); + LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 7: { - LogStep(7, "Read attribute MinConstPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstPressure::Id); + LogStep(7, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 8: { - LogStep(8, "Read attribute MaxConstPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstPressure::Id); + LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 9: { - LogStep(9, "Read attribute MinCompPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinCompPressure::Id); + LogStep(9, "DUT sends StepEnhanced command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id); } case 10: { - LogStep(10, "Read attribute MaxCompPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxCompPressure::Id); + LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 11: { - LogStep(11, "Read attribute MinConstSpeed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstSpeed::Id); + LogStep(11, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 12: { - LogStep(12, "Read attribute MaxConstSpeed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstSpeed::Id); + LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 13: { - LogStep(13, "Read attribute MinConstFlow"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstFlow::Id); + LogStep(13, "DUT sends EnhancedMoveToHueAndSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHueAndSaturation::Id); } case 14: { - LogStep(14, "Read attribute MaxConstFlow"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstFlow::Id); + LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 15: { - LogStep(15, "Read attribute MinConstTemp"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstTemp::Id); + LogStep(15, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 16: { - LogStep(16, "Read attribute MaxConstTemp"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstTemp::Id); + LogStep(16, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 17: { - LogStep(17, "Read attribute PumpStatus"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::PumpStatus::Id); + LogStep(17, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 18: { - LogStep(18, "Read attribute Speed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::Speed::Id); + LogStep(18, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 19: { - LogStep(19, "Read attribute LifetimeRunningHours"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeRunningHours::Id); + LogStep(19, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); } case 20: { - LogStep(20, "Read attribute Power"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::Power::Id); + LogStep(20, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 21: { - LogStep(21, "Read attribute LifetimeEnergyConsumed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::Id); - } - case 22: { - LogStep(22, "Read attribute ControlMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::ControlMode::Id); - } - case 23: { - LogStep(23, "Write attribute LifetimeRunningHours"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeRunningHours::Id); - } - case 24: { - LogStep(24, "Write attribute LifetimeEnergyConsumed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::Id); - } - case 25: { - LogStep(25, "Write attribute OperationMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::OperationMode::Id); - } - case 26: { - LogStep(26, "Write attribute ControlMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::ControlMode::Id); - } - case 27: { - LogStep(27, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 28: { - LogStep(28, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(21, "Wait for ConfigTransitionTime"); 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - case 29: { - LogStep(29, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 22: { + LogStep(22, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_9_4_SimulatedSuite : public TestCommand { public: - Test_TC_TMP_3_1_SimulatedSuite() : TestCommand("Test_TC_TMP_3_1_Simulated", 7) + Test_TC_CC_9_4_SimulatedSuite() : TestCommand("Test_TC_CC_9_4_Simulated", 19) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TMP_3_1_SimulatedSuite() {} + ~Test_TC_CC_9_4_SimulatedSuite() {} private: chip::Optional mNodeId; + chip::Optional mTimeout; chip::Optional mCluster; chip::Optional mEndpoint; - chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4763,15 +1416,27 @@ class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 4: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 5: + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 6: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4791,67 +1456,126 @@ class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: MeasuredValue"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, TemperatureMeasurement::Attributes::MeasuredValue::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MinMeasuredValue::Id); + LogStep(1, "DUT sends ColorLoopSet command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C44.Tx && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id); } case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MaxMeasuredValue::Id); + LogStep(2, "DUT reads ColorLoopActive attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4002 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); } case 3: { - LogStep(3, "Read attribute: Tolerance"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, TemperatureMeasurement::Attributes::Tolerance::Id); + LogStep(3, "DUT reads ColorLoopDirection attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4003 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); } case 4: { - LogStep(4, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(4, "DUT reads ColorLoopTime attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4004 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); } case 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(5, "DUT reads ColorLoopStartEnhancedHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4005 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); } case 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 7: { + LogStep(7, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 8: { + LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 9: { + LogStep(9, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 11: { + LogStep(11, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 12: { + LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 13: { + LogStep(13, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 15: { + LogStep(15, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 16: { + LogStep(16, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 17: { + LogStep(17, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 18: { + LogStep(18, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_CC_2_2_SimulatedSuite : public TestCommand +class Test_TC_DGTHREAD_3_4_SimulatedSuite : public TestCommand { public: - Test_TC_CC_2_2_SimulatedSuite() : TestCommand("Test_TC_CC_2_2_Simulated", 52) + Test_TC_DGTHREAD_3_4_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_4_Simulated", 2) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -4859,7 +1583,7 @@ class Test_TC_CC_2_2_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_2_2_SimulatedSuite() {} + ~Test_TC_DGTHREAD_3_4_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -4889,280 +1613,31 @@ class Test_TC_CC_2_2_SimulatedSuite : public TestCommand } } - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "DUT reads from the TH the (0x0000) CurrentHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 1: { - LogStep(1, "DUT reads from the TH the (0x0001) CurrentSaturation attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 2: { - LogStep(2, "DUT reads from the TH the Optional (0x0002) RemainingTime attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::RemainingTime::Id); - } - case 3: { - LogStep(3, "DUT reads from the TH the (0x0003) CurrentX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 4: { - LogStep(4, "DUT reads from the TH the (0x0004) CurrentY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 5: { - LogStep(5, "DUT reads from the TH the Optional (0x0005) DriftCompensation attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::DriftCompensation::Id); - } - case 6: { - LogStep(6, "DUT reads from the TH the Optional (0x0006) CompensationText attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CompensationText::Id); - } - case 7: { - LogStep(7, "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 8: { - LogStep(8, "DUT reads from the TH the (0x0008) ColorMode attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id); - } - case 9: { - LogStep(9, "DUT reads from the TH the (0x000f) Options attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Options::Id); - } - case 10: { - LogStep(10, "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 11: { - LogStep(11, "DUT reads from the TH the (0x4001) EnhancedColorMode attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id); - } - case 12: { - LogStep(12, "DUT reads from the TH the (0x4002) ColorLoopActive attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); - } - case 13: { - LogStep(13, "DUT reads from the TH the (0x4003) ColorLoopDirection attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); - } - case 14: { - LogStep(14, "DUT reads from the TH the (0x4004) ColorLoopTime attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); - } - case 15: { - LogStep(15, "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); - } - case 16: { - LogStep(16, "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id); - } - case 17: { - LogStep(17, "DUT reads from the TH the (0x400a) ColorCapabilities attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorCapabilities::Id); - } - case 18: { - LogStep(18, "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); - } - case 19: { - LogStep(19, "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); - } - case 20: { - LogStep(20, "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CoupleColorTempToLevelMinMireds::Id); - } - case 21: { - LogStep(21, "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::StartUpColorTemperatureMireds::Id); - } - case 22: { - LogStep(22, "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::NumberOfPrimaries::Id); - } - case 23: { - LogStep(23, "DUT reads from the TH the (0x0011) Primary1X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1X::Id); + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "DUT sends ResetCounts command to TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Commands::ResetCounts::Id); } - case 24: { - LogStep(24, "DUT reads from the TH the (0x0012) Primary1Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Y::Id); - } - case 25: { - LogStep(25, "DUT reads from the TH the (0x0013) Primary1Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Intensity::Id); - } - case 26: { - LogStep(26, "DUT reads from the TH the (0x0015) Primary2X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2X::Id); - } - case 27: { - LogStep(27, "DUT reads from the TH the (0x0016) Primary2Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Y::Id); - } - case 28: { - LogStep(28, "DUT reads from the TH the (0x0017) Primary2Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Intensity::Id); - } - case 29: { - LogStep(29, "DUT reads from the TH the (0x0019) Primary3X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3X::Id); - } - case 30: { - LogStep(30, "DUT reads from the TH the (0x001a) Primary3Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Y::Id); - } - case 31: { - LogStep(31, "DUT reads from the TH the (0x001b) Primary3Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Intensity::Id); - } - case 32: { - LogStep(32, "DUT reads from the TH the (0x0020) Primary4X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4X::Id); - } - case 33: { - LogStep(33, "DUT reads from the TH the (0x0021) Primary4Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Y::Id); - } - case 34: { - LogStep(34, "DUT reads from the TH the (0x0022) Primary4Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Intensity::Id); - } - case 35: { - LogStep(35, "DUT reads from the TH the (0x0024) Primary5X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5X::Id); - } - case 36: { - LogStep(36, "DUT reads from the TH the (0x0025) Primary5Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Y::Id); - } - case 37: { - LogStep(37, "DUT reads from the TH the (0x0026) Primary5Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Intensity::Id); - } - case 38: { - LogStep(38, "DUT reads from the TH the (0x0028) Primary6X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6X::Id); - } - case 39: { - LogStep(39, "DUT reads from the TH the (0x0029) Primary6Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Y::Id); - } - case 40: { - LogStep(40, "DUT reads from the TH the (0x002a) Primary6Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Intensity::Id); - } - case 41: { - LogStep(41, "DUT reads from the TH the Optional (0x0030) WhitePointX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointX::Id); - } - case 42: { - LogStep(42, "DUT reads from the TH the Optional (0x0031) WhitePointY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointY::Id); - } - case 43: { - LogStep(43, "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRX::Id); - } - case 44: { - LogStep(44, "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRY::Id); - } - case 45: { - LogStep(45, "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRIntensity::Id); - } - case 46: { - LogStep(46, "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGX::Id); - } - case 47: { - LogStep(47, "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGY::Id); - } - case 48: { - LogStep(48, "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGIntensity::Id); - } - case 49: { - LogStep(49, "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBX::Id); - } - case 50: { - LogStep(50, "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBY::Id); - } - case 51: { - LogStep(51, "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBIntensity::Id); + case 1: { + LogStep(1, "DUT reads OverrunCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand +class Test_TC_LVL_2_3_SimulatedSuite : public TestCommand { public: - Test_TC_DGTHREAD_3_1_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_1_Simulated", 30) + Test_TC_LVL_2_3_SimulatedSuite() : TestCommand("Test_TC_LVL_2_3_Simulated", 24) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -5170,7 +1645,7 @@ class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_1_SimulatedSuite() {} + ~Test_TC_LVL_2_3_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -5190,7 +1665,15 @@ class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 0: + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -5210,190 +1693,133 @@ class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand 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); + LogStep(0, "Read mandatory attribute CurrentLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id); } case 1: { - LogStep(1, "DUT reads Channel attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Channel::Id); + LogStep(1, "Read mandatory attribute OnLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); } case 2: { - LogStep(2, "DUT reads RoutingRole attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RoutingRole::Id); + LogStep(2, "Read mandatory attribute Options"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); } case 3: { - LogStep(3, "DUT reads NetworkName attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::NetworkName::Id); + LogStep(3, "Read optional attribute RemainingTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::RemainingTime::Id); } case 4: { - LogStep(4, "DUT reads PanId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::PanId::Id); + LogStep(4, "Read optional attribute StartUpCurrentLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); } case 5: { - LogStep(5, "DUT reads ExtendedPanId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ExtendedPanId::Id); + LogStep(5, "Read optional attribute CurrentFrequency"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id); } case 6: { - LogStep(6, "DUT reads MeshLocalPrefix attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::Id); + LogStep(6, "Read optional attribute MinFrequency"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinFrequency::Id); } case 7: { - LogStep(7, "DUT reads OverrunCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); + LogStep(7, "Read optional attribute MaxFrequency"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxFrequency::Id); } case 8: { - LogStep(8, "DUT reads NeighborTable attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::NeighborTable::Id); + LogStep(8, "Read optional attribute MinLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id); } case 9: { - LogStep(9, "DUT reads RouteTable attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RouteTable::Id); + LogStep(9, "Read optional attribute MaxLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id); } case 10: { - LogStep(10, "DUT reads PartitionId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::PartitionId::Id); + LogStep(10, "Read optional attribute OnOffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); } case 11: { - LogStep(11, "DUT reads Weighting attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Weighting::Id); + LogStep(11, "Read optional attribute OnTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); } case 12: { - LogStep(12, "DUT reads DataVersion attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::DataVersion::Id); + LogStep(12, "Read optional attribute OffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); } case 13: { - LogStep(13, "DUT reads StableDataVersion attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::StableDataVersion::Id); + LogStep(13, "Read optional attribute DefaultMoveRate"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); } case 14: { - LogStep(14, "DUT reads LeaderRouterId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::LeaderRouterId::Id); + LogStep(14, "Write mandatory attribute OnLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); } case 15: { - LogStep(15, "DUT reads DetachedRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::Id); + LogStep(15, "Write mandatory attribute Options"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); } case 16: { - LogStep(16, "DUT reads ChildRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ChildRoleCount::Id); + LogStep(16, "Write optional attribute OnOffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); } case 17: { - LogStep(17, "DUT reads RouterRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RouterRoleCount::Id); + LogStep(17, "Write optional attribute OnTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); } case 18: { - LogStep(18, "DUT reads LeaderRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::Id); + LogStep(18, "Write optional attribute OffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); } case 19: { - LogStep(19, "DUT reads AttachAttemptCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::Id); + LogStep(19, "Write optional attribute DefaultMoveRate"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); } case 20: { - LogStep(20, "DUT reads PartitionIdChangeCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::Id); + LogStep(20, "Write optional attribute StartUpCurrentLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); } case 21: { - LogStep(21, "DUT reads BetterPartitionAttachAttemptCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::Id); + LogStep(21, + "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"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("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 22: { - LogStep(22, "DUT reads ParentChangeCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ParentChangeCount::Id); + LogStep(22, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("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 23: { - LogStep(23, "DUT reads ActiveTimestamp attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::Id); - } - case 24: { - LogStep(24, "DUT reads PendingTimestamp attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0039"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::PendingTimestamp::Id); - } - case 25: { - LogStep(25, "DUT reads Delay attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Delay::Id); - } - case 26: { - LogStep(26, "DUT reads SecurityPolicy attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::SecurityPolicy::Id); - } - case 27: { - LogStep(27, "DUT reads ChannelPage0Mask attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::Id); - } - case 28: { - LogStep(28, "DUT reads OperationalDatasetComponents attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::Id); - } - case 29: { - LogStep(29, "DUT reads ActiveNetworkFaults attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id); + LogStep(23, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("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); } } return CHIP_NO_ERROR; } }; -class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand +class Test_TC_OO_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DRLK_3_1_SimulatedSuite() : TestCommand("Test_TC_DRLK_3_1_Simulated", 37) + Test_TC_OO_3_2_SimulatedSuite() : TestCommand("Test_TC_OO_3_2_Simulated", 6) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -5401,7 +1827,7 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DRLK_3_1_SimulatedSuite() {} + ~Test_TC_OO_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -5421,10 +1847,6 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -5441,190 +1863,34 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand 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); + LogStep(0, "DUT issues an Off command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id); } case 1: { - LogStep(1, "DUT reads LockState attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockState::Id); + LogStep(1, "DUT issues an On command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 2: { - LogStep(2, "DUT reads LockType attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockType::Id); + LogStep(2, "DUT issues an Toggle command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Toggle::Id); } case 3: { - LogStep(3, "DUT reads ActuatorEnabled attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ActuatorEnabled::Id); + LogStep(3, "DUT issues an OffWithEffect command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C40.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OffWithEffect::Id); } case 4: { - LogStep(4, "DUT reads DoorState attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorState::Id); + LogStep(4, "DUT issues an OnWithRecallGlobalScene command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithRecallGlobalScene::Id); } case 5: { - LogStep(5, "DUT reads DoorOpenEvents attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorOpenEvents::Id); - } - case 6: { - LogStep(6, "DUT reads DoorClosedEvents attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorClosedEvents::Id); - } - case 7: { - LogStep(7, "DUT reads OpenPeriod attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OpenPeriod::Id); - } - case 8: { - LogStep(8, "DUT reads NumberOfTotalUsersSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfTotalUsersSupported::Id); - } - case 9: { - LogStep(9, "DUT reads NumberofPINUsersSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfPINUsersSupported::Id); - } - case 10: { - LogStep(10, "DUT reads NumberofRFIDUsersSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfRFIDUsersSupported::Id); - } - case 11: { - LogStep(11, "DUT reads NumberofWeekDaysSchedulesSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::Id); - } - case 12: { - LogStep(12, "DUT reads NumberofYearDaysSchedulesSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::Id); - } - case 13: { - LogStep(13, "DUT reads NumberofHolidaySchedulesSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfHolidaySchedulesSupported::Id); - } - case 14: { - LogStep(14, "DUT reads MaxPINCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxPINCodeLength::Id); - } - case 15: { - LogStep(15, "DUT reads MinPINCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinPINCodeLength::Id); - } - case 16: { - LogStep(16, "DUT reads MaxRFIDCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxRFIDCodeLength::Id); - } - case 17: { - LogStep(17, "DUT reads MinRFIDCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinRFIDCodeLength::Id); - } - case 18: { - LogStep(18, "DUT reads CredentialRulesSupport attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::CredentialRulesSupport::Id); - } - case 19: { - LogStep(19, "DUT reads Language attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::Language::Id); - } - case 20: { - LogStep(20, "DUT reads LEDSettings attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LEDSettings::Id); - } - case 21: { - LogStep(21, "DUT reads AutoRelockTime attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id); - } - case 22: { - LogStep(22, "DUT reads SoundVolume attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SoundVolume::Id); - } - case 23: { - LogStep(23, "DUT reads OperatingMode attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OperatingMode::Id); - } - case 24: { - LogStep(24, "DUT reads SupportedOperatingModes attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SupportedOperatingModes::Id); - } - case 25: { - LogStep(25, "DUT reads DefaultConfigurationRegister attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DefaultConfigurationRegister::Id); - } - case 26: { - LogStep(26, "DUT reads EnableLocalProgramming attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableLocalProgramming::Id); - } - case 27: { - LogStep(27, "DUT reads EnableOneTouchLocking attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableOneTouchLocking::Id); - } - case 28: { - LogStep(28, "DUT reads EnableInsideStatusLED attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableInsideStatusLED::Id); - } - case 29: { - LogStep(29, "DUT reads EnablePrivacyModeButton attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnablePrivacyModeButton::Id); - } - case 30: { - LogStep(30, "DUT reads LocalProgrammingFeatures attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LocalProgrammingFeatures::Id); - } - case 31: { - LogStep(31, "DUT reads WrongCodeEntryLimit attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::WrongCodeEntryLimit::Id); - } - case 32: { - LogStep(32, "DUT reads UserCodeTemporaryDisableTime attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::UserCodeTemporaryDisableTime::Id); - } - case 33: { - LogStep(33, "DUT reads SendPINOverTheAir attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SendPINOverTheAir::Id); - } - case 34: { - LogStep(34, "DUT reads RequirePINForRemoteOperation attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::RequirePINforRemoteOperation::Id); - } - case 35: { - LogStep(35, "DUT reads ExpiringUserTimeOut attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ExpiringUserTimeout::Id); - } - case 36: { - LogStep(36, "DUT reads NumberOfCredentialsSupportedPerUser attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::Id); + LogStep(5, "DUT issues an OnWithTimedOff command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id); } } return CHIP_NO_ERROR; @@ -5633,98 +1899,14 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand std::unique_ptr GetTestCommand(std::string testName) { - if (testName == "Test_TC_ACT_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_ACT_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_BOOL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_BOOL_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DESC_2_2_Simulated") - { - return std::unique_ptr(new Test_TC_DESC_2_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGETH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGETH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGSW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGSW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGWIFI_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGWIFI_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_FLW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_FLW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_G_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_G_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_I_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_I_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PRS_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PRS_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PSCFG_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PSCFG_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_RH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_RH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_SWTCH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_SWTCH_3_1_SimulatedSuite()); - } if (testName == "Test_TC_WNCV_5_1_Simulated") { 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()); - } - if (testName == "Test_TC_FLABEL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_FLABEL_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_LTIME_1_1_Simulated") - { - return std::unique_ptr(new Test_TC_LTIME_1_1_SimulatedSuite()); - } - if (testName == "Test_TC_ILL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_ILL_3_1_SimulatedSuite()); - } if (testName == "Test_TC_DGSW_3_2_Simulated") { return std::unique_ptr(new Test_TC_DGSW_3_2_SimulatedSuite()); @@ -5769,14 +1951,6 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_CC_9_4_SimulatedSuite()); } - if (testName == "Test_TC_DGTHREAD_3_2_Simulated") - { - return std::unique_ptr(new Test_TC_DGTHREAD_3_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGTHREAD_3_3_Simulated") - { - return std::unique_ptr(new Test_TC_DGTHREAD_3_3_SimulatedSuite()); - } if (testName == "Test_TC_DGTHREAD_3_4_Simulated") { return std::unique_ptr(new Test_TC_DGTHREAD_3_4_SimulatedSuite()); @@ -5785,38 +1959,10 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_LVL_2_3_SimulatedSuite()); } - if (testName == "Test_TC_OO_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_OO_3_1_SimulatedSuite()); - } if (testName == "Test_TC_OO_3_2_Simulated") { return std::unique_ptr(new Test_TC_OO_3_2_SimulatedSuite()); } - if (testName == "Test_TC_TSUIC_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_TSUIC_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PCC_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PCC_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_TMP_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_TMP_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_CC_2_2_Simulated") - { - return std::unique_ptr(new Test_TC_CC_2_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGTHREAD_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGTHREAD_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DRLK_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DRLK_3_1_SimulatedSuite()); - } return nullptr; } @@ -5824,29 +1970,8 @@ std::unique_ptr GetTestCommand(std::string testName) void PrintTestCommands() { ChipLogError(chipTool, "Supported commands:"); - ChipLogError(chipTool, "\t* Test_TC_ACT_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_BOOL_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DESC_2_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGETH_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGSW_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGWIFI_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_FLW_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_G_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_I_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PRS_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PSCFG_3_1_Simulated"); - 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"); - ChipLogError(chipTool, "\t* Test_TC_FLABEL_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_LTIME_1_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_ILL_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGSW_3_2_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGETH_3_2_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGWIFI_3_2_Simulated"); @@ -5858,16 +1983,7 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_CC_6_4_Simulated"); ChipLogError(chipTool, "\t* Test_TC_CC_7_5_Simulated"); ChipLogError(chipTool, "\t* Test_TC_CC_9_4_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_3_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_4_Simulated"); ChipLogError(chipTool, "\t* Test_TC_LVL_2_3_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_OO_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_OO_3_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_TSUIC_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PCC_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_TMP_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_CC_2_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DRLK_3_1_Simulated"); } diff --git a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h index c7509b6750793a..85b6ca3fc694ae 100644 --- a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h @@ -23,10 +23,10 @@ #include -class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand +class Test_TC_WNCV_5_1_SimulatedSuite : public TestCommand { public: - Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 6) + Test_TC_WNCV_5_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_5_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -34,7 +34,7 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_ACT_3_1_SimulatedSuite() {} + ~Test_TC_WNCV_5_1_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -54,18 +54,6 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - 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)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -82,64 +70,39 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: ActionList"); - VerifyOrDo(!ShouldSkip("ACT.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Actions::Id, Actions::Attributes::ActionList::Id); + LogStep(0, "DUT reads the FeatureMap attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::FeatureMap::Id); } case 1: { - LogStep(1, "Read attribute: EndpointLists"); - VerifyOrDo(!ShouldSkip("ACT.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Actions::Id, Actions::Attributes::EndpointLists::Id); + LogStep(1, "DUT reads the Type attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Type::Id); } case 2: { - LogStep(2, "Read attribute: SetupURL"); - VerifyOrDo(!ShouldSkip("ACT.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Actions::Id, Actions::Attributes::SetupURL::Id); + LogStep(2, "DUT reads the EndProductType attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::EndProductType::Id); } case 3: { - LogStep(3, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(3, "DUT reads the Mode attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Mode::Id); } case 4: { - LogStep(4, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && ACT.C.AO-READ"), 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 5: { - LogStep(5, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && ACT.C.AO-WRITE"), 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); + LogStep(4, "DUT reads the ConfigStatus attribute from TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand +class Test_TC_OCC_2_4_SimulatedSuite : public TestCommand { public: - Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 4) + Test_TC_OCC_2_4_SimulatedSuite() : TestCommand("Test_TC_OCC_2_4_Simulated", 2) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -147,7 +110,7 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_BOOL_3_1_SimulatedSuite() {} + ~Test_TC_OCC_2_4_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -167,18 +130,6 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -195,54 +146,24 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: StateValue"); - VerifyOrDo(!ShouldSkip("BOOL.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), BooleanState::Id, BooleanState::Attributes::StateValue::Id); + LogStep(0, "TH reads OccupancySensorType attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); } case 1: { - LogStep(1, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 2: { - LogStep(2, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 3: { - LogStep(3, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(1, "TH reads OccupancySensorTypeBitmap attribute from DUT"); + VerifyOrDo(!ShouldSkip("OCC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand +class Test_TC_DGSW_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DESC_2_2_SimulatedSuite() : TestCommand("Test_TC_DESC_2_2_Simulated", 5) + Test_TC_DGSW_3_2_SimulatedSuite() : TestCommand("Test_TC_DGSW_3_2_Simulated", 1) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -250,7 +171,7 @@ class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DESC_2_2_SimulatedSuite() {} + ~Test_TC_DGSW_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -270,10 +191,6 @@ class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -290,44 +207,19 @@ class Test_TC_DESC_2_2_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "DUT reads DeviceTypeList from TH."); - VerifyOrDo(!ShouldSkip("DESC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::DeviceTypeList::Id); - } - case 1: { - LogStep(1, "DUT reads ServerList from the TH"); - VerifyOrDo(!ShouldSkip("DESC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::ServerList::Id); - } - case 2: { - LogStep(2, "DUT reads ClientList attribute from the TH"); - VerifyOrDo(!ShouldSkip("DESC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::ClientList::Id); - } - case 3: { - LogStep(3, "DUT reads PartsList attribute from the TH"); - VerifyOrDo(!ShouldSkip("DESC.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::PartsList::Id); - } - case 4: { - LogStep(4, "DUT reads TagList from the TH"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("Please enter 'y' for successgarbage: not in length on purpose", 28); - value.expectedValue.Emplace(); - value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); - return UserPrompt(kIdentityAlpha, value); + LogStep(0, "DUT sends ResetWatermarks to TH"); + VerifyOrDo(!ShouldSkip("DGSW.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Commands::ResetWatermarks::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGETH_3_1_SimulatedSuite : public TestCommand +class Test_TC_DGETH_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DGETH_3_1_SimulatedSuite() : TestCommand("Test_TC_DGETH_3_1_Simulated", 9) + Test_TC_DGETH_3_2_SimulatedSuite() : TestCommand("Test_TC_DGETH_3_2_Simulated", 1) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -335,7 +227,7 @@ class Test_TC_DGETH_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGETH_3_1_SimulatedSuite() {} + ~Test_TC_DGETH_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -371,68 +263,20 @@ class Test_TC_DGETH_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: PHYRate"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::PHYRate::Id); - } - case 1: { - LogStep(1, "Read attribute: FullDuplex"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::FullDuplex::Id); - } - case 2: { - LogStep(2, "Read attribute: PacketRxCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::PacketRxCount::Id); - } - case 3: { - LogStep(3, "Read attribute: PacketTxCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::PacketTxCount::Id); - } - case 4: { - LogStep(4, "Read attribute: TxErrCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::TxErrCount::Id); - } - case 5: { - LogStep(5, "Read attribute: CollisionCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::CollisionCount::Id); - } - case 6: { - LogStep(6, "Read attribute: OverrunCount"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::OverrunCount::Id); - } - case 7: { - LogStep(7, "Read attribute: CarrierDetect"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::CarrierDetect::Id); - } - case 8: { - LogStep(8, "Read attribute: TimeSinceReset"); - VerifyOrDo(!ShouldSkip("DGETH.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Attributes::TimeSinceReset::Id); + LogStep(0, "DUT sends ResetCounts to TH"); + VerifyOrDo(!ShouldSkip("DGETH.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), EthernetNetworkDiagnostics::Id, + EthernetNetworkDiagnostics::Commands::ResetCounts::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGSW_3_1_SimulatedSuite : public TestCommand +class Test_TC_DGWIFI_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DGSW_3_1_SimulatedSuite() : TestCommand("Test_TC_DGSW_3_1_Simulated", 4) + Test_TC_DGWIFI_3_2_SimulatedSuite() : TestCommand("Test_TC_DGWIFI_3_2_Simulated", 1) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -440,7 +284,7 @@ class Test_TC_DGSW_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGSW_3_1_SimulatedSuite() {} + ~Test_TC_DGWIFI_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -476,35 +320,19 @@ class Test_TC_DGSW_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: ThreadMetrics"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::ThreadMetrics::Id); - } - case 1: { - LogStep(1, "Read attribute: CurrentHeapFree"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::CurrentHeapFree::Id); - } - case 2: { - LogStep(2, "Read attribute: CurrentHeapUsed"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Attributes::CurrentHeapUsed::Id); - } - case 3: { - LogStep(3, "Read attribute: CurrentHeapHighWatermark"); - VerifyOrDo(!ShouldSkip("DGSW.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), SoftwareDiagnostics::Id, - SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::Id); + LogStep(0, "DUT sends ResetCounts command to TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Commands::ResetCounts::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand +class Test_TC_WNCV_6_1_SimulatedSuite : public TestCommand { public: - Test_TC_DGWIFI_3_1_SimulatedSuite() : TestCommand("Test_TC_DGWIFI_3_1_Simulated", 13) + Test_TC_WNCV_6_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_6_1_Simulated", 3) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -512,7 +340,7 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGWIFI_3_1_SimulatedSuite() {} + ~Test_TC_WNCV_6_1_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -548,85 +376,29 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: BSSID"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::Bssid::Id); + LogStep(0, "DUT sends UpOrOpen command to TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::UpOrOpen::Id); } case 1: { - LogStep(1, "Read attribute: SecurityType"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::SecurityType::Id); + LogStep(1, "DUT sends DownOrClose command to TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::DownOrClose::Id); } case 2: { - LogStep(2, "Read attribute: WiFiVersion"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::WiFiVersion::Id); - } - case 3: { - LogStep(3, "Read attribute: ChannelNumber"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::ChannelNumber::Id); - } - case 4: { - LogStep(4, "Read attribute: RSSI"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::Rssi::Id); - } - case 5: { - LogStep(5, "Read attribute: BeaconLostCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::BeaconLostCount::Id); - } - case 6: { - LogStep(6, "Read attribute: BeaconRxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::BeaconRxCount::Id); - } - case 7: { - LogStep(7, "Read attribute: PacketMulticastRxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::Id); - } - case 8: { - LogStep(8, "Read attribute: PacketMulticastTxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::Id); - } - case 9: { - LogStep(9, "Read attribute: PacketUnicastRxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::Id); - } - case 10: { - LogStep(10, "Read attribute: PacketUnicastTxCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::Id); - } - case 11: { - LogStep(11, "Read attribute: CurrentMaxRate"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, - WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::Id); - } - case 12: { - LogStep(12, "Read attribute: OverrunCount"); - VerifyOrDo(!ShouldSkip("DGWIFI.C.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Attributes::OverrunCount::Id); + LogStep(2, "DUT sends StopMotion command to TH"); + VerifyOrDo(!ShouldSkip("WNCV.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::StopMotion::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand +class Test_TC_WNCV_7_1_SimulatedSuite : public TestCommand { public: - Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 7) + Test_TC_WNCV_7_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_7_1_Simulated", 2) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -634,7 +406,7 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_FLW_3_1_SimulatedSuite() {} + ~Test_TC_WNCV_7_1_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -654,18 +426,6 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -682,83 +442,40 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("FLW.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::MeasuredValue::Id); + LogStep(0, "If (PA_LF & LF) DUT sends GoToLiftPercentage command with 50% to DUT"); + VerifyOrDo(!ShouldSkip("WNCV.C.C05.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToLiftPercentage::Id); } case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("FLW.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::MinMeasuredValue::Id); - } - case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("FLW.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::MaxMeasuredValue::Id); - } - case 3: { - LogStep(3, "Read attribute: Tolerance"); - VerifyOrDo(!ShouldSkip("FLW.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), FlowMeasurement::Id, FlowMeasurement::Attributes::Tolerance::Id); - } - case 4: { - LogStep(4, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && FLW.C.AO-READ"), 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 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(1, "If (PA_TL & TL) DUT sends GoToTiltPercentage command with 50% to DUT"); + VerifyOrDo(!ShouldSkip("WNCV.C.C08.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToTiltPercentage::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_G_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_3_4_SimulatedSuite : public TestCommand { public: - Test_TC_G_3_1_SimulatedSuite() : TestCommand("Test_TC_G_3_1_Simulated", 1) + Test_TC_CC_3_4_SimulatedSuite() : TestCommand("Test_TC_CC_3_4_Simulated", 16) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_G_3_1_SimulatedSuite() {} + ~Test_TC_CC_3_4_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -772,71 +489,19 @@ class Test_TC_G_3_1_SimulatedSuite : public TestCommand 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) - { - case 0: { - LogStep(0, "DUT reads NameSupport attribute value from TH"); - VerifyOrDo(!ShouldSkip("G.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Groups::Id, Groups::Attributes::NameSupport::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_I_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 7) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_I_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 4: + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 5: + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 6: + case 14: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -856,83 +521,121 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: IdentifyTime"); - VerifyOrDo(!ShouldSkip("I.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyTime::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute: identifytype"); - VerifyOrDo(!ShouldSkip("I.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyType::Id); + LogStep(1, "DUT sends MoveToHue command to TH an Hue with _TransitionTime 300"); + VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id); } case 2: { - LogStep(2, "write attribute: IdentifyTime"); - VerifyOrDo(!ShouldSkip("I.C.AM-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyTime::Id); + LogStep(2, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 3: { - LogStep(3, "Readback attribute: IdentifyTime"); - VerifyOrDo(!ShouldSkip("I.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), Identify::Id, Identify::Attributes::IdentifyTime::Id); + LogStep(3, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(4, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(5, "DUT sends MoveHue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id); } case 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 7: { + LogStep(7, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 8: { + LogStep(8, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 9: { + LogStep(9, "DUT sends StepHue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepHue::Id); + } + case 10: { + LogStep(10, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 11: { + LogStep(11, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 12: { + LogStep(12, "DUT reads CurrentHue attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); + } + case 13: { + LogStep(13, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); + } + case 14: { + LogStep(14, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 15: { + LogStep(15, "Over TransitionTime, DUT reads CurrentHue attribute from TH"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_4_5_SimulatedSuite : public TestCommand { public: - Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 12) + Test_TC_CC_4_5_SimulatedSuite() : TestCommand("Test_TC_CC_4_5_Simulated", 22) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_PRS_3_1_SimulatedSuite() {} + ~Test_TC_CC_4_5_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -946,11 +649,11 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 9: + case 3: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 10: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -958,6 +661,14 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 20: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -974,3183 +685,154 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: MeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MeasuredValue::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MinMeasuredValue::Id); + LogStep(1, "DUT sends MoveToSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToSaturation::Id); } case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MaxMeasuredValue::Id); + LogStep(2, "DUT reads CurrentSaturation attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 3: { - LogStep(3, "Read attribute: Tolerance"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::Tolerance::Id); + LogStep(3, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, "Read attribute: ScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::ScaledValue::Id); + LogStep(4, "DUT reads CurrentSaturation attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 5: { - LogStep(5, "Read attribute: MinScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MinScaledValue::Id); + LogStep(5, "DUT sends MoveSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id); } case 6: { - LogStep(6, "Read attribute: MaxScaledValue"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::MaxScaledValue::Id); + LogStep(6, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 7: { - LogStep(7, "Read attribute: ScaledTolerance"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::ScaledTolerance::Id); + LogStep(7, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 8: { - LogStep(8, "Read attribute: Scale"); - VerifyOrDo(!ShouldSkip("PRS.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PressureMeasurement::Id, PressureMeasurement::Attributes::Scale::Id); + LogStep(8, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 9: { - LogStep(9, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(9, "DUT sends StepSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepSaturation::Id); } case 10: { - LogStep(10, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && PRS.C.AO-READ"), 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); + LogStep(10, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 11: { - LogStep(11, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(11, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_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_PSCFG_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 1: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 2: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read attribute: Sources"); - VerifyOrDo(!ShouldSkip("PSCFG.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PowerSourceConfiguration::Id, PowerSourceConfiguration::Attributes::Sources::Id); - } - case 1: { - LogStep(1, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 2: { - LogStep(2, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 3: { - LogStep(3, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_RH_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_RH_3_1_SimulatedSuite() : TestCommand("Test_TC_RH_3_1_Simulated", 7) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_RH_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 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read attribute MeasuredValue"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MeasuredValue::Id); - } - case 1: { - LogStep(1, "Read attribute MinMeasuredValue"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MinMeasuredValue::Id); - } - case 2: { - LogStep(2, "Read attribute MaxMeasuredValue"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::Id); - } - case 3: { - LogStep(3, "Read attribute Tolerance"); - return WaitAttribute(GetEndpoint(0), RelativeHumidityMeasurement::Id, - RelativeHumidityMeasurement::Attributes::Tolerance::Id); - } - case 4: { - LogStep(4, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_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_SWTCH_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 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)); - 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, "Read NumberOfPositions attribute"); - VerifyOrDo(!ShouldSkip("SWTCH.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Switch::Id, Switch::Attributes::NumberOfPositions::Id); - } - case 1: { - LogStep(1, "Read CurrentPosition attribute"); - VerifyOrDo(!ShouldSkip("SWTCH.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Switch::Id, Switch::Attributes::CurrentPosition::Id); - } - case 2: { - LogStep(2, "Read MultiPressMax attribute"); - VerifyOrDo(!ShouldSkip("SWTCH.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), Switch::Id, Switch::Attributes::MultiPressMax::Id); - } - case 3: { - LogStep(3, - "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."); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 4: { - LogStep(4, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP && SWTCH.C.AO-READ"), 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 5: { - LogStep(5, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_5_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_WNCV_5_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_5_1_Simulated", 5) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_WNCV_5_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) - { - 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, "DUT reads the FeatureMap attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::FeatureMap::Id); - } - case 1: { - LogStep(1, "DUT reads the Type attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Type::Id); - } - case 2: { - LogStep(2, "DUT reads the EndProductType attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::EndProductType::Id); - } - case 3: { - LogStep(3, "DUT reads the Mode attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::Mode::Id); - } - case 4: { - LogStep(4, "DUT reads the ConfigStatus attribute from TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), WindowCovering::Id, WindowCovering::Attributes::ConfigStatus::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_LCFG_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_LCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_LCFG_3_1_Simulated", 2) - { - 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) - { - 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, "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 1: { - LogStep(1, "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", 5) - { - 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) - { - 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, "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 1: { - LogStep(1, "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 2: { - LogStep(2, "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 3: { - LogStep(3, "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 4: { - LogStep(4, "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", 3) - { - 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) - { - 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, "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 1: { - LogStep(1, "DUT writes 2 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 2: { - LogStep(2, "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", 12) - { - 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) - { - 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, "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 1: { - LogStep(1, "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 2: { - LogStep(2, "DUT reads from the TH the (0x0002) OccupancySensorTypeBitmap attribute"); - VerifyOrDo(!ShouldSkip("OCC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorTypeBitmap::Id); - } - case 3: { - LogStep(3, "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 4: { - LogStep(4, "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 5: { - LogStep(5, "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 6: { - LogStep(6, "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 7: { - LogStep(7, "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 8: { - LogStep(8, "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 9: { - LogStep(9, "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 10: { - LogStep(10, "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 11: { - LogStep(11, "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", 2) - { - 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) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); - } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); - } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "TH reads OccupancySensorType attribute from DUT"); - VerifyOrDo(!ShouldSkip("OCC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), OccupancySensing::Id, OccupancySensing::Attributes::OccupancySensorType::Id); - } - case 1: { - LogStep(1, "TH reads OccupancySensorTypeBitmap attribute from DUT"); - VerifyOrDo(!ShouldSkip("OCC.C.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", 2) - { - 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) - { - 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: Read attribute: LabelList"); - VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), UserLabel::Id, UserLabel::Attributes::LabelList::Id); - } - case 1: { - LogStep(1, "Step 2: write attribute: LabelList"); - VerifyOrDo(!ShouldSkip("ULABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), UserLabel::Id, UserLabel::Attributes::LabelList::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_FLABEL_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_FLABEL_3_1_SimulatedSuite() : TestCommand("Test_TC_FLABEL_3_1_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_FLABEL_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) - { - 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, "DUT reads LabelList from the TH"); - VerifyOrDo(!ShouldSkip("FLABEL.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), FixedLabel::Id, FixedLabel::Attributes::LabelList::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_LTIME_1_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_LTIME_1_1_SimulatedSuite() : TestCommand("Test_TC_LTIME_1_1_Simulated", 5) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_LTIME_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) - { - 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, "DUT read (0xFFFD) ClusterRevision attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afffd"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, - TimeFormatLocalization::Attributes::ClusterRevision::Id); - } - case 1: { - LogStep(1, "DUT read (0xFFFC) FeatureMap attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afffc"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, TimeFormatLocalization::Attributes::FeatureMap::Id); - } - case 2: { - LogStep(2, "DUT read (0xFFFB) AttributeList attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afffb"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, TimeFormatLocalization::Attributes::AttributeList::Id); - } - case 3: { - LogStep(3, "DUT read (0xFFF9) AcceptedCommandList attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afff9"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, - TimeFormatLocalization::Attributes::AcceptedCommandList::Id); - } - case 4: { - LogStep(4, "DUT read (0xFFF8) GeneratedCommandList attribute"); - VerifyOrDo(!ShouldSkip("LTIME.C.Afff8"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), TimeFormatLocalization::Id, - TimeFormatLocalization::Attributes::GeneratedCommandList::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_ILL_3_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_ILL_3_1_SimulatedSuite() : TestCommand("Test_TC_ILL_3_1_Simulated", 8) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_ILL_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 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 6: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read attribute: MeasuredValue"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, IlluminanceMeasurement::Attributes::MeasuredValue::Id); - } - case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, - IlluminanceMeasurement::Attributes::MinMeasuredValue::Id); - } - case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, - IlluminanceMeasurement::Attributes::MaxMeasuredValue::Id); - } - case 3: { - LogStep(3, "Read attribute: Tolerance"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, IlluminanceMeasurement::Attributes::Tolerance::Id); - } - case 4: { - LogStep(4, "Read attribute: LightSensorType"); - return WaitAttribute(GetEndpoint(0), IlluminanceMeasurement::Id, - IlluminanceMeasurement::Attributes::LightSensorType::Id); - } - case 5: { - LogStep(5, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 6: { - LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 7: { - LogStep(7, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGSW_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGSW_3_2_SimulatedSuite() : TestCommand("Test_TC_DGSW_3_2_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGSW_3_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) - { - 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, "DUT sends ResetWatermarks to TH"); - VerifyOrDo(!ShouldSkip("DGSW.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), SoftwareDiagnostics::Id, SoftwareDiagnostics::Commands::ResetWatermarks::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGETH_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGETH_3_2_SimulatedSuite() : TestCommand("Test_TC_DGETH_3_2_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGETH_3_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) - { - 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, "DUT sends ResetCounts to TH"); - VerifyOrDo(!ShouldSkip("DGETH.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), EthernetNetworkDiagnostics::Id, - EthernetNetworkDiagnostics::Commands::ResetCounts::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGWIFI_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGWIFI_3_2_SimulatedSuite() : TestCommand("Test_TC_DGWIFI_3_2_Simulated", 1) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGWIFI_3_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) - { - 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, "DUT sends ResetCounts command to TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WiFiNetworkDiagnostics::Id, WiFiNetworkDiagnostics::Commands::ResetCounts::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_6_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_WNCV_6_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_6_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_WNCV_6_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) - { - 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, "DUT sends UpOrOpen command to TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::UpOrOpen::Id); - } - case 1: { - LogStep(1, "DUT sends DownOrClose command to TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::DownOrClose::Id); - } - case 2: { - LogStep(2, "DUT sends StopMotion command to TH"); - VerifyOrDo(!ShouldSkip("WNCV.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::StopMotion::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_WNCV_7_1_SimulatedSuite : public TestCommand -{ -public: - Test_TC_WNCV_7_1_SimulatedSuite() : TestCommand("Test_TC_WNCV_7_1_Simulated", 2) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_WNCV_7_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) - { - 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, "If (PA_LF & LF) DUT sends GoToLiftPercentage command with 50% to DUT"); - VerifyOrDo(!ShouldSkip("WNCV.C.C05.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToLiftPercentage::Id); - } - case 1: { - LogStep(1, "If (PA_TL & TL) DUT sends GoToTiltPercentage command with 50% to DUT"); - VerifyOrDo(!ShouldSkip("WNCV.C.C08.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), WindowCovering::Id, WindowCovering::Commands::GoToTiltPercentage::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_3_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_3_4_SimulatedSuite() : TestCommand("Test_TC_CC_3_4_Simulated", 16) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_3_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - chip::Optional mConfigTransitionTime; - - 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 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 14: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToHue command to TH an Hue with _TransitionTime 300"); - VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHue::Id); - } - case 2: { - LogStep(2, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 3: { - LogStep(3, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 4: { - LogStep(4, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C00.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 5: { - LogStep(5, "DUT sends MoveHue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveHue::Id); - } - case 6: { - LogStep(6, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 7: { - LogStep(7, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C01.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 9: { - LogStep(9, "DUT sends StepHue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepHue::Id); - } - case 10: { - LogStep(10, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 11: { - LogStep(11, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads CurrentHue attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C02.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 13: { - LogStep(13, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 14: { - LogStep(14, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 15: { - LogStep(15, "Over TransitionTime, DUT reads CurrentHue attribute from TH"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_4_5_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_4_5_SimulatedSuite() : TestCommand("Test_TC_CC_4_5_Simulated", 22) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_4_5_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mEndpoint; - chip::Optional mTimeout; - chip::Optional mConfigTransitionTime; - - 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 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 20: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToSaturation::Id); - } - case 2: { - LogStep(2, "DUT reads CurrentSaturation attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 3: { - LogStep(3, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 4: { - LogStep(4, "DUT reads CurrentSaturation attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C03.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 5: { - LogStep(5, "DUT sends MoveSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveSaturation::Id); - } - case 6: { - LogStep(6, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 7: { - LogStep(7, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C04.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 9: { - LogStep(9, "DUT sends StepSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepSaturation::Id); - } - case 10: { - LogStep(10, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 11: { - LogStep(11, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 13: { - LogStep(13, "DUT sends MoveToHueAndSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHueAndSaturation::Id); - } - case 14: { - LogStep(14, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 15: { - LogStep(15, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads CurrentSaturation attribute from TH several times."); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 18: { - LogStep(18, "DUT reads CurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 19: { - LogStep(19, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 20: { - LogStep(20, "Wait for ConfigTransitionTime"); - VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 21: { - LogStep(21, "Over TransitionTime, DUT reads CurrentSaturation attribute from TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_5_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_5_4_SimulatedSuite() : TestCommand("Test_TC_CC_5_4_Simulated", 25) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_5_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mTimeout; - chip::Optional mEndpoint; - chip::Optional mConfigTransitionTime; - - 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 4: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 10: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToColor command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColor::Id); - } - case 2: { - LogStep(2, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 3: { - LogStep(3, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 4: { - LogStep(4, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 5: { - LogStep(5, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 6: { - LogStep(6, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 7: { - LogStep(7, "DUT sends MoveColor command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColor::Id); - } - case 8: { - LogStep(8, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 9: { - LogStep(9, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 10: { - LogStep(10, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 11: { - LogStep(11, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 12: { - LogStep(12, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 13: { - LogStep(13, "DUT sends StepColor command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColor::Id); - } - case 14: { - LogStep(14, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 15: { - LogStep(15, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 18: { - LogStep(18, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 19: { - LogStep(19, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 20: { - LogStep(20, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 21: { - LogStep(21, "DUT reads CurrentY attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 22: { - LogStep(22, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 23: { - LogStep(23, "DUT reads CurrentX attribute from TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 24: { - LogStep( - 24, - "DUT reads CurrentY attribute from ConfiguredTime: type: int16u defaultValue: 30000TH(potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_6_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_6_4_SimulatedSuite() : TestCommand("Test_TC_CC_6_4_Simulated", 18) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_6_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mTimeout; - chip::Optional mEndpoint; - chip::Optional mConfigTransitionTime; - - 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 5: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, - "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " - "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " - "attribute ColorTempPhysicalMinMireds from TH"); - VerifyOrDo(!ShouldSkip("CC.C.A400b && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); - } - case 2: { - LogStep(2, - "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " - "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " - "attribute ColorTempPhysicalMaxMireds from TH"); - VerifyOrDo(!ShouldSkip("CC.C.A400c && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); - } - case 3: { - LogStep(3, "DUT sends MoveToColorTemperature command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColorTemperature::Id); - } - case 4: { - LogStep(4, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 5: { - LogStep(5, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 6: { - LogStep(6, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 7: { - LogStep(7, "DUT sends MoveColorTemperatureMireds command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id); - } - case 8: { - LogStep(8, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 9: { - LogStep(9, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 11: { - LogStep(11, "DUT sends StepColorTemperature command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColorTemperature::Id); - } - case 12: { - LogStep(12, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 13: { - LogStep(13, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 15: { - LogStep(15, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_7_5_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_7_5_SimulatedSuite() : TestCommand("Test_TC_CC_7_5_Simulated", 23) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); - } - - ~Test_TC_CC_7_5_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mCluster; - chip::Optional mTimeout; - chip::Optional mEndpoint; - chip::Optional mConfigTransitionTime; - - 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 3: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 16: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 21: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends MoveToEnhancedHue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id); - } - case 2: { - LogStep(2, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 3: { - LogStep(3, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 4: { - LogStep(4, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 5: { - LogStep(5, "DUT sends MoveEnhanced Hue command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id); - } - case 6: { - LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 7: { - LogStep(7, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 9: { - LogStep(9, "DUT sends StepEnhanced command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id); - } - case 10: { - LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 11: { - LogStep(11, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 13: { - LogStep(13, "DUT sends EnhancedMoveToHueAndSaturation command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHueAndSaturation::Id); - } - case 14: { - LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 15: { - LogStep(15, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 16: { - LogStep(16, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 17: { - LogStep(17, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 18: { - LogStep(18, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 19: { - LogStep(19, "DUT sends StopMoveStep command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); - } - case 20: { - LogStep(20, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 21: { - LogStep(21, "Wait for ConfigTransitionTime"); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 22: { - LogStep(22, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); - VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_CC_9_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_CC_9_4_SimulatedSuite() : TestCommand("Test_TC_CC_9_4_Simulated", 19) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - } - - ~Test_TC_CC_9_4_SimulatedSuite() {} - -private: - chip::Optional mNodeId; - chip::Optional mTimeout; - chip::Optional mCluster; - chip::Optional mEndpoint; - - 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 7: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 9: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 11: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 13: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 15: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 17: - 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, "PreCondition: Set TH OnOff to On"); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); - } - case 1: { - LogStep(1, "DUT sends ColorLoopSet command to TH"); - VerifyOrDo(!ShouldSkip("CC.C.C44.Tx && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id); - } - case 2: { - LogStep(2, "DUT reads ColorLoopActive attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4002 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); - } - case 3: { - LogStep(3, "DUT reads ColorLoopDirection attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4003 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); - } - case 4: { - LogStep(4, "DUT reads ColorLoopTime attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4004 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); - } - case 5: { - LogStep(5, "DUT reads ColorLoopStartEnhancedHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4005 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); - } - case 6: { - LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 7: { - LogStep(7, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 8: { - LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 9: { - LogStep(9, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 10: { - LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 11: { - LogStep(11, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 12: { - LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 13: { - LogStep(13, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 14: { - LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 15: { - LogStep(15, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 16: { - LogStep(16, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 17: { - LogStep(17, "Wait 5000ms"); - VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; - value.ms = 5000UL; - return WaitForMs(kIdentityAlpha, value); - } - case 18: { - LogStep(18, "DUT reads EnhancedCurrentHue attribute from TH periodically"); - VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGTHREAD_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGTHREAD_3_2_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_2_Simulated", 17) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGTHREAD_3_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) - { - 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, "DUT reads TxTotalCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxTotalCount::Id); - } - case 1: { - LogStep(1, "DUT reads TxUnicastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxUnicastCount::Id); - } - case 2: { - LogStep(2, "DUT reads TxBroadcastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::Id); - } - case 3: { - LogStep(3, "DUT reads TxAckRequestedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::Id); - } - case 4: { - LogStep(4, "DUT reads TxAckedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxAckedCount::Id); - } - case 5: { - LogStep(5, "DUT reads TxNoAckRequestedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::Id); - } - case 6: { - LogStep(6, "DUT reads TxDataCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxDataCount::Id); - } - case 7: { - LogStep(7, "DUT reads TxDataPollCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxDataPollCount::Id); - } - case 8: { - LogStep(8, "DUT reads TxBeaconCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxBeaconCount::Id); - } - case 9: { - LogStep(9, "DUT reads TxBeaconRequestCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A001f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::Id); - } - case 10: { - LogStep(10, "DUT reads TxOtherCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxOtherCount::Id); - } - case 11: { - LogStep(11, "DUT reads TxRetryCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxRetryCount::Id); - } - case 12: { - LogStep(12, "DUT reads TxDirectMaxRetryExpiryCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::Id); - } - case 13: { - LogStep(13, "DUT reads TxIndirectMaxRetryExpiryCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::Id); - } - case 14: { - LogStep(14, "DUT reads TxErrCcaCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::Id); - } - case 15: { - LogStep(15, "DUT reads TxErrAbortCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::Id); - } - case 16: { - LogStep(16, "DUT reads TxErrBusyChannelCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGTHREAD_3_3_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGTHREAD_3_3_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_3_Simulated", 17) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGTHREAD_3_3_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) - { - 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, "DUT reads RxTotalCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxTotalCount::Id); - } - case 1: { - LogStep(1, "DUT reads RxUnicastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxUnicastCount::Id); - } - case 2: { - LogStep(2, "DUT reads RxBroadcastCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::Id); - } - case 3: { - LogStep(3, "DUT reads RxDataCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDataCount::Id); - } - case 4: { - LogStep(4, "DUT reads RxDataPollCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDataPollCount::Id); - } - case 5: { - LogStep(5, "DUT reads RxBeaconCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxBeaconCount::Id); - } - case 6: { - LogStep(6, "DUT reads RxBeaconRequestCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::Id); - } - case 7: { - LogStep(7, "DUT reads RxOtherCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxOtherCount::Id); - } - case 8: { - LogStep(8, "DUT reads RxAddressFilteredCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A002f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::Id); - } - case 9: { - LogStep(9, "DUT reads RxDestAddrFilteredCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::Id); - } - case 10: { - LogStep(10, "DUT reads RxDuplicatedCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::Id); - } - case 11: { - LogStep(11, "DUT reads RxErrNoFrameCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::Id); - } - case 12: { - LogStep(12, "DUT reads RxErrUnknownNeighborCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::Id); - } - case 13: { - LogStep(13, "DUT reads RxErrInvalidSrcAddrCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::Id); - } - case 14: { - LogStep(14, "DUT reads RxErrSecCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrSecCount::Id); - } - case 15: { - LogStep(15, "DUT reads RxErrFcsCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::Id); - } - case 16: { - LogStep(16, "DUT reads RxErrOtherCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_DGTHREAD_3_4_SimulatedSuite : public TestCommand -{ -public: - Test_TC_DGTHREAD_3_4_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_4_Simulated", 2) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_DGTHREAD_3_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) - { - 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, "DUT sends ResetCounts command to TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Commands::ResetCounts::Id); - } - case 1: { - LogStep(1, "DUT reads OverrunCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); - } - } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_LVL_2_3_SimulatedSuite : public TestCommand -{ -public: - Test_TC_LVL_2_3_SimulatedSuite() : TestCommand("Test_TC_LVL_2_3_Simulated", 24) - { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); - } - - ~Test_TC_LVL_2_3_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 21: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 22: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; - case 23: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - 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, "Read mandatory attribute CurrentLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id); - } - case 1: { - LogStep(1, "Read mandatory attribute OnLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); - } - case 2: { - LogStep(2, "Read mandatory attribute Options"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); - } - case 3: { - LogStep(3, "Read optional attribute RemainingTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::RemainingTime::Id); - } - case 4: { - LogStep(4, "Read optional attribute StartUpCurrentLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); - } - case 5: { - LogStep(5, "Read optional attribute CurrentFrequency"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id); - } - case 6: { - LogStep(6, "Read optional attribute MinFrequency"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinFrequency::Id); - } - case 7: { - LogStep(7, "Read optional attribute MaxFrequency"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxFrequency::Id); - } - case 8: { - LogStep(8, "Read optional attribute MinLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id); - } - case 9: { - LogStep(9, "Read optional attribute MaxLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id); - } - case 10: { - LogStep(10, "Read optional attribute OnOffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); - } - case 11: { - LogStep(11, "Read optional attribute OnTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); - } - case 12: { - LogStep(12, "Read optional attribute OffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); + case 12: { + LogStep(12, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C05.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 13: { - LogStep(13, "Read optional attribute DefaultMoveRate"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); + LogStep(13, "DUT sends MoveToHueAndSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToHueAndSaturation::Id); } case 14: { - LogStep(14, "Write mandatory attribute OnLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); + LogStep(14, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 15: { - LogStep(15, "Write mandatory attribute Options"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); + LogStep(15, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 16: { - LogStep(16, "Write optional attribute OnOffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); + LogStep(16, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 17: { - LogStep(17, "Write optional attribute OnTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); + LogStep(17, "DUT reads CurrentSaturation attribute from TH several times."); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 18: { - LogStep(18, "Write optional attribute OffTransitionTime"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); + LogStep(18, "DUT reads CurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.C06.Tx && CC.C.A0000 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); } case 19: { - LogStep(19, "Write optional attribute DefaultMoveRate"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); + LogStep(19, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); } case 20: { - LogStep(20, "Write optional attribute StartUpCurrentLevel"); - return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); - } - case 21: { - LogStep(21, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 22: { - LogStep(22, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(20, "Wait for ConfigTransitionTime"); + VerifyOrDo(!ShouldSkip("CC.C.F00"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - case 23: { - LogStep(23, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 21: { + LogStep(21, "Over TransitionTime, DUT reads CurrentSaturation attribute from TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0001 && CC.C.F00"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_OO_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_5_4_SimulatedSuite : public TestCommand { public: - Test_TC_OO_3_1_SimulatedSuite() : TestCommand("Test_TC_OO_3_1_Simulated", 11) + Test_TC_CC_5_4_SimulatedSuite() : TestCommand("Test_TC_CC_5_4_Simulated", 25) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_OO_3_1_SimulatedSuite() {} + ~Test_TC_CC_5_4_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4164,15 +846,19 @@ class Test_TC_OO_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 8: + case 4: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 9: + case 10: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 10: + case 16: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 22: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4192,176 +878,164 @@ class Test_TC_OO_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute OnOff"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnOff::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute GlobalSceneControl"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::GlobalSceneControl::Id); + LogStep(1, "DUT sends MoveToColor command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColor::Id); } case 2: { - LogStep(2, "Read attribute OnTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id); + LogStep(2, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } case 3: { - LogStep(3, "Read attribute OffWaitTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id); + LogStep(3, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } case 4: { - LogStep(4, "Read attribute StartUpOnOff"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::StartUpOnOff::Id); + LogStep(4, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 5: { - LogStep(5, "Write attribute OnTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OnTime::Id); + LogStep(5, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } case 6: { - LogStep(6, "Write attribute OffWaitTime"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::OffWaitTime::Id); + LogStep(6, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C07.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } case 7: { - LogStep(7, "Write attribute StartUpOnOff"); - return WaitAttribute(GetEndpoint(1), OnOff::Id, OnOff::Attributes::StartUpOnOff::Id); + LogStep(7, "DUT sends MoveColor command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColor::Id); } case 8: { - LogStep(8, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(8, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } case 9: { - LogStep(9, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(9, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } case 10: { - LogStep(10, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(10, "Wait for ConfigTransitionTime"); 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } + case 11: { + LogStep(11, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } - return CHIP_NO_ERROR; - } -}; - -class Test_TC_OO_3_2_SimulatedSuite : public TestCommand -{ -public: - Test_TC_OO_3_2_SimulatedSuite() : TestCommand("Test_TC_OO_3_2_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_OO_3_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) - { - default: - LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + case 12: { + LogStep(12, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C08.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } - - if (shouldContinue) - { - ContinueOnChipMainThread(CHIP_NO_ERROR); + case 13: { + LogStep(13, "DUT sends StepColor command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColor::Id); } - } - - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "DUT issues an Off command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id); + case 14: { + LogStep(14, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } - case 1: { - LogStep(1, "DUT issues an On command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); + case 15: { + LogStep(15, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); + } + case 16: { + LogStep(16, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 17: { + LogStep(17, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); + } + case 18: { + LogStep(18, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C09.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); + } + case 19: { + LogStep(19, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); } - case 2: { - LogStep(2, "DUT issues an Toggle command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Toggle::Id); + case 20: { + LogStep(20, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); } - case 3: { - LogStep(3, "DUT issues an OffWithEffect command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C40.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OffWithEffect::Id); + case 21: { + LogStep(21, "DUT reads CurrentY attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } - case 4: { - LogStep(4, "DUT issues an OnWithRecallGlobalScene command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithRecallGlobalScene::Id); + case 22: { + LogStep(22, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - case 5: { - LogStep(5, "DUT issues an OnWithTimedOff command to the TH"); - VerifyOrDo(!ShouldSkip("OO.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id); + case 23: { + LogStep(23, "DUT reads CurrentX attribute from TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0003 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); + } + case 24: { + LogStep( + 24, + "DUT reads CurrentY attribute from ConfiguredTime: type: int16u defaultValue: 30000TH(potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0004 && CC.C.F03"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_TSUIC_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_6_4_SimulatedSuite : public TestCommand { public: - Test_TC_TSUIC_3_1_SimulatedSuite() : TestCommand("Test_TC_TSUIC_3_1_Simulated", 9) + Test_TC_CC_6_4_SimulatedSuite() : TestCommand("Test_TC_CC_6_4_Simulated", 18) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_TSUIC_3_1_SimulatedSuite() {} + ~Test_TC_CC_6_4_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4375,15 +1049,19 @@ class Test_TC_TSUIC_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 6: + case 5: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 7: + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 8: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4403,93 +1081,133 @@ class Test_TC_TSUIC_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "DUT reads TemperatureDisplayMode attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "DUT reads KeypadLockout attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::Id); + LogStep(1, + "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " + "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " + "attribute ColorTempPhysicalMinMireds from TH"); + VerifyOrDo(!ShouldSkip("CC.C.A400b && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); } case 2: { - LogStep(2, "DUT reads ScheduleProgrammingVisibility attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::Id); + LogStep(2, + "* TH provides a server implementation of Color Control with F04(CT)=true and reasonable values of " + "ColorTempPhysicalMinMireds (e.g. 153 (6500K), ColorTempPhysicalMaxMireds (e.g. 454 (2200K)) DUT read " + "attribute ColorTempPhysicalMaxMireds from TH"); + VerifyOrDo(!ShouldSkip("CC.C.A400c && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); } case 3: { - LogStep(3, "DUT writes TemperatureDisplayMode attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::Id); + LogStep(3, "DUT sends MoveToColorTemperature command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveToColorTemperature::Id); } case 4: { - LogStep(4, "DUT writes KeypadLockout attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::Id); + LogStep(4, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); } case 5: { - LogStep(5, "DUT writes ScheduleProgrammingVisibility attribute from TH"); - return WaitAttribute(GetEndpoint(0), ThermostatUserInterfaceConfiguration::Id, - ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::Id); + LogStep(5, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 6: { - LogStep(6, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(6, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C0a.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); } case 7: { - LogStep(7, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(7, "DUT sends MoveColorTemperatureMireds command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::MoveColorTemperature::Id); } case 8: { - LogStep(8, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(8, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 9: { + LogStep(9, "Wait for ConfigTransitionTime"); 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4b.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 11: { + LogStep(11, "DUT sends StepColorTemperature command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StepColorTemperature::Id); + } + case 12: { + LogStep(12, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 13: { + LogStep(13, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C4c.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); + } + case 15: { + LogStep(15, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); + } + case 16: { + LogStep(16, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 17: { + LogStep(17, "DUT reads CurrentColorTemperatureMireds attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A0007 && CC.C.F04"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_PCC_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_7_5_SimulatedSuite : public TestCommand { public: - Test_TC_PCC_3_1_SimulatedSuite() : TestCommand("Test_TC_PCC_3_1_Simulated", 30) + Test_TC_CC_7_5_SimulatedSuite() : TestCommand("Test_TC_CC_7_5_Simulated", 23) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); - AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("ConfigTransitionTime", 0, UINT16_MAX, &mConfigTransitionTime); } - ~Test_TC_PCC_3_1_SimulatedSuite() {} + ~Test_TC_CC_7_5_SimulatedSuite() {} private: chip::Optional mNodeId; chip::Optional mCluster; - chip::Optional mEndpoint; chip::Optional mTimeout; + chip::Optional mEndpoint; + chip::Optional mConfigTransitionTime; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4503,15 +1221,23 @@ class Test_TC_PCC_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 27: + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 28: + case 16: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 29: + case 21: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4531,225 +1257,152 @@ class Test_TC_PCC_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute MaxPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxPressure::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute MaxSpeed"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxSpeed::Id); + LogStep(1, "DUT sends MoveToEnhancedHue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHue::Id); } case 2: { - LogStep(2, "Read attribute MaxFlow"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxFlow::Id); + LogStep(2, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 3: { - LogStep(3, "Read attribute EffectiveOperationMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::EffectiveOperationMode::Id); + LogStep(3, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 4: { - LogStep(4, "Read attribute EffectiveControlMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::EffectiveControlMode::Id); + LogStep(4, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C40.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 5: { - LogStep(5, "Read attribute Capacity"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::Capacity::Id); + LogStep(5, "DUT sends MoveEnhanced Hue command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveHue::Id); } case 6: { - LogStep(6, "Read attribute OperationMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AM-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::OperationMode::Id); + LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 7: { - LogStep(7, "Read attribute MinConstPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstPressure::Id); + LogStep(7, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 8: { - LogStep(8, "Read attribute MaxConstPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstPressure::Id); + LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C41.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 9: { - LogStep(9, "Read attribute MinCompPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinCompPressure::Id); + LogStep(9, "DUT sends StepEnhanced command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedStepHue::Id); } case 10: { - LogStep(10, "Read attribute MaxCompPressure"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxCompPressure::Id); + LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 11: { - LogStep(11, "Read attribute MinConstSpeed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstSpeed::Id); + LogStep(11, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 12: { - LogStep(12, "Read attribute MaxConstSpeed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstSpeed::Id); + LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C42.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 13: { - LogStep(13, "Read attribute MinConstFlow"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstFlow::Id); + LogStep(13, "DUT sends EnhancedMoveToHueAndSaturation command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::EnhancedMoveToHueAndSaturation::Id); } case 14: { - LogStep(14, "Read attribute MaxConstFlow"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstFlow::Id); + LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 15: { - LogStep(15, "Read attribute MinConstTemp"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MinConstTemp::Id); + LogStep(15, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 16: { - LogStep(16, "Read attribute MaxConstTemp"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::MaxConstTemp::Id); + LogStep(16, "Wait for ConfigTransitionTime"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } case 17: { - LogStep(17, "Read attribute PumpStatus"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::PumpStatus::Id); + LogStep(17, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 18: { - LogStep(18, "Read attribute Speed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::Speed::Id); + LogStep(18, "DUT reads CurrentSaturation attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C43.Tx && CC.C.A0001 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); } case 19: { - LogStep(19, "Read attribute LifetimeRunningHours"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeRunningHours::Id); + LogStep(19, "DUT sends StopMoveStep command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::StopMoveStep::Id); } case 20: { - LogStep(20, "Read attribute Power"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::Power::Id); + LogStep(20, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } case 21: { - LogStep(21, "Read attribute LifetimeEnergyConsumed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::Id); - } - case 22: { - LogStep(22, "Read attribute ControlMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-READ"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::ControlMode::Id); - } - case 23: { - LogStep(23, "Write attribute LifetimeRunningHours"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeRunningHours::Id); - } - case 24: { - LogStep(24, "Write attribute LifetimeEnergyConsumed"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::Id); - } - case 25: { - LogStep(25, "Write attribute OperationMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::OperationMode::Id); - } - case 26: { - LogStep(26, "Write attribute ControlMode"); - VerifyOrDo(!ShouldSkip("PCC.C.AO-WRITE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), PumpConfigurationAndControl::Id, - PumpConfigurationAndControl::Attributes::ControlMode::Id); - } - case 27: { - LogStep(27, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 28: { - LogStep(28, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(21, "Wait for ConfigTransitionTime"); 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = mConfigTransitionTime.HasValue() ? mConfigTransitionTime.Value() : 3000UL; + return WaitForMs(kIdentityAlpha, value); } - case 29: { - LogStep(29, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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 22: { + LogStep(22, "DUT reads EnhancedCurrentHue attribute from TH (potentially multiple times)"); + VerifyOrDo(!ShouldSkip("CC.C.C47.Tx && CC.C.A4000 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand +class Test_TC_CC_9_4_SimulatedSuite : public TestCommand { public: - Test_TC_TMP_3_1_SimulatedSuite() : TestCommand("Test_TC_TMP_3_1_Simulated", 7) + Test_TC_CC_9_4_SimulatedSuite() : TestCommand("Test_TC_CC_9_4_Simulated", 19) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); - AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_TMP_3_1_SimulatedSuite() {} + ~Test_TC_CC_9_4_SimulatedSuite() {} private: chip::Optional mNodeId; + chip::Optional mTimeout; chip::Optional mCluster; chip::Optional mEndpoint; - chip::Optional mTimeout; chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } @@ -4763,15 +1416,27 @@ class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 4: + case 7: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 5: + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 15: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; - case 6: + case 17: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -4791,67 +1456,126 @@ class Test_TC_TMP_3_1_SimulatedSuite : public TestCommand switch (testIndex) { case 0: { - LogStep(0, "Read attribute: MeasuredValue"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, TemperatureMeasurement::Attributes::MeasuredValue::Id); + LogStep(0, "PreCondition: Set TH OnOff to On"); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 1: { - LogStep(1, "Read attribute: MinMeasuredValue"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MinMeasuredValue::Id); + LogStep(1, "DUT sends ColorLoopSet command to TH"); + VerifyOrDo(!ShouldSkip("CC.C.C44.Tx && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), ColorControl::Id, ColorControl::Commands::ColorLoopSet::Id); } case 2: { - LogStep(2, "Read attribute: MaxMeasuredValue"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, - TemperatureMeasurement::Attributes::MaxMeasuredValue::Id); + LogStep(2, "DUT reads ColorLoopActive attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4002 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); } case 3: { - LogStep(3, "Read attribute: Tolerance"); - return WaitAttribute(GetEndpoint(0), TemperatureMeasurement::Id, TemperatureMeasurement::Attributes::Tolerance::Id); + LogStep(3, "DUT reads ColorLoopDirection attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4003 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); } case 4: { - LogStep(4, - "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"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(4, "DUT reads ColorLoopTime attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4004 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); } case 5: { - LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - ListFreer listFreer; - chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; - value.message = chip::Span("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); + LogStep(5, "DUT reads ColorLoopStartEnhancedHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4005 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); } case 6: { - LogStep(6, - "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " - "specific order"); - VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(6, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 7: { + LogStep(7, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), 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); + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 8: { + LogStep(8, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 9: { + LogStep(9, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 10: { + LogStep(10, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 11: { + LogStep(11, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 12: { + LogStep(12, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 13: { + LogStep(13, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 14: { + LogStep(14, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 15: { + LogStep(15, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 16: { + LogStep(16, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); + } + case 17: { + LogStep(17, "Wait 5000ms"); + VerifyOrDo(!ShouldSkip("CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 5000UL; + return WaitForMs(kIdentityAlpha, value); + } + case 18: { + LogStep(18, "DUT reads EnhancedCurrentHue attribute from TH periodically"); + VerifyOrDo(!ShouldSkip("CC.C.A4000 && CC.C.F02 && CC.C.F01"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_CC_2_2_SimulatedSuite : public TestCommand +class Test_TC_DGTHREAD_3_4_SimulatedSuite : public TestCommand { public: - Test_TC_CC_2_2_SimulatedSuite() : TestCommand("Test_TC_CC_2_2_Simulated", 52) + Test_TC_DGTHREAD_3_4_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_4_Simulated", 2) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -4859,7 +1583,7 @@ class Test_TC_CC_2_2_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_CC_2_2_SimulatedSuite() {} + ~Test_TC_DGTHREAD_3_4_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -4889,280 +1613,31 @@ class Test_TC_CC_2_2_SimulatedSuite : public TestCommand } } - CHIP_ERROR DoTestStep(uint16_t testIndex) override - { - using namespace chip::app::Clusters; - switch (testIndex) - { - case 0: { - LogStep(0, "DUT reads from the TH the (0x0000) CurrentHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentHue::Id); - } - case 1: { - LogStep(1, "DUT reads from the TH the (0x0001) CurrentSaturation attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentSaturation::Id); - } - case 2: { - LogStep(2, "DUT reads from the TH the Optional (0x0002) RemainingTime attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::RemainingTime::Id); - } - case 3: { - LogStep(3, "DUT reads from the TH the (0x0003) CurrentX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentX::Id); - } - case 4: { - LogStep(4, "DUT reads from the TH the (0x0004) CurrentY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CurrentY::Id); - } - case 5: { - LogStep(5, "DUT reads from the TH the Optional (0x0005) DriftCompensation attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::DriftCompensation::Id); - } - case 6: { - LogStep(6, "DUT reads from the TH the Optional (0x0006) CompensationText attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CompensationText::Id); - } - case 7: { - LogStep(7, "DUT reads from the TH the (0x0007) ColorTemperatureMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTemperatureMireds::Id); - } - case 8: { - LogStep(8, "DUT reads from the TH the (0x0008) ColorMode attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorMode::Id); - } - case 9: { - LogStep(9, "DUT reads from the TH the (0x000f) Options attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Options::Id); - } - case 10: { - LogStep(10, "DUT reads from the TH the (0x4000) EnhancedCurrentHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedCurrentHue::Id); - } - case 11: { - LogStep(11, "DUT reads from the TH the (0x4001) EnhancedColorMode attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::EnhancedColorMode::Id); - } - case 12: { - LogStep(12, "DUT reads from the TH the (0x4002) ColorLoopActive attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopActive::Id); - } - case 13: { - LogStep(13, "DUT reads from the TH the (0x4003) ColorLoopDirection attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopDirection::Id); - } - case 14: { - LogStep(14, "DUT reads from the TH the (0x4004) ColorLoopTime attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopTime::Id); - } - case 15: { - LogStep(15, "DUT reads from the TH the (0x4005) ColorLoopStartEnhancedHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStartEnhancedHue::Id); - } - case 16: { - LogStep(16, "DUT reads from the TH the (0x4006) ColorLoopStoredEnhancedHue attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorLoopStoredEnhancedHue::Id); - } - case 17: { - LogStep(17, "DUT reads from the TH the (0x400a) ColorCapabilities attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorCapabilities::Id); - } - case 18: { - LogStep(18, "DUT reads from the TH the (0x400b) ColorTempPhysicalMinMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMinMireds::Id); - } - case 19: { - LogStep(19, "DUT reads from the TH the (0x400c) ColorTempPhysicalMaxMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorTempPhysicalMaxMireds::Id); - } - case 20: { - LogStep(20, "DUT reads from the TH the (0x400d) CoupleColorTempToLevelMinMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A400d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::CoupleColorTempToLevelMinMireds::Id); - } - case 21: { - LogStep(21, "DUT reads from the TH the (0x4010) StartUpColorTemperatureMireds attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A4010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::StartUpColorTemperatureMireds::Id); - } - case 22: { - LogStep(22, "DUT reads from the TH the (0x0010) NumberOfPrimaries attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::NumberOfPrimaries::Id); - } - case 23: { - LogStep(23, "DUT reads from the TH the (0x0011) Primary1X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1X::Id); + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + switch (testIndex) + { + case 0: { + LogStep(0, "DUT sends ResetCounts command to TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Commands::ResetCounts::Id); } - case 24: { - LogStep(24, "DUT reads from the TH the (0x0012) Primary1Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Y::Id); - } - case 25: { - LogStep(25, "DUT reads from the TH the (0x0013) Primary1Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary1Intensity::Id); - } - case 26: { - LogStep(26, "DUT reads from the TH the (0x0015) Primary2X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2X::Id); - } - case 27: { - LogStep(27, "DUT reads from the TH the (0x0016) Primary2Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Y::Id); - } - case 28: { - LogStep(28, "DUT reads from the TH the (0x0017) Primary2Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary2Intensity::Id); - } - case 29: { - LogStep(29, "DUT reads from the TH the (0x0019) Primary3X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3X::Id); - } - case 30: { - LogStep(30, "DUT reads from the TH the (0x001a) Primary3Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Y::Id); - } - case 31: { - LogStep(31, "DUT reads from the TH the (0x001b) Primary3Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary3Intensity::Id); - } - case 32: { - LogStep(32, "DUT reads from the TH the (0x0020) Primary4X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0020"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4X::Id); - } - case 33: { - LogStep(33, "DUT reads from the TH the (0x0021) Primary4Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Y::Id); - } - case 34: { - LogStep(34, "DUT reads from the TH the (0x0022) Primary4Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary4Intensity::Id); - } - case 35: { - LogStep(35, "DUT reads from the TH the (0x0024) Primary5X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5X::Id); - } - case 36: { - LogStep(36, "DUT reads from the TH the (0x0025) Primary5Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Y::Id); - } - case 37: { - LogStep(37, "DUT reads from the TH the (0x0026) Primary5Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary5Intensity::Id); - } - case 38: { - LogStep(38, "DUT reads from the TH the (0x0028) Primary6X attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6X::Id); - } - case 39: { - LogStep(39, "DUT reads from the TH the (0x0029) Primary6Y attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Y::Id); - } - case 40: { - LogStep(40, "DUT reads from the TH the (0x002a) Primary6Intensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::Primary6Intensity::Id); - } - case 41: { - LogStep(41, "DUT reads from the TH the Optional (0x0030) WhitePointX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointX::Id); - } - case 42: { - LogStep(42, "DUT reads from the TH the Optional (0x0031) WhitePointY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::WhitePointY::Id); - } - case 43: { - LogStep(43, "DUT reads from the TH the Optional (0x0032) ColorPointRX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRX::Id); - } - case 44: { - LogStep(44, "DUT reads from the TH the Optional (0x0033) ColorPointRY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRY::Id); - } - case 45: { - LogStep(45, "DUT reads from the TH the Optional (0x0034) ColorPointRIntensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0034"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointRIntensity::Id); - } - case 46: { - LogStep(46, "DUT reads from the TH the Optional (0x0036) ColorPointGX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0036"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGX::Id); - } - case 47: { - LogStep(47, "DUT reads from the TH the Optional (0x0037) ColorPointGY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0037"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGY::Id); - } - case 48: { - LogStep(48, "DUT reads from the TH the Optional (0x0038) ColorPointGIntensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointGIntensity::Id); - } - case 49: { - LogStep(49, "DUT reads from the TH the Optional (0x003a) ColorPointBX attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBX::Id); - } - case 50: { - LogStep(50, "DUT reads from the TH the Optional (0x003b) ColorPointBY attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBY::Id); - } - case 51: { - LogStep(51, "DUT reads from the TH the Optional (0x003c) ColorPointBIntensity attribute"); - VerifyOrDo(!ShouldSkip("CC.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(1), ColorControl::Id, ColorControl::Attributes::ColorPointBIntensity::Id); + case 1: { + LogStep(1, "DUT reads OverrunCount attribute value from TH"); + VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, + ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); } } return CHIP_NO_ERROR; } }; -class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand +class Test_TC_LVL_2_3_SimulatedSuite : public TestCommand { public: - Test_TC_DGTHREAD_3_1_SimulatedSuite() : TestCommand("Test_TC_DGTHREAD_3_1_Simulated", 30) + Test_TC_LVL_2_3_SimulatedSuite() : TestCommand("Test_TC_LVL_2_3_Simulated", 24) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -5170,7 +1645,7 @@ class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DGTHREAD_3_1_SimulatedSuite() {} + ~Test_TC_LVL_2_3_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -5190,7 +1665,15 @@ class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 0: + case 21: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 22: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; @@ -5210,190 +1693,133 @@ class Test_TC_DGTHREAD_3_1_SimulatedSuite : public TestCommand 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); + LogStep(0, "Read mandatory attribute CurrentLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentLevel::Id); } case 1: { - LogStep(1, "DUT reads Channel attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Channel::Id); + LogStep(1, "Read mandatory attribute OnLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); } case 2: { - LogStep(2, "DUT reads RoutingRole attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RoutingRole::Id); + LogStep(2, "Read mandatory attribute Options"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); } case 3: { - LogStep(3, "DUT reads NetworkName attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::NetworkName::Id); + LogStep(3, "Read optional attribute RemainingTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::RemainingTime::Id); } case 4: { - LogStep(4, "DUT reads PanId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::PanId::Id); + LogStep(4, "Read optional attribute StartUpCurrentLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); } case 5: { - LogStep(5, "DUT reads ExtendedPanId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ExtendedPanId::Id); + LogStep(5, "Read optional attribute CurrentFrequency"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::CurrentFrequency::Id); } case 6: { - LogStep(6, "DUT reads MeshLocalPrefix attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::Id); + LogStep(6, "Read optional attribute MinFrequency"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinFrequency::Id); } case 7: { - LogStep(7, "DUT reads OverrunCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::OverrunCount::Id); + LogStep(7, "Read optional attribute MaxFrequency"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxFrequency::Id); } case 8: { - LogStep(8, "DUT reads NeighborTable attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::NeighborTable::Id); + LogStep(8, "Read optional attribute MinLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MinLevel::Id); } case 9: { - LogStep(9, "DUT reads RouteTable attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RouteTable::Id); + LogStep(9, "Read optional attribute MaxLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::MaxLevel::Id); } case 10: { - LogStep(10, "DUT reads PartitionId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::PartitionId::Id); + LogStep(10, "Read optional attribute OnOffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); } case 11: { - LogStep(11, "DUT reads Weighting attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Weighting::Id); + LogStep(11, "Read optional attribute OnTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); } case 12: { - LogStep(12, "DUT reads DataVersion attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::DataVersion::Id); + LogStep(12, "Read optional attribute OffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); } case 13: { - LogStep(13, "DUT reads StableDataVersion attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::StableDataVersion::Id); + LogStep(13, "Read optional attribute DefaultMoveRate"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); } case 14: { - LogStep(14, "DUT reads LeaderRouterId attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::LeaderRouterId::Id); + LogStep(14, "Write mandatory attribute OnLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnLevel::Id); } case 15: { - LogStep(15, "DUT reads DetachedRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::Id); + LogStep(15, "Write mandatory attribute Options"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::Options::Id); } case 16: { - LogStep(16, "DUT reads ChildRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ChildRoleCount::Id); + LogStep(16, "Write optional attribute OnOffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnOffTransitionTime::Id); } case 17: { - LogStep(17, "DUT reads RouterRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::RouterRoleCount::Id); + LogStep(17, "Write optional attribute OnTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OnTransitionTime::Id); } case 18: { - LogStep(18, "DUT reads LeaderRoleCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::Id); + LogStep(18, "Write optional attribute OffTransitionTime"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::OffTransitionTime::Id); } case 19: { - LogStep(19, "DUT reads AttachAttemptCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::Id); + LogStep(19, "Write optional attribute DefaultMoveRate"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::DefaultMoveRate::Id); } case 20: { - LogStep(20, "DUT reads PartitionIdChangeCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::Id); + LogStep(20, "Write optional attribute StartUpCurrentLevel"); + return WaitAttribute(GetEndpoint(1), LevelControl::Id, LevelControl::Attributes::StartUpCurrentLevel::Id); } case 21: { - LogStep(21, "DUT reads BetterPartitionAttachAttemptCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::Id); + LogStep(21, + "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"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("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 22: { - LogStep(22, "DUT reads ParentChangeCount attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ParentChangeCount::Id); + LogStep(22, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("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 23: { - LogStep(23, "DUT reads ActiveTimestamp attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0038"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::Id); - } - case 24: { - LogStep(24, "DUT reads PendingTimestamp attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A0039"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::PendingTimestamp::Id); - } - case 25: { - LogStep(25, "DUT reads Delay attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, ThreadNetworkDiagnostics::Attributes::Delay::Id); - } - case 26: { - LogStep(26, "DUT reads SecurityPolicy attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::SecurityPolicy::Id); - } - case 27: { - LogStep(27, "DUT reads ChannelPage0Mask attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::Id); - } - case 28: { - LogStep(28, "DUT reads OperationalDatasetComponents attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003d"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::Id); - } - case 29: { - LogStep(29, "DUT reads ActiveNetworkFaults attribute value from TH"); - VerifyOrDo(!ShouldSkip("DGTHREAD.C.A003e"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), ThreadNetworkDiagnostics::Id, - ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::Id); + LogStep(23, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("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); } } return CHIP_NO_ERROR; } }; -class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand +class Test_TC_OO_3_2_SimulatedSuite : public TestCommand { public: - Test_TC_DRLK_3_1_SimulatedSuite() : TestCommand("Test_TC_DRLK_3_1_Simulated", 37) + Test_TC_OO_3_2_SimulatedSuite() : TestCommand("Test_TC_OO_3_2_Simulated", 6) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -5401,7 +1827,7 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } - ~Test_TC_DRLK_3_1_SimulatedSuite() {} + ~Test_TC_OO_3_2_SimulatedSuite() {} private: chip::Optional mNodeId; @@ -5421,10 +1847,6 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand switch (mTestIndex - 1) { - case 0: - VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); - shouldContinue = true; - break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -5441,190 +1863,34 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand 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); + LogStep(0, "DUT issues an Off command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C00.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Off::Id); } case 1: { - LogStep(1, "DUT reads LockState attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockState::Id); + LogStep(1, "DUT issues an On command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C01.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::On::Id); } case 2: { - LogStep(2, "DUT reads LockType attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LockType::Id); + LogStep(2, "DUT issues an Toggle command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C02.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::Toggle::Id); } case 3: { - LogStep(3, "DUT reads ActuatorEnabled attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ActuatorEnabled::Id); + LogStep(3, "DUT issues an OffWithEffect command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C40.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OffWithEffect::Id); } case 4: { - LogStep(4, "DUT reads DoorState attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorState::Id); + LogStep(4, "DUT issues an OnWithRecallGlobalScene command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C41.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithRecallGlobalScene::Id); } case 5: { - LogStep(5, "DUT reads DoorOpenEvents attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorOpenEvents::Id); - } - case 6: { - LogStep(6, "DUT reads DoorClosedEvents attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DoorClosedEvents::Id); - } - case 7: { - LogStep(7, "DUT reads OpenPeriod attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OpenPeriod::Id); - } - case 8: { - LogStep(8, "DUT reads NumberOfTotalUsersSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F05 && DRLK.C.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfTotalUsersSupported::Id); - } - case 9: { - LogStep(9, "DUT reads NumberofPINUsersSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfPINUsersSupported::Id); - } - case 10: { - LogStep(10, "DUT reads NumberofRFIDUsersSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfRFIDUsersSupported::Id); - } - case 11: { - LogStep(11, "DUT reads NumberofWeekDaysSchedulesSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0014"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::Id); - } - case 12: { - LogStep(12, "DUT reads NumberofYearDaysSchedulesSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0015"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::Id); - } - case 13: { - LogStep(13, "DUT reads NumberofHolidaySchedulesSupported attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F04 && DRLK.C.A0016"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfHolidaySchedulesSupported::Id); - } - case 14: { - LogStep(14, "DUT reads MaxPINCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0017"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxPINCodeLength::Id); - } - case 15: { - LogStep(15, "DUT reads MinPINCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.A0018"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinPINCodeLength::Id); - } - case 16: { - LogStep(16, "DUT reads MaxRFIDCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A0019"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MaxRFIDCodeLength::Id); - } - case 17: { - LogStep(17, "DUT reads MinRFIDCodeLength attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F01 && DRLK.C.A001a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::MinRFIDCodeLength::Id); - } - case 18: { - LogStep(18, "DUT reads CredentialRulesSupport attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::CredentialRulesSupport::Id); - } - case 19: { - LogStep(19, "DUT reads Language attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0021"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::Language::Id); - } - case 20: { - LogStep(20, "DUT reads LEDSettings attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0022"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LEDSettings::Id); - } - case 21: { - LogStep(21, "DUT reads AutoRelockTime attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0023"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::AutoRelockTime::Id); - } - case 22: { - LogStep(22, "DUT reads SoundVolume attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0024"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SoundVolume::Id); - } - case 23: { - LogStep(23, "DUT reads OperatingMode attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0025"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::OperatingMode::Id); - } - case 24: { - LogStep(24, "DUT reads SupportedOperatingModes attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0026"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SupportedOperatingModes::Id); - } - case 25: { - LogStep(25, "DUT reads DefaultConfigurationRegister attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0027"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::DefaultConfigurationRegister::Id); - } - case 26: { - LogStep(26, "DUT reads EnableLocalProgramming attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0028"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableLocalProgramming::Id); - } - case 27: { - LogStep(27, "DUT reads EnableOneTouchLocking attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A0029"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableOneTouchLocking::Id); - } - case 28: { - LogStep(28, "DUT reads EnableInsideStatusLED attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A002a"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnableInsideStatusLED::Id); - } - case 29: { - LogStep(29, "DUT reads EnablePrivacyModeButton attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A002b"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::EnablePrivacyModeButton::Id); - } - case 30: { - LogStep(30, "DUT reads LocalProgrammingFeatures attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.A002c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::LocalProgrammingFeatures::Id); - } - case 31: { - LogStep(31, "DUT reads WrongCodeEntryLimit attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0030"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::WrongCodeEntryLimit::Id); - } - case 32: { - LogStep(32, "DUT reads UserCodeTemporaryDisableTime attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F00 && DRLK.C.F01 && DRLK.C.A0031"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::UserCodeTemporaryDisableTime::Id); - } - case 33: { - LogStep(33, "DUT reads SendPINOverTheAir attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0032"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::SendPINOverTheAir::Id); - } - case 34: { - LogStep(34, "DUT reads RequirePINForRemoteOperation attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F07 && DRLK.C.F00 && DRLK.C.A0033"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::RequirePINforRemoteOperation::Id); - } - case 35: { - LogStep(35, "DUT reads ExpiringUserTimeOut attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A0035"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::ExpiringUserTimeout::Id); - } - case 36: { - LogStep(36, "DUT reads NumberOfCredentialsSupportedPerUser attribute value from TH"); - VerifyOrDo(!ShouldSkip("DRLK.C.F08 && DRLK.C.A001c"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); - return WaitAttribute(GetEndpoint(0), DoorLock::Id, DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::Id); + LogStep(5, "DUT issues an OnWithTimedOff command to the TH"); + VerifyOrDo(!ShouldSkip("OO.C.C42.Tx"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + return WaitCommand(GetEndpoint(1), OnOff::Id, OnOff::Commands::OnWithTimedOff::Id); } } return CHIP_NO_ERROR; @@ -5633,98 +1899,14 @@ class Test_TC_DRLK_3_1_SimulatedSuite : public TestCommand std::unique_ptr GetTestCommand(std::string testName) { - if (testName == "Test_TC_ACT_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_ACT_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_BOOL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_BOOL_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DESC_2_2_Simulated") - { - return std::unique_ptr(new Test_TC_DESC_2_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGETH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGETH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGSW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGSW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DGWIFI_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGWIFI_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_FLW_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_FLW_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_G_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_G_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_I_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_I_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PRS_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PRS_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PSCFG_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PSCFG_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_RH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_RH_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_SWTCH_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_SWTCH_3_1_SimulatedSuite()); - } if (testName == "Test_TC_WNCV_5_1_Simulated") { 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()); - } - if (testName == "Test_TC_FLABEL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_FLABEL_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_LTIME_1_1_Simulated") - { - return std::unique_ptr(new Test_TC_LTIME_1_1_SimulatedSuite()); - } - if (testName == "Test_TC_ILL_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_ILL_3_1_SimulatedSuite()); - } if (testName == "Test_TC_DGSW_3_2_Simulated") { return std::unique_ptr(new Test_TC_DGSW_3_2_SimulatedSuite()); @@ -5769,14 +1951,6 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_CC_9_4_SimulatedSuite()); } - if (testName == "Test_TC_DGTHREAD_3_2_Simulated") - { - return std::unique_ptr(new Test_TC_DGTHREAD_3_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGTHREAD_3_3_Simulated") - { - return std::unique_ptr(new Test_TC_DGTHREAD_3_3_SimulatedSuite()); - } if (testName == "Test_TC_DGTHREAD_3_4_Simulated") { return std::unique_ptr(new Test_TC_DGTHREAD_3_4_SimulatedSuite()); @@ -5785,38 +1959,10 @@ std::unique_ptr GetTestCommand(std::string testName) { return std::unique_ptr(new Test_TC_LVL_2_3_SimulatedSuite()); } - if (testName == "Test_TC_OO_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_OO_3_1_SimulatedSuite()); - } if (testName == "Test_TC_OO_3_2_Simulated") { return std::unique_ptr(new Test_TC_OO_3_2_SimulatedSuite()); } - if (testName == "Test_TC_TSUIC_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_TSUIC_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_PCC_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_PCC_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_TMP_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_TMP_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_CC_2_2_Simulated") - { - return std::unique_ptr(new Test_TC_CC_2_2_SimulatedSuite()); - } - if (testName == "Test_TC_DGTHREAD_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DGTHREAD_3_1_SimulatedSuite()); - } - if (testName == "Test_TC_DRLK_3_1_Simulated") - { - return std::unique_ptr(new Test_TC_DRLK_3_1_SimulatedSuite()); - } return nullptr; } @@ -5824,29 +1970,8 @@ std::unique_ptr GetTestCommand(std::string testName) void PrintTestCommands() { ChipLogError(chipTool, "Supported commands:"); - ChipLogError(chipTool, "\t* Test_TC_ACT_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_BOOL_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DESC_2_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGETH_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGSW_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGWIFI_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_FLW_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_G_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_I_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PRS_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PSCFG_3_1_Simulated"); - 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"); - ChipLogError(chipTool, "\t* Test_TC_FLABEL_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_LTIME_1_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_ILL_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGSW_3_2_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGETH_3_2_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGWIFI_3_2_Simulated"); @@ -5858,16 +1983,7 @@ void PrintTestCommands() ChipLogError(chipTool, "\t* Test_TC_CC_6_4_Simulated"); ChipLogError(chipTool, "\t* Test_TC_CC_7_5_Simulated"); ChipLogError(chipTool, "\t* Test_TC_CC_9_4_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_3_Simulated"); ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_4_Simulated"); ChipLogError(chipTool, "\t* Test_TC_LVL_2_3_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_OO_3_1_Simulated"); ChipLogError(chipTool, "\t* Test_TC_OO_3_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_TSUIC_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_PCC_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_TMP_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_CC_2_2_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DGTHREAD_3_1_Simulated"); - ChipLogError(chipTool, "\t* Test_TC_DRLK_3_1_Simulated"); }