diff --git a/src/app/clusters/scenes-server/SceneTable.h b/src/app/clusters/scenes-server/SceneTable.h index 8f0353bf05da44..1b634211ead063 100644 --- a/src/app/clusters/scenes-server/SceneTable.h +++ b/src/app/clusters/scenes-server/SceneTable.h @@ -39,7 +39,7 @@ inline constexpr SceneId kUndefinedSceneId = 0xff; static constexpr size_t kIteratorsMax = CHIP_CONFIG_MAX_SCENES_CONCURRENT_ITERATORS; static constexpr size_t kSceneNameMaxLength = CHIP_CONFIG_SCENES_CLUSTER_MAXIMUM_NAME_LENGTH; -static constexpr size_t kScenesMaxTransitionTime = 6'000'000u; +static constexpr size_t kScenesMaxTransitionTime = 60'000'000u; /// @brief SceneHandlers are meant as interface between various clusters and the Scene table. /// When a scene command involving extension field sets is received, the Scene Table will go through diff --git a/src/app/clusters/scenes-server/scenes-server.cpp b/src/app/clusters/scenes-server/scenes-server.cpp index cce4a7eb754c09..94039297713bed 100644 --- a/src/app/clusters/scenes-server/scenes-server.cpp +++ b/src/app/clusters/scenes-server/scenes-server.cpp @@ -61,7 +61,15 @@ CHIP_ERROR AddResponseOnError(CommandHandlerInterface::HandlerContext & ctx, Res { if (CHIP_NO_ERROR != err) { - resp.status = to_underlying(StatusIB(err).mStatus); + // TODO : Properly fix mapping between error types (issue https://github.com/project-chip/connectedhomeip/issues/26885) + if (CHIP_ERROR_NOT_FOUND == err) + { + resp.status = to_underlying(Protocols::InteractionModel::Status::NotFound); + } + else + { + resp.status = to_underlying(StatusIB(err).mStatus); + } ctx.mCommandHandler.AddResponse(ctx.mRequestPath, resp); } return err; diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index 09d55dff5881b3..205955b9ebdeb2 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -5781,7 +5781,7 @@ PICS: - label: "Write all supported optional attributes" id: RH.C.AO-WRITE - # Scenes Cluster Test Plan + # Scenes Management Cluster Test Plan - label: "Does the device implement the Scenes cluster as a server?" id: S.S @@ -5870,11 +5870,6 @@ PICS: - label: "Does the device implement sending the CopyScene command?" id: S.C.C40.Tx - - label: - "Does the device process the TransitionTime parameter of the - RecallScene command?" - id: PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS - # # client / manually # diff --git a/src/app/tests/suites/certification/Test_TC_S_1_1.yaml b/src/app/tests/suites/certification/Test_TC_S_1_1.yaml index 9b5eb4dbb4b155..36314424458714 100644 --- a/src/app/tests/suites/certification/Test_TC_S_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_1_1.yaml @@ -110,7 +110,7 @@ tests: contains: [0, 1, 2, 3, 4, 6] - label: - "Step 7b: Read optional command(CopySceneResponse) in + "Step 7b: TH reads Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528)" PICS: S.S.C40.Rsp command: "readAttribute" 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 627bbe088f9420..d569b12d512a8a 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 @@ -28,6 +28,9 @@ config: G2: type: group_id defaultValue: 0x0002 + GI: + type: group_id + defaultValue: 0x0099 tests: - label: "Wait for the commissioned device to be retrieved" @@ -78,8 +81,9 @@ tests: value: maxScenesMinusOne / 2 - label: - "Step 0a: preparation step for using commands from Groups cluster: Add - KeySet" + "Step 0a :TH sends KeySetWrite command in the GroupKeyManagement + cluster to DUT using a key that is pre-installed on the TH. + GroupKeySet fields are as follows:" cluster: "Group Key Management" endpoint: 0 command: "KeySetWrite" @@ -99,8 +103,9 @@ tests: } - label: - "Step 0b: Preparation step for using commands from Groups cluster: - Write Group Keys" + "Step 0b: TH binds GroupIds 0x0001 and 0x0002 with GroupKeySetID + 0x01a1 in the GroupKeyMap attribute list on GroupKeyManagement cluster + by writing the GroupKeyMap attribute with two entries as follows:" cluster: "Group Key Management" endpoint: 0 command: "writeAttribute" @@ -154,7 +159,24 @@ tests: value: G1 - label: - "Step 1c: TH sends a GetSceneMembership command to DUT with the + "Step 1c: TH sends a RemoveAllScenes command to DUT with the GroupID + field set to GI (Where GI is a group currently absent from the group + table)." + PICS: S.S.C03.Rsp + command: "RemoveAllScenes" + arguments: + values: + - name: "GroupID" + value: GI + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: GI + + - label: + "Step 1d: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1." PICS: S.S.C06.Rsp command: "GetSceneMembership" @@ -172,7 +194,28 @@ tests: value: G1 - label: - "STep 2a: TH configures AC1 on DUT for all implemented application + "Step 1e: TH sends a GetSceneMembership command to DUT with the + GroupID field set to GI (Where GI is a group currently absent from the + group table)." + PICS: S.S.C06.Rsp + command: "GetSceneMembership" + arguments: + values: + - name: "GroupID" + value: GI + response: + values: + - name: "Status" + value: 0x85 + - name: "Capacity" + constraints: + anyOf: [fabricCapacity, 0xfe, null] + value: null + - name: "GroupID" + value: GI + + - label: + "Step 2a: TH configures AC1 on DUT for all implemented application clusters supporting scenes." PICS: PICS_SDK_CI_ONLY cluster: "Level Control" @@ -225,6 +268,27 @@ tests: - name: "SceneID" value: 0x01 + - label: + "Step 2c: TH sends a StoreScene command to DUT with the GroupID field + set to GI (Where GI is a group currently absent from the group table) + and the SceneID field set to 0x01." + PICS: S.S.C04.Rsp + command: "StoreScene" + arguments: + values: + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + - label: "Step 3a: TH configures AC2 on DUT for all implemented application clusters supporting scenes." @@ -369,7 +433,7 @@ tests: value: 0x01 - label: - "Step 5: TH sends a ViewScene command to DUT with the GroupID field + "Step 5a: TH sends a ViewScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01." PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY command: "ViewScene" @@ -417,7 +481,7 @@ tests: ] - label: - "Step 5: TH sends a ViewScene command to DUT with the GroupID field + "Step 5a: TH sends a ViewScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01." PICS: S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP command: "ViewScene" @@ -438,6 +502,47 @@ tests: - name: "TransitionTime" value: 0x0000 + - label: + "Step 5b: TH sends a ViewScene command to DUT with the GroupID field + set to GI (Where GI is a group currently absent from the group table) + and the SceneID field set to 0x01." + PICS: S.S.C01.Rsp + command: "ViewScene" + arguments: + values: + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + + - label: + "Step 5c: TH sends a ViewScene command to DUT with the GroupID field + set to G1 and the SceneID field set to 0xFE." + PICS: S.S.C01.Rsp + command: "ViewScene" + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0xFE + response: + values: + - name: "Status" + value: 0x8b + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0xFE + - label: "Step 6: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1." @@ -489,44 +594,15 @@ tests: value: 0x00 - name: "Capacity" constraints: - anyOf: [fabricCapacity, 0xfe, 0x89] + anyOf: [fabricCapacity, 0xfe, null] - name: "GroupID" value: G1 - label: "Step 8a: 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 7 000 000 (7 000s) and no extension field sets. This should fail - and return a status of 0x85 (INVALID_COMMAND) because we exceed the - max TransitionTime" - #TODO Add to chip-test-plan - PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY - command: "AddScene" - arguments: - values: - - name: "GroupID" - value: G1 - - name: "SceneID" - value: 0x01 - - name: "TransitionTime" - value: 7000000 - - name: "SceneName" - value: "Scene1" - - name: "ExtensionFieldSets" - value: [] - response: - values: - - name: "Status" - value: 0x85 - - name: "GroupID" - value: G1 - - name: "SceneID" - value: 0x01 - - - label: - "Step 8b: 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 1000 (1s) and a set of extension fields appropriate to AC1." + to 60 000 000 (60 000s) and a set of extension fields appropriate to + AC1." PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY command: "AddScene" arguments: @@ -536,7 +612,7 @@ tests: - name: "SceneID" value: 0x01 - name: "TransitionTime" - value: 1000 + value: 60000000 - name: "SceneName" value: "Scene1" - name: "ExtensionFieldSets" @@ -563,13 +639,12 @@ tests: value: 0x01 - label: - "Step 8b: TH sends a AddScene command to DUT with the GroupID field + "Step 8a: 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 1000 (1s) and a set of extension fields appropriate to AC1." + to 60 000 000 (60 000s) and a set of extension fields appropriate to + AC1." verification: | - Execute the following command in TH to generate the pre-condition to execute this test case: - - ./chip-tool scenes add-scene 0x0001 1 1 "Test Name" '[{"clusterId": value, "attributeValueList":[{"attributeId": value, "attributeValue": value}]}' nodeId endpointId + ./chip-tool scenes add-scene 0x0001 1 60000000 "Test Name" '[{"clusterId": value, "attributeValueList":[{"attributeId": value, "attributeValue": value}]}' nodeId endpointId Note: The number of ExtensionFieldSets, the value of clusterId of each ExtensionFieldSet, the number of attributes in attributeValueList and their values varies for each application @@ -624,6 +699,34 @@ tests: - name: "expectedValue" value: "y" + - label: + "Step 8b: TH sends a AddScene command to DUT with the GroupID field + set to GI (Where GI is a group currently absent from the group table), + the SceneID field set to 0x01, the TransitionTime field set to 1000 + (1s) and a set of extension fields appropriate to AC1." + PICS: S.S.C00.Rsp + command: "AddScene" + arguments: + values: + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + - name: "TransitionTime" + value: 1000 + - name: "SceneName" + value: "Scene1" + - name: "ExtensionFieldSets" + value: [] + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + - label: "Step 8c: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1." @@ -645,6 +748,62 @@ tests: - name: "SceneList" value: [0x01] + - label: + "Step 8d: 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 70 000 000 (70 000s) and no extension field sets. This should fail + and return a status of 0x85 (INVALID_COMMAND)." + PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY + command: "AddScene" + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x01 + - name: "TransitionTime" + value: 70000000 + - name: "SceneName" + value: "Scene1" + - name: "ExtensionFieldSets" + value: [] + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x01 + + - label: + "Step 8e: 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 60 000 001 (60 000.001s) and no extension field sets. This should + fail and return a status of 0x85 (INVALID_COMMAND)." + PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY + command: "AddScene" + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x01 + - name: "TransitionTime" + value: 60000001 + - name: "SceneName" + value: "Scene1" + - name: "ExtensionFieldSets" + value: [] + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x01 + - label: "Step 9a: TH sends a RemoveScene command to DUT with the GroupID field set to G1 and the SceneID field set to 0x01." @@ -666,7 +825,48 @@ tests: value: 0x01 - label: - "Step 9b: TH sends a GetSceneMembership command to DUT with the + "Step 9b: TH sends a RemoveScene command to DUT with the GroupID field + set to GI (Where GI is a group currently absent from the group table) + and the SceneID field set to 0x01." + PICS: S.S.C02.Rsp + command: "RemoveScene" + arguments: + values: + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupID" + value: GI + - name: "SceneID" + value: 0x01 + + - label: + "Step 9c: TH sends a RemoveScene command to DUT with the GroupID field + set to G1 and the SceneID field set to 0x01." + PICS: S.S.C02.Rsp + command: "RemoveScene" + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x01 + response: + values: + - name: "Status" + value: 0x8b + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x01 + + - label: + "Step 9d: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1." PICS: S.S.C06.Rsp command: "GetSceneMembership" 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 156bf45579e400..60d94f67442310 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,12 @@ config: G1: type: group_id defaultValue: 0x0101 + G2: + type: group_id + defaultValue: 0x0102 + GI: + type: group_id + defaultValue: 0x0099 tests: - label: "Wait for the commissioned device to be retrieved" @@ -79,10 +85,10 @@ tests: cluster to DUT using a key that is pre-installed on the TH. GroupKeySet fields are as follows: 1)GroupKeySetID: 0x01a1 2)GroupKeySecurityPolicy: TrustFirst (0) 3)EpochKey0: - d0d1d2d3d4d5d6d7d8d9dadbdcdddedf 4)EpochStartTime0: 2220000 - 5)EpochKey1: d1d1d2d3d4d5d6d7d8d9dadbdcdddedf 6)EpochStartTime1: - 2220001 7)EpochKey2: d2d1d2d3d4d5d6d7d8d9dadbdcdddedf - 8)EpochStartTime2: 2220002" + a0a1a2a3a4a5a6a7a8a9aaabacadaeaf 4)EpochStartTime0: 1110000 + 5)EpochKey1: a1a1a2a3a4a5a6a7a8a9aaabacadaeaf 6)EpochStartTime1: + 1110001 7)EpochKey2: a2a1a2a3a4a5a6a7a8a9aaabacadaeaf + 8)EpochStartTime2: 1110002" cluster: "Group Key Management" endpoint: 0 command: "KeySetWrite" @@ -101,6 +107,33 @@ tests: EpochStartTime2: 1110002, } + - label: + "Step 0b: TH sends KeySetWrite command in the GroupKeyManagement + cluster to DUT using a key that is pre-installed on the TH. + GroupKeySet fields are as follows: 1)GroupKeySetID: 0x01a2 + 2)GroupKeySecurityPolicy: TrustFirst (0) 3)EpochKey0: + d0d1d2d3d4d5d6d7d8d9dadbdcdddedf 4)EpochStartTime0: 2220000 + 5)EpochKey1: d1d1d2d3d4d5d6d7d8d9dadbdcdddedf 6)EpochStartTime1: + 2220001 7)EpochKey2: d2d1d2d3d4d5d6d7d8d9dadbdcdddedf + 8)EpochStartTime2: 2220002" + cluster: "Group Key Management" + endpoint: 0 + command: "KeySetWrite" + arguments: + values: + - name: "GroupKeySet" + value: + { + GroupKeySetID: 0x01a2, + GroupKeySecurityPolicy: 0, + EpochKey0: "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf", + EpochStartTime0: 2220000, + EpochKey1: "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef", + EpochStartTime1: 2220001, + EpochKey2: "\xf2\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", + EpochStartTime2: 2220002, + } + - label: "Step 0b: TH binds GroupId G1 with GroupKeySetID 0x01a1 in the GroupKeyMap attribute list on GroupKeyManagement cluster by writing @@ -111,7 +144,11 @@ tests: command: "writeAttribute" attribute: "GroupKeyMap" arguments: - value: [{ FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 }] + value: + [ + { FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 }, + { FabricIndex: 1, GroupId: G2, GroupKeySetID: 0x01a2 }, + ] - label: "Step 1a: TH sends a AddGroup command to DUT with the GroupID field @@ -132,6 +169,25 @@ tests: - name: "GroupID" value: G1 + - label: + "Step 1b: TH sends a AddGroup command to DUT with the GroupID field + set to G2." + PICS: G.S.C00.Rsp + cluster: "Groups" + command: "AddGroup" + arguments: + values: + - name: "GroupID" + value: G2 + - name: "GroupName" + value: "Group #2" + response: + values: + - name: "Status" + value: 0x00 + - name: "GroupID" + value: G2 + - label: "Install ACLs" cluster: "Access Control" endpoint: 0 @@ -158,7 +214,7 @@ tests: ] - label: - "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID + "Step 1c: TH sends a RemoveAllScenes command to DUT with the GroupID field set to G1." PICS: S.S.C03.Rsp command: "RemoveAllScenes" @@ -174,7 +230,23 @@ tests: value: G1 - label: - "Step 1c: TH sends a GetSceneMembership command to DUT with the + "Step 1d: TH sends a RemoveAllScenes command to DUT with the GroupID + field set to G2." + PICS: S.S.C03.Rsp + command: "RemoveAllScenes" + arguments: + values: + - name: "GroupID" + value: G2 + response: + values: + - name: "Status" + value: 0x00 + - name: "GroupID" + value: G2 + + - label: + "Step 1e: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1." PICS: S.S.C06.Rsp command: "GetSceneMembership" @@ -196,7 +268,7 @@ tests: - label: "Step 2: 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." + 1000 (1s) and a set of extension fields appropriate to AC1." PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY command: "AddScene" arguments: @@ -206,7 +278,7 @@ tests: - name: "SceneID" value: 0x01 - name: "TransitionTime" - value: 0x0001 + value: 1000 - name: "SceneName" value: "Scene1" - name: "ExtensionFieldSets" @@ -235,10 +307,8 @@ tests: - label: "Step 2: 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 - G1 and a set of extension fields appropriate to AC1." + 1000 (1s) and a set of extension fields appropriate to AC1." verification: | - Execute the following command in TH to generate the pre-condition to execute this test case: - ./chip-tool scenes add-scene GroupID SceneID TransitionTime "SceneName" '[{"clusterId": value, "attributeValueList":[{"attributeId": value, "attributeValue": value}]}' nodeId endpointId Note: The number of ExtensionFieldSets, the value of clusterId of each ExtensionFieldSet, the number of attributes in attributeValueList and their values varies for each application @@ -314,7 +384,7 @@ tests: - name: "SceneID" value: 0x01 - name: "TransitionTime" - value: 0x0001 + value: 1000 - name: "ExtensionFieldSets" value: [ @@ -335,8 +405,6 @@ tests: set to G1 and the SceneID field set to 0x01." PICS: S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP verification: | - Execute the following command in TH to generate the pre-condition to execute this test case: - ./chip-tool scenes view-scene GroupId SceneId Node-Id EndpointId Note: The number of ExtensionFieldSets, the value of clusterId of each ExtensionFieldSet, the number of attributes in attributeValueList and their values varies for each application @@ -418,8 +486,7 @@ tests: field set to G1 and the scene ID field set to 0x01." PICS: S.S.C05.Rsp command: "RecallScene" - # This value should be changed to G1 instead of 0x101 when it is supported, Issue opened here https://github.com/project-chip/connectedhomeip/issues/29637 - groupId: 0x101 + groupId: G1 arguments: values: - name: "GroupID" @@ -459,7 +526,210 @@ tests: value: "y" - label: - "Step 6a: TH sends a CopyScene command to DUT with the mode field set + "Step 6a: TH sends a AddScene command to group G1 with the GroupID + field set to G1, the SceneID field set to 0x01, the TransitionTime + field set to 1000 (1s) and a set of extension fields appropriate to + AC1." + PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY + command: "AddScene" + groupId: G1 + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + - name: "TransitionTime" + value: 1000 + - name: "SceneName" + value: "Scene1" + - name: "ExtensionFieldSets" + value: + [ + { + ClusterID: 0x0006, + AttributeValueList: + [{ AttributeID: 0x0000, AttributeValue: 0x01 }], + }, + { + ClusterID: 0x0008, + AttributeValueList: + [{ AttributeID: 0x0000, AttributeValue: 0x64 }], + }, + ] + + - label: + "Step 6a: TH sends a AddScene command to group G1 with the GroupID + field set to G1, the SceneID field set to 0x03, the TransitionTime + field set to G1 and a set of extension fields appropriate to AC1." + verification: | + ./chip-tool scenes add-scene GroupID SceneID TransitionTime "SceneName" '[{"clusterId": value, "attributeValueList":[{"attributeId": value, "attributeValue": value}]}' groupID endpointId + + Note: The number of ExtensionFieldSets, the value of clusterId of each ExtensionFieldSet, the number of attributes in attributeValueList and their values varies for each application + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + [1670970505.887060][5742:5744] CHIP:DMG: InvokeResponseMessage = + [1670970505.887118][5742:5744] CHIP:DMG: { + [1670970505.887172][5742:5744] CHIP:DMG: suppressResponse = false, + [1670970505.887231][5742:5744] CHIP:DMG: InvokeResponseIBs = + [1670970505.887307][5742:5744] CHIP:DMG: [ + [1670970505.887366][5742:5744] CHIP:DMG: InvokeResponseIB = + [1670970505.887444][5742:5744] CHIP:DMG: { + [1670970505.887507][5742:5744] CHIP:DMG: CommandDataIB = + [1670970505.887576][5742:5744] CHIP:DMG: { + [1670970505.887713][5742:5744] CHIP:DMG: CommandPathIB = + [1670970505.887804][5742:5744] CHIP:DMG: { + [1670970505.887940][5742:5744] CHIP:DMG: EndpointId = 0x1, + [1670970505.888093][5742:5744] CHIP:DMG: ClusterId = 0x5, + [1670970505.888242][5742:5744] CHIP:DMG: CommandId = 0x0, + [1670970505.888385][5742:5744] CHIP:DMG: }, + [1670970505.888692][5742:5744] CHIP:DMG: + [1670970505.888769][5742:5744] CHIP:DMG: CommandFields = + [1670970505.888852][5742:5744] CHIP:DMG: { + [1670970505.889030][5742:5744] CHIP:DMG: 0x0 = 0, + [1670970505.889183][5742:5744] CHIP:DMG: 0x1 = 1, + [1670970505.889406][5742:5744] CHIP:DMG: 0x2 = 1, + [1670970505.889515][5742:5744] CHIP:DMG: }, + [1670970505.889603][5742:5744] CHIP:DMG: }, + [1670970505.889684][5742:5744] CHIP:DMG: + [1670970505.889745][5742:5744] CHIP:DMG: }, + [1670970505.889821][5742:5744] CHIP:DMG: + [1670970505.889878][5742:5744] CHIP:DMG: ], + [1670970505.889953][5742:5744] CHIP:DMG: + [1670970505.890009][5742:5744] CHIP:DMG: InteractionModelRevision = 1 + [1670970505.890066][5742:5744] CHIP:DMG: }, + cluster: "LogCommands" + command: "UserPrompt" + PICS: S.S.C00.Rsp && PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: + "Please execute the add scene command with + extensionfieldsets in accordance with AC1 on DUT and enter + 'y' if the command is successful" + - name: "expectedValue" + value: "y" + + - label: + "Step 6b: TH sends a ViewScene command to DUT with the GroupID field + set to G1 and the SceneID field set to 0x03." + PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY + command: "ViewScene" + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + response: + values: + - name: "Status" + value: 0x00 + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + - name: "TransitionTime" + value: 1000 + - name: "ExtensionFieldSets" + value: + [ + { + ClusterID: 0x0006, + AttributeValueList: + [{ AttributeID: 0x0000, AttributeValue: 0x01 }], + }, + { + ClusterID: 0x0008, + AttributeValueList: + [{ AttributeID: 0x0000, AttributeValue: 0x64 }], + }, + ] + - label: + "Step 6b: TH sends a ViewScene command to DUT with the GroupID field + set to G1 and the SceneID field set to 0x03." + PICS: S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP + verification: | + ./chip-tool scenes view-scene GroupId SceneId Node-Id EndpointId + + Note: The number of ExtensionFieldSets, the value of clusterId of each ExtensionFieldSet, the number of attributes in attributeValueList and their values varies for each application + + Verify that the extension fields in the log match the ones expected and that + Status = 0x00 + GroupID = G1 + SceneID = 0x03 + TransitionTime = 0x03E8 + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: + "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 + successful" + - name: "expectedValue" + value: "y" + + - label: + "Step 6c: TH sends a ViewScene command to group G1 with the GroupID + field set to G1 and the SceneID field set to 0x03." + PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY + command: "ViewScene" + groupId: G1 + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + + - label: + "Step 6d: TH sends a RemoveScene command to group G1 with the GroupID + field set to G1 and the SceneID field set to 0x03." + PICS: S.S.C02.Rsp + command: "RemoveScene" + groupId: G1 + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + + - label: "Wait 1+ s to give CI time to process the RemoveScene command." + PICS: PICS_SDK_CI_ONLY + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 1250 + + - label: + "Step 6e: TH sends a ViewScene command to DUT with the GroupID field + set to G1 and the SceneID field set to 0x03." + PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY + command: "ViewScene" + arguments: + values: + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + response: + values: + - name: "Status" + value: 0x8b + - name: "GroupID" + value: G1 + - name: "SceneID" + value: 0x03 + + - label: + "Step 7a: 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." @@ -487,7 +757,64 @@ tests: value: 0x01 - label: - "Step 6b: TH sends a GetSceneMembership command to DUT with the + "Step 7b: TH sends a CopyScene command to DUT with the mode field set + to 0x00, the group identifier from field set to GI (Where GI is a + group currently absent from the group table), the scene identifier + from field set to 0x01, the group identifier to field set to GI and + the scene identifier to field set to 0x02." + PICS: S.S.C40.Rsp + command: "CopyScene" + arguments: + values: + - name: "Mode" + value: 0x00 + - name: "GroupIdentifierFrom" + value: GI + - name: "SceneIdentifierFrom" + value: 0x01 + - name: "GroupIdentifierTo" + value: GI + - name: "SceneIdentifierTo" + value: 0x02 + response: + values: + - name: "Status" + value: 0x85 + - name: "GroupIdentifierFrom" + value: GI + - name: "SceneIdentifierFrom" + value: 0x01 + + - label: + "Step 7c: 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 0xFE, the group identifier to field set + to G1 and the scene identifier to field set to 0x02." + PICS: S.S.C40.Rsp + command: "CopyScene" + arguments: + values: + - name: "Mode" + value: 0x00 + - name: "GroupIdentifierFrom" + value: G1 + - name: "SceneIdentifierFrom" + value: 0xFE + - name: "GroupIdentifierTo" + value: G1 + - name: "SceneIdentifierTo" + value: 0x02 + response: + values: + - name: "Status" + value: 0x8b + - name: "GroupIdentifierFrom" + value: G1 + - name: "SceneIdentifierFrom" + value: 0xFE + + - label: + "Step 7d: TH sends a GetSceneMembership command to DUT with the GroupID field set to G1." PICS: S.S.C06.Rsp command: "GetSceneMembership" @@ -507,7 +834,179 @@ tests: value: [0x01, 0x02] - label: - "Step 7: TH removes the Group key set that was added by sending a + "Step 8a: TH sends a CopyScene command to DUT with the mode field set + to 0x01, the group identifier from field set to G1, the scene + identifier from field set to 0x01, the group identifier to field set + to G2 and the scene identifier to field set to 0x02." + PICS: S.S.C40.Rsp + command: "CopyScene" + arguments: + values: + - name: "Mode" + value: 0x01 + - name: "GroupIdentifierFrom" + value: G1 + - name: "SceneIdentifierFrom" + value: 01 + - name: "GroupIdentifierTo" + value: G2 + - name: "SceneIdentifierTo" + value: 0x02 + response: + values: + - name: "Status" + value: 0x00 + - name: "GroupIdentifierFrom" + value: G1 + - name: "SceneIdentifierFrom" + value: 0x01 + - label: + "Step 8b: TH sends a GetSceneMembership command to DUT with the + GroupID field set to G2." + PICS: S.S.C06.Rsp + command: "GetSceneMembership" + arguments: + values: + - name: "GroupID" + value: G2 + response: + values: + - name: "Status" + value: 0x00 + - name: "Capacity" + constraints: + anyOf: [fabricCapacity - 4, 0xfe, null] + - name: "GroupID" + value: G2 + - name: "SceneList" + value: [0x01, 0x02] + + - label: + "Step 8c: TH sends a CopyScene command to group G2 with the mode field + set to 0x00, the group identifier from field set to G2, the scene + identifier from field set to 0x02, the group identifier to field set + to G2 and the scene identifier to field set to 0x03." + PICS: S.S.C40.Rsp + command: "CopyScene" + groupId: G2 + arguments: + values: + - name: "Mode" + value: 0x00 + - name: "GroupIdentifierFrom" + value: G2 + - name: "SceneIdentifierFrom" + value: 02 + - name: "GroupIdentifierTo" + value: G2 + - name: "SceneIdentifierTo" + value: 0x03 + + - label: + "Step 8d: TH sends a GetSceneMembership command to DUT with the + GroupID field set to G2." + PICS: S.S.C06.Rsp + command: "GetSceneMembership" + arguments: + values: + - name: "GroupID" + value: G2 + response: + values: + - name: "Status" + value: 0x00 + - name: "Capacity" + constraints: + anyOf: [fabricCapacity - 5, 0xfe, null] + - name: "GroupID" + value: G2 + - name: "SceneList" + value: [0x01, 0x02, 0x03] + + - label: + "Step 9a: TH sends a RemoveAllScenes command to group G1 with the + GroupID field set to G1." + PICS: S.S.C03.Rsp + command: "RemoveAllScenes" + groupId: G1 + arguments: + values: + - name: "GroupID" + value: G1 + + - label: "Wait 1+ s to give CI time to process the RemoveScene command." + PICS: PICS_SDK_CI_ONLY + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 1250 + + - label: + "Step 9b: TH sends a GetSceneMembership command to DUT with the + GroupID field set to G1." + PICS: S.S.C06.Rsp + command: "GetSceneMembership" + arguments: + values: + - name: "GroupID" + value: G1 + response: + values: + - name: "Status" + value: 0x00 + - name: "Capacity" + constraints: + anyOf: [fabricCapacity - 3, 0xfe, null] + - name: "GroupID" + value: G1 + - name: "SceneList" + value: [] + + - label: + "Step 10a: TH sends a RemoveAllScenes command to group G2 with the + GroupID field set to G2." + PICS: S.S.C03.Rsp + command: "RemoveAllScenes" + groupId: G2 + arguments: + values: + - name: "GroupID" + value: G2 + + - label: "Wait 1+ s to give CI time to process the RemoveScene command." + PICS: PICS_SDK_CI_ONLY + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 1250 + + - label: + "Step 10b: TH sends a GetSceneMembership command to DUT with the + GroupID field set to G1." + PICS: S.S.C06.Rsp + command: "GetSceneMembership" + arguments: + values: + - name: "GroupID" + value: G2 + response: + values: + - name: "Status" + value: 0x00 + - name: "Capacity" + constraints: + anyOf: [fabricCapacity, 0xfe, null] + - name: "GroupID" + value: G2 + - name: "SceneList" + value: [] + + - label: + "Step 11: 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" @@ -517,3 +1016,15 @@ tests: values: - name: GroupKeySetID value: 0x01a1 + + - label: + "Step 12: TH removes the Group key set that was added by sending a + KeySetRemove command to the GroupKeyManagement cluster with the + GroupKeySetID field set to 0x01a2" + cluster: "Group Key Management" + endpoint: 0 + command: "KeySetRemove" + arguments: + values: + - name: GroupKeySetID + value: 0x01a2 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 878637d8c2dc62..0bbf762c414925 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 @@ -76,7 +76,7 @@ tests: arguments: value: [{ FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 }] - - label: "Step 0c: TH sends a RemoveAllGroups command to DUT." + - label: "Step 1: TH sends a RemoveAllGroups command to DUT." PICS: G.S.C04.Rsp cluster: "Groups" command: "RemoveAllGroups" @@ -119,7 +119,7 @@ tests: - label: "Step 3: 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 - 0x4E20 (20s) and no extension fields set." + 20000 (20s) and no extension fields set." PICS: S.S.C00.Rsp command: "AddScene" arguments: @@ -129,7 +129,7 @@ tests: - name: "SceneID" value: 0x01 - name: "TransitionTime" - value: 0x4E20 + value: 20000 - name: "SceneName" value: "Scene1" - name: "ExtensionFieldSets" @@ -317,7 +317,7 @@ tests: Is DUT configured with AC2? cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_SKIP_SAMPLE_APP && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS + PICS: PICS_SKIP_SAMPLE_APP arguments: values: - name: "message" @@ -330,8 +330,8 @@ tests: - label: "Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field - set to 5000 (5s)." - PICS: S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS + set to 5000 5s." + PICS: S.S.C05.Rsp command: "RecallScene" arguments: values: @@ -343,7 +343,7 @@ tests: value: 5000 - label: "Wait 5s" - PICS: S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS + PICS: S.S.C05.Rsp cluster: "DelayCommands" command: "WaitForMs" arguments: @@ -352,10 +352,8 @@ tests: value: 5500 - label: - "TH confirm the DUT reached AC2 (on level control cluster) after 5s" - PICS: - S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS && - PICS_SDK_CI_ONLY + "TH confirm the DUT reached AC1 (on level control cluster) after 5s" + PICS: S.S.C05.Rsp && PICS_SDK_CI_ONLY cluster: "Level Control" command: "readAttribute" attribute: "CurrentLevel" @@ -424,6 +422,37 @@ tests: - name: "TransitionTime" value: null + - label: "Wait 20s" + PICS: S.S.C05.Rsp + cluster: "DelayCommands" + command: "WaitForMs" + arguments: + values: + - name: "ms" + value: 20500 + + - label: + "TH confirm the DUT reached AC1 (on level control cluster) after 20s" + PICS: S.S.C05.Rsp && PICS_SDK_CI_ONLY + cluster: "Level Control" + command: "readAttribute" + attribute: "CurrentLevel" + response: + value: 100 + + - label: "DUT transitions to AC2 over 20." + verification: | + Is the transition done over 20s? + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Please confirm that transition to AC2 was made over 5s" + - name: "expectedValue" + value: "y" + - label: "Step 8: TH removes the Group key set that was added by sending a KeySetRemove command to the GroupKeyManagement cluster with the diff --git a/src/app/tests/suites/certification/Test_TC_S_2_5.yaml b/src/app/tests/suites/certification/Test_TC_S_2_5.yaml index 633e362149c9d1..b8ffd365877d53 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_5.yaml @@ -104,7 +104,7 @@ tests: field set to G1." PICS: S.S.C03.Rsp verification: | - ./chip-tool scenes remove-all-scenes 0x0001 1 1 + ./chip-tool scenesmanagement remove-all-scenes 0x0001 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0003 CHIP:TOO: RemoveAllScenesResponse: { @@ -114,20 +114,79 @@ tests: disabled: true - label: "Step 4a: TH reads from the DUT the SceneTableSize attribute" - PICS: S.S.A0006 verification: | - ./chip-tool scenes read scene-table-size 1 1 + ./chip-tool scenesmanagement read scene-table-size 1 1 [1688019474.695136][1726:1728] CHIP:DMG: } [1688019474.695335][1726:1728] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Attribute 0x0000_0006 DataVersion: 1550229741 - [1688019474.695397][1726:1728] CHIP:TOO: SceneTableSize: 0 + [1688019474.695397][1726:1728] CHIP:TOO: SceneTableSize: (Default table size: 16) disabled: true - label: "Step 4b: TH sends a subscription request action for FabricSceneInfo to the DUT." - PICS: S.S.A0007 verification: | + ./chip-tool interactive start + >>> any subscribe-by-id 0x0062 0x0002 min-interval max-interval node-id endpoint + + [1706764465.493922][4438:4440] CHIP:DMG: ReportDataMessage = + [1706764465.493926][4438:4440] CHIP:DMG: { + [1706764465.493928][4438:4440] CHIP:DMG: SubscriptionId = 0x8537dfcd, + [1706764465.493931][4438:4440] CHIP:DMG: AttributeReportIBs = + [1706764465.493937][4438:4440] CHIP:DMG: [ + [1706764465.493939][4438:4440] CHIP:DMG: AttributeReportIB = + [1706764465.493944][4438:4440] CHIP:DMG: { + [1706764465.493947][4438:4440] CHIP:DMG: AttributeDataIB = + [1706764465.493949][4438:4440] CHIP:DMG: { + [1706764465.493952][4438:4440] CHIP:DMG: DataVersion = 0xec4c4ec0, + [1706764465.493955][4438:4440] CHIP:DMG: AttributePathIB = + [1706764465.493958][4438:4440] CHIP:DMG: { + [1706764465.493961][4438:4440] CHIP:DMG: Endpoint = 0x1, + [1706764465.493963][4438:4440] CHIP:DMG: Cluster = 0x62, + [1706764465.493966][4438:4440] CHIP:DMG: Attribute = 0x0000_0002, + [1706764465.493969][4438:4440] CHIP:DMG: } + [1706764465.493974][4438:4440] CHIP:DMG: + [1706764465.493979][4438:4440] CHIP:DMG: Data = [ + [1706764465.493985][4438:4440] CHIP:DMG: + [1706764465.493990][4438:4440] CHIP:DMG: { + [1706764465.493997][4438:4440] CHIP:DMG: 0x0 = 1, + [1706764465.494002][4438:4440] CHIP:DMG: 0x1 = 1, + [1706764465.494007][4438:4440] CHIP:DMG: 0x2 = 1, + [1706764465.494013][4438:4440] CHIP:DMG: 0x3 = false, + [1706764465.494018][4438:4440] CHIP:DMG: 0x4 = 6, + [1706764465.494023][4438:4440] CHIP:DMG: 0xfe = 1, + [1706764465.494029][4438:4440] CHIP:DMG: }, + [1706764465.494034][4438:4440] CHIP:DMG: ], + [1706764465.494038][4438:4440] CHIP:DMG: }, + [1706764465.494047][4438:4440] CHIP:DMG: + [1706764465.494050][4438:4440] CHIP:DMG: }, + [1706764465.494059][4438:4440] CHIP:DMG: + [1706764465.494062][4438:4440] CHIP:DMG: ], + [1706764465.494070][4438:4440] CHIP:DMG: + [1706764465.494073][4438:4440] CHIP:DMG: InteractionModelRevision = 11 + [1706764465.494077][4438:4440] CHIP:DMG: } + [1706764465.494130][4438:4440] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: 3964423872 + [1706764465.494142][4438:4440] CHIP:TOO: FabricSceneInfo: 1 entries + [1706764465.494152][4438:4440] CHIP:TOO: [1]: { + [1706764465.494155][4438:4440] CHIP:TOO: SceneCount: 1 + [1706764465.494158][4438:4440] CHIP:TOO: CurrentScene: 1 + [1706764465.494161][4438:4440] CHIP:TOO: CurrentGroup: 1 + [1706764465.494164][4438:4440] CHIP:TOO: SceneValid: FALSE + [1706764465.494167][4438:4440] CHIP:TOO: RemainingCapacity: 6 + [1706764465.494170][4438:4440] CHIP:TOO: FabricIndex: 1 + [1706764465.494174][4438:4440] CHIP:TOO: } + ... + [1706797894.367789][5179:5181] CHIP:DMG: Subscription established with SubscriptionID = 0x8537dfcd MinInterval = 0s MaxInterval = 60s Peer = 01:0000000000000001 + ... + [1706798074.365189][5179:5181] CHIP:EM: >>> [E:29283r S:30665 M:266174816] (S) Msg RX from 1:0000000000000001 [0714] --- Type 0001:05 (IM:ReportData) + [1706798074.365317][5179:5181] CHIP:EM: Handling via exchange: 29283r, Delegate: 0xaaaacccf2a88 + [1706798074.365449][5179:5181] CHIP:DMG: ReportDataMessage = + [1706798074.365517][5179:5181] CHIP:DMG: { + [1706798074.365576][5179:5181] CHIP:DMG: SubscriptionId = 0x8537dfcd, + [1706798074.365638][5179:5181] CHIP:DMG: InteractionModelRevision = 11 + [1706798074.365696][5179:5181] CHIP:DMG: } + [1706798074.365883][5179:5181] CHIP:DMG: Refresh LivenessCheckTime for 64224 milliseconds with SubscriptionId = 0x85 + 37dfcd Peer = 01:0000000000000001 disabled: true @@ -135,16 +194,19 @@ tests: "Step 4c: Keep subscription session active for the remainder of the test" verification: | + Confirm that the subscription session is active for the remainder of the test by the reception of Liveness checks: + + [1706798074.365883][5179:5181] CHIP:DMG: Refresh LivenessCheckTime for 64224 milliseconds with SubscriptionId = 0x8537dfcd Peer = 01:0000000000000001 disabled: true - label: "Step 5a: 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 0x0014 (20s) and no extension field sets." + to 20000 (20s) and no extension field sets." PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0001 0x1 0x0014 scene1 [] 1 1 + ./chip-tool scenesmanagement add-scene 0x0001 0x1 20000 scene1 [] 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { @@ -155,12 +217,59 @@ tests: disabled: true - label: - "Step 5b: Verify that the DUT sends a report data for - RemainingCapacity after the MinIntervalFloor time; store this value - into RemainingCapacity; verify RemainingCapacity equals + "Step 5b: Verify that the DUT sends a report data for FabricSceneInfo + after the MinIntervalFloor time; store the RemainingCapacity field + from this fabric’s entry reported in FabricSceneInfo into + RemainingCapacity; verify RemainingCapacity equals (MaxRemainingCapacity-1)." - PICS: S.S.A0007 verification: | + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0x8537dfcd, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb45d, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 1, + CHIP:DMG: 0x1 = 0, + CHIP:DMG: 0x2 = 0, + CHIP:DMG: 0x3 = false, + CHIP:DMG: 0x4 = 6, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 1 + CHIP:TOO: CurrentScene: 0 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 6 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0x8537dfcd Peer = 01:0000000000000001 disabled: true @@ -171,7 +280,7 @@ tests: 8a." PICS: S.S.C04.Rsp verification: | - ./chip-tool scenes add-scene 0x0001 0x2 0x0014 scene2 [] 1 1 + ./chip-tool scenesmanagement store-scene 0x0001 0x2 20000 scene2 [] 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { @@ -182,33 +291,125 @@ tests: disabled: true - label: - "Step 6b: Verify that the DUT sends a report data for - RemainingCapacity after the MinIntervalFloor time; store this value - into RemainingCapacity; verify RemainingCapacity equals + "Step 6b: Verify that the DUT sends a report data for FabricSceneInfo + after the MinIntervalFloor time; store the RemainingCapacity field + from this fabric’s entry reported in FabricSceneInfo into + RemainingCapacity; verify RemainingCapacity equals (MaxRemainingCapacity-2)." - PICS: S.S.A0007 verification: | - + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0x8537dfcd, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb45d, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 2, + CHIP:DMG: 0x1 = 2, + CHIP:DMG: 0x2 = 1, + CHIP:DMG: 0x3 = true, + CHIP:DMG: 0x4 = 5, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 2 + CHIP:TOO: CurrentScene: 2 + CHIP:TOO: CurrentGroup: 1 + CHIP:TOO: SceneValid: TRUE + CHIP:TOO: RemainingCapacity: 5 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0x8537dfcd Peer = 01:0000000000000001 disabled: true - label: "Step 7a: If RemainingCapacity is greater than 0, TH sends a AddScene command to DUT with the GroupID field set to G1, the SceneID field set - to 0x03, the TransitionTime field set to 0x0014 (20s) and no extension + to 0x03, the TransitionTime field set to 20000 (20s) and no extension field sets. If RemainingCapacity is 0, continue to Step 8a." PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0001 0x3 0x0014 scene3 [] 1 1 + ./chip-tool scenesmanagement add-scene 0x0001 0x3 20000 scene3 [] 1 1 disabled: true - label: - "Step 7b: Verify that the DUT sends a report data for - RemainingCapacity after the MinIntervalFloor time; store this value - into RemainingCapacity; verify RemainingCapacity equals + "Step 7b: Verify that the DUT sends a report data for FabricSceneInfo + after the MinIntervalFloor time; store the RemainingCapacity field + from this fabric’s entry reported in FabricSceneInfo into + RemainingCapacity; verify RemainingCapacity equals (MaxRemainingCapacity-3)." - PICS: S.S.A0007 verification: | - + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0x8537dfcd, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb45d, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 3, + CHIP:DMG: 0x1 = 2, + CHIP:DMG: 0x2 = 1, + CHIP:DMG: 0x3 = true, + CHIP:DMG: 0x4 = 4, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 3 + CHIP:TOO: CurrentScene: 2 + CHIP:TOO: CurrentGroup: 1 + CHIP:TOO: SceneValid: TRUE + CHIP:TOO: RemainingCapacity: 4 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0x8537dfcd Peer = 01:0000000000000001 disabled: true - label: @@ -216,7 +417,7 @@ tests: set to G1 and the SceneID field set to 0x01." PICS: S.S.C02.Rsp verification: | - ./chip-tool scenes remove-scene 0x0001 0x1 1 1 + ./chip-tool scenesmanagement remove-scene 0x0001 0x1 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0002 CHIP:TOO: RemoveSceneResponse: { @@ -227,13 +428,59 @@ tests: disabled: true - label: - "Step 8b: Verify that the DUT sends a report data for - RemainingCapacity after the MinIntervalFloor time; store this value - into RemainingCapacity; verify RemainingCapacity equals + "Step 8b: Verify that the DUT sends a report data for FabricSceneInfo + after the MinIntervalFloor time; store the RemainingCapacity field + from this fabric’s entry reported in FabricSceneInfo into + RemainingCapacity; verify RemainingCapacity equals (MaxRemainingCapacity-2)." - PICS: S.S.A0007 verification: | - + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0x8537dfcd, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb45d, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 2, + CHIP:DMG: 0x1 = 2, + CHIP:DMG: 0x2 = 1, + CHIP:DMG: 0x3 = true, + CHIP:DMG: 0x4 = 5, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 2 + CHIP:TOO: CurrentScene: 2 + CHIP:TOO: CurrentGroup: 1 + CHIP:TOO: SceneValid: TRUE + CHIP:TOO: RemainingCapacity: 5 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0x8537dfcd Peer = 01:0000000000000001 disabled: true - label: @@ -241,7 +488,7 @@ tests: field set to G1." PICS: S.S.C03.Rsp verification: | - ./chip-tool scenes remove-all-scenes 0x0001 1 1 + ./chip-tool scenesmanagement remove-all-scenes 0x0001 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0003 CHIP:TOO: RemoveAllScenesResponse: { @@ -251,13 +498,59 @@ tests: disabled: true - label: - "Step 9b: Verify that the DUT sends a report data for - RemainingCapacity after the MinIntervalFloor time; store this value - into RemainingCapacity; verify RemainingCapacity equals + "Step 9b: Verify that the DUT sends a report data for FabricSceneInfo + after the MinIntervalFloor time; store the RemainingCapacity field + from this fabric’s entry reported in FabricSceneInfo into + RemainingCapacity; verify RemainingCapacity equals (MaxRemainingCapacity)." - PICS: S.S.A0007 verification: | - + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0x8537dfcd, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb45d, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 0, + CHIP:DMG: 0x1 = 2, + CHIP:DMG: 0x2 = 1, + CHIP:DMG: 0x3 = false, + CHIP:DMG: 0x4 = 7, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 0 + CHIP:TOO: CurrentScene: 2 + CHIP:TOO: CurrentGroup: 1 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 7 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0x8537dfcd Peer = 01:0000000000000001 disabled: true - label: diff --git a/src/app/tests/suites/certification/Test_TC_S_2_6.yaml b/src/app/tests/suites/certification/Test_TC_S_2_6.yaml index 14731c4692a6cf..2d5e5cf0df2b99 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_6.yaml @@ -39,7 +39,7 @@ tests: field set to 0x0000." PICS: S.S.C03.Rsp verification: | - ./chip-tool scenes remove-all-scenes 0x0000 1 1 + ./chip-tool scenesmanagement remove-all-scenes 0x0000 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0003 CHIP:TOO: RemoveAllScenesResponse: { @@ -51,14 +51,13 @@ tests: - label: "Step 1b: Repeat Step 1a with TH2 and TH3." PICS: S.S.C03.Rsp verification: | - ./chip-tool scenes remove-all-scenes 0x0000 2 1 --commissioner-name beta - ./chip-tool scenes remove-all-scenes 0x0000 3 1 --commissioner-name gamma + ./chip-tool scenesmanagement remove-all-scenes 0x0000 2 1 --commissioner-name beta + ./chip-tool scenesmanagement remove-all-scenes 0x0000 3 1 --commissioner-name gamma disabled: true - label: "Step 2a: TH1 reads from the DUT the SceneTableSize attribute" - PICS: S.S.A0006 verification: | - ./chip-tool scenes read scene-table-size 1 1 + ./chip-tool scenesmanagement read scene-table-size 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Attribute 0x0000_0006 DataVersion: 2793536935 CHIP:TOO: SceneTableSize: 16 @@ -67,8 +66,56 @@ tests: - label: "Step 2b: TH1 sends a subscription request action for FabricSceneInfo to the DUT." - PICS: S.S.A0007 verification: | + ./chipt-tool interactive start + any subscribe-by-id 0x0062 0x0002 0 5 1 1 + + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0xce6a96bc, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb46c, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 0, + CHIP:DMG: 0x1 = 0, + CHIP:DMG: 0x2 = 0, + CHIP:DMG: 0x3 = false, + CHIP:DMG: 0x4 = 7, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: 2464986220 + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 0 + CHIP:TOO: CurrentScene: 0 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 7 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } disabled: true @@ -76,26 +123,52 @@ tests: "Step 2c: Keep subscription session active for the remaining of the test" verification: | + Confirm that the subscription session is active for the remainder of the test by the reception of Liveness checks: + CHIP:EM: >>> [E:44665r S:45698 M:201545516] (S) Msg RX from 1:0000000000000001 [1042] --- Type 0001:05 (IM:ReportData) + CHIP:EM: Handling via exchange: 44665r, Delegate: 0xaaaaea044808 + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0xce6a96bc, + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0xce6a96bc Peer = 01:0000000000000001 disabled: true - label: "Step 2d: Repeat Step 2b and 2c with TH2 and TH3" verification: | TH2: CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Attribute 0x0000_0007 DataVersion: 2793536968 - CHIP:TOO: RemainingCapacity: 8 + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 0 + CHIP:TOO: CurrentScene: 0 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 7 + CHIP:TOO: FabricIndex: 2 + CHIP:TOO: } + TH3: CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Attribute 0x0000_0007 DataVersion: 2793536968 - CHIP:TOO: RemainingCapacity: 8 + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 0 + CHIP:TOO: CurrentScene: 0 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 7 + CHIP:TOO: FabricIndex: 3 + CHIP:TOO: } disabled: true - label: "Step 3a: TH1 sends a AddScene command to DUT with the GroupID field set to 0x0000, the SceneID field set to 0x01, the TransitionTime field - set to 0x0014 (20s) and no extension field sets." + set to 20000 (20s) and no extension field sets." PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0000 0x1 0x0014 scene1 [] 1 1 + ./chip-tool scenesmanagement add-scene 0x0000 0x1 20000 scene1 [] 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { @@ -111,9 +184,54 @@ tests: RemainingCapacity field from this fabric’s entry reported in FabricSceneInfo into Remaining1stCapacity; verify Remaining1stCapacity equals (MaxRemainingCapacity-1)." - PICS: S.S.A0007 verification: | - + Confirm that a report data message is received with the updated data: + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0xce6a96bc, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb46e, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 1, + CHIP:DMG: 0x1 = 0, + CHIP:DMG: 0x2 = 0, + CHIP:DMG: 0x3 = false, + CHIP:DMG: 0x4 = 6, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: 2464986222 + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 0 + CHIP:TOO: CurrentScene: 0 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 6 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } disabled: true - label: @@ -122,44 +240,73 @@ tests: Remaining1stCapacity more times until reported value to TH1 (after MinIntervalFloor) for RemainingCapacity field from FabricSceneInfo becomes 0." - PICS: S.S.C00.Rsp && S.S.A0007 + PICS: S.S.C00.Rsp verification: | + ./chip-tool scenesmanagement add-scene 0x0000 0x02 20000 scene2 [] 1 1 + + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 + CHIP:TOO: AddSceneResponse: { + CHIP:TOO: status: 0 + CHIP:TOO: groupID: 0 + CHIP:TOO: sceneID: 2 + CHIP:TOO: } + . + . + . + ./chip-tool scenesmanagement add-scene 0x0000 0x07 20000 scene2 [] 1 1 + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 + CHIP:TOO: AddSceneResponse: { + CHIP:TOO: status: 0 + CHIP:TOO: groupID: 0 + CHIP:TOO: sceneID: 7 + CHIP:TOO: } + + You should see the following data in the next report: + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 7 + CHIP:TOO: CurrentScene: 0 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 0 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } disabled: true - label: "Step 4b: TH1 sends a AddScene command to DUT with the GroupID field set to 0x0000, the SceneID field set to 1 more than last value used in - step 4a, the TransitionTime field set to 0x0014 (20s) and no extension + step 4a, the TransitionTime field set to 20000 (20s) and no extension field sets." PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0000 0x10 0x0014 scene101 [] 1 1 + ./chip-tool scenesmanagement add-scene 0x0000 0x08 20000 scene101 [] 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { CHIP:TOO: status: 137 CHIP:TOO: groupID: 0 - CHIP:TOO: sceneID: 16 + CHIP:TOO: sceneID: 8 CHIP:TOO: } disabled: true - label: "Step 5a: Repeat Step 4a with TH2" - PICS: S.S.C00.Rsp && S.S.A0007 + PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0000 0x1 0x0014 scene1 [] 2 1 --commissioner-name beta + ./chip-tool scenesmanagement add-scene 0x0000 0x2 20000 scene1 [] 2 1 --commissioner-name beta CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { CHIP:TOO: status: 0 CHIP:TOO: groupID: 0 - CHIP:TOO: sceneID: 1 + CHIP:TOO: sceneID: 2 CHIP:TOO: } disabled: true - label: "Step 5b: Repeat Step 4b with TH2" PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0000 0x11 0x0014 scene201 [] 2 1 --commissioner-name beta + ./chip-tool scenesmanagement add-scene 0x0000 0x11 20000 scene201 [] 2 1 --commissioner-name beta CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { @@ -169,28 +316,72 @@ tests: CHIP:TOO: } disabled: true + - label: "Step 6a: Repeat Step 4a with TH3" + PICS: S.S.C00.Rsp + verification: | + ./chip-tool scenesmanagement add-scene 0x0000 0x3 20000 scene1 [] 2 1 --commissioner-name gamma + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 + CHIP:TOO: AddSceneResponse: { + CHIP:TOO: status: 0 + CHIP:TOO: groupID: 0 + CHIP:TOO: sceneID: 3 + CHIP:TOO: } + disabled: true + - label: - "Step 6: TH3 sends a AddScene command to DUT with the GroupID field + "Step 6b: TH3 sends a AddScene command to DUT with the GroupID field set to 0x0000, the SceneID field set to 0x01, the TransitionTime field - set to 0x0014 (20s) and no extension field sets." + set to 20000 20s and no extension field sets." PICS: S.S.C00.Rsp verification: | - ./chip-tool scenes add-scene 0x0000 0x12 0x0014 scene301 [] 3 1 --commissioner-name gamma + ./chip-tool scenesmanagement add-scene 0x0000 0x01 20000 scene301 [] 3 1 --commissioner-name gamma CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000 CHIP:TOO: AddSceneResponse: { CHIP:TOO: status: 137 CHIP:TOO: groupID: 0 - CHIP:TOO: sceneID: 18 + CHIP:TOO: sceneID: 1 + CHIP:TOO: } + disabled: true + + - label: + "Step 7: TH3 sends a StoreScene command to DUT with the GroupID field + set to 0x0000, the SceneID field set to 0x01." + PICS: S.S.C04.Rsp + verification: | + ./chip-tool scenesmanagement store-scene 0x0000 0xFE 20000 sceneFE [] 1 1 + + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0004 + CHIP:TOO: StoreSceneResponse: { + CHIP:TOO: status: 137 + CHIP:TOO: groupID: 0 + CHIP:TOO: sceneID: 0xFE CHIP:TOO: } disabled: true - label: - "Step 7a: TH1 sends a RemoveAllScenes command to DUT with the GroupID + "TH sends a CopyScene command to DUT with the mode field set to 0x00, + the group identifier from field set to 0x0000, the scene identifier + from field set to 0x01, the group identifier to field set to 0x0000 + and the scene identifier to field set to 0xFE." + PICS: S.S.C40.Rsp + verification: | + ./chip-tool scenesmanagement copy-scene 0 0x0000 0x01 0x4E20 sceneFE [] 1 1 + + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0040 + CHIP:TOO: CopySceneResponse: { + CHIP:TOO: status: 137 + CHIP:TOO: groupID: 0 + CHIP:TOO: sceneID: 0xFE + CHIP:TOO: } + disabled: true + + - label: + "Step 9a: TH1 sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0000." PICS: S.S.C03.Rsp verification: | - ./chip-tool scenes remove-all-scenes 0x0000 1 1 + ./chip-tool scenesmanagement remove-all-scenes 0x0000 1 1 CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0003 CHIP:TOO: RemoveAllScenesResponse: { @@ -199,13 +390,16 @@ tests: CHIP:TOO: } disabled: true - - label: - "Step 7b: Verify that the DUT sends a report data to TH1 for + - label: "Step 9b: Verify that the DUT sends a report data to TH1 for FabricSceneInfo after the MinIntervalFloor time; store the - RemainingCapacity field from this fabrics entry the reported in + RemainingCapacity field from this fabric’s entry the reported in FabricSceneInfo into Remaining1stCapacity; verify Remaining1stCapacity - equals (MaxRemainingCapacity)." - PICS: S.S.A0007 + equals (MaxRemainingCapacity). + + Verify that the DUT does not send report data to TH2 for + FabricSceneInfo after the MinIntervalFloor time with updated value (it + should send 'empty' report data since there is no update for this + attribute for TH2)." verification: | CHIP:DMG: ReportDataMessage = CHIP:DMG: { @@ -215,11 +409,11 @@ tests: disabled: true - label: - "Step 8a: TH2 sends a RemoveAllScenes command to DUT with the GroupID + "Step 10a: TH2 sends a RemoveAllScenes command to DUT with the GroupID field set to 0x0000." PICS: S.S.C03.Rsp verification: | - ./chip-tool scenes remove-all-scenes 0x0000 2 1 --commissioner-name beta + ./chip-tool scenesmanagement remove-all-scenes 0x0000 2 1 --commissioner-name beta CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0003 CHIP:TOO: RemoveAllScenesResponse: { @@ -229,11 +423,57 @@ tests: disabled: true - label: - "Step 8b: Verify that the DUT sends a report data to TH2 for - RemainingCapacity after the MinIntervalFloor time; store this value - into RemainingCapacity2; verify RemainingCapacity2 equals - (MaxRemainingCapacity)." - PICS: S.S.A0007 + Verify that the DUT sends a report data to TH2 for FabricSceneInfo + after the MinIntervalFloor time; store the RemainingCapacity field + from this fabric’s entry reported in FabricSceneInfo into + Remaining2ndCapacity; verify Remaining2ndCapacity equals + (MaxRemainingCapacity). verification: | - + CHIP:DMG: ReportDataMessage = + CHIP:DMG: { + CHIP:DMG: SubscriptionId = 0x7049d607, + CHIP:DMG: AttributeReportIBs = + CHIP:DMG: [ + CHIP:DMG: AttributeReportIB = + CHIP:DMG: { + CHIP:DMG: AttributeDataIB = + CHIP:DMG: { + CHIP:DMG: DataVersion = 0x92ecb45d, + CHIP:DMG: AttributePathIB = + CHIP:DMG: { + CHIP:DMG: Endpoint = 0x1, + CHIP:DMG: Cluster = 0x62, + CHIP:DMG: Attribute = 0x0000_0002, + CHIP:DMG: } + CHIP:DMG: + CHIP:DMG: Data = [ + CHIP:DMG: + CHIP:DMG: { + CHIP:DMG: 0x0 = 4, + CHIP:DMG: 0x1 = 4, + CHIP:DMG: 0x2 = 0, + CHIP:DMG: 0x3 = false, + CHIP:DMG: 0x4 = 3, + CHIP:DMG: 0xfe = 1, + CHIP:DMG: }, + CHIP:DMG: ], + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: }, + CHIP:DMG: + CHIP:DMG: ], + CHIP:DMG: + CHIP:DMG: InteractionModelRevision = 11 + CHIP:DMG: } + CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0062 Attribute 0x0000_0002 DataVersion: 2464986205 + CHIP:TOO: FabricSceneInfo: 1 entries + CHIP:TOO: [1]: { + CHIP:TOO: SceneCount: 4 + CHIP:TOO: CurrentScene: 4 + CHIP:TOO: CurrentGroup: 0 + CHIP:TOO: SceneValid: FALSE + CHIP:TOO: RemainingCapacity: 7 + CHIP:TOO: FabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: Refresh LivenessCheckTime for 9224 milliseconds with SubscriptionId = 0x7049d607 Peer = 01:0000000000000001 disabled: true diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 907b0024709c4c..465041b9f9af73 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -679,7 +679,6 @@ S.S.C40.Rsp=1 S.S.AM=0 S.S.AO=0 S.S.F00=1 -PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS=1 S.C=0 S.C.C00.Tx=0 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 c801864f724f3b..63fa2eca49121c 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -189579,12 +189579,12 @@ class Test_TC_S_1_1 : public TestCommandBridge { err = TestStep7aThReadsFromTheDutTheGeneratedCommandListAttribute_8(); break; case 9: - ChipLogProgress(chipTool, " ***** Test Step 9 : Step 7b: Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528)\n"); + ChipLogProgress(chipTool, " ***** Test Step 9 : Step 7b: TH reads Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528)\n"); if (ShouldSkip("S.S.C40.Rsp")) { NextTest(); return; } - err = TestStep7bReadOptionalCommandCopySceneResponseInGeneratedCommandListGlobalAttribute65528_9(); + err = TestStep7bThReadsReadOptionalCommandCopySceneResponseInGeneratedCommandListGlobalAttribute65528_9(); break; } @@ -189844,7 +189844,7 @@ class Test_TC_S_1_1 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep7bReadOptionalCommandCopySceneResponseInGeneratedCommandListGlobalAttribute65528_9() + CHIP_ERROR TestStep7bThReadsReadOptionalCommandCopySceneResponseInGeneratedCommandListGlobalAttribute65528_9() { MTRBaseDevice * device = GetDevice("alpha"); @@ -189853,9 +189853,9 @@ class Test_TC_S_1_1 : public TestCommandBridge { [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { if (err != nil) { - NSLog(@"Step 7b: Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528): Error: %@", err); + NSLog(@"Step 7b: TH reads Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528): Error: %@", err); } else { - NSLog(@"Step 7b: Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528): Success"); + NSLog(@"Step 7b: TH reads Read optional command(CopySceneResponse) in GeneratedCommandList (global attribute 65528): Success"); } VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -190116,12 +190116,12 @@ class Test_TC_S_2_4 : public TestCommandBridge { err = TestStep0bThBindsGroupId0x0001WithGroupKeySetID0x01a1InTheGroupKeyMapAttributeListOnGroupKeyManagementClusterByWritingTheGroupKeyMapAttributeWithOneEntryAsFollowsListItem11FabricIndex12GroupId0x00013GroupKeySetId0x01a1_2(); break; case 3: - ChipLogProgress(chipTool, " ***** Test Step 3 : Step 0c: TH sends a RemoveAllGroups command to DUT.\n"); + ChipLogProgress(chipTool, " ***** Test Step 3 : Step 1: TH sends a RemoveAllGroups command to DUT.\n"); if (ShouldSkip("G.S.C04.Rsp")) { NextTest(); return; } - err = TestStep0cThSendsARemoveAllGroupsCommandToDut_3(); + err = TestStep1ThSendsARemoveAllGroupsCommandToDut_3(); break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Step 2a: TH sends a AddGroup command to DUT with the GroupID field set to G1.\n"); @@ -190140,12 +190140,12 @@ class Test_TC_S_2_4 : public TestCommandBridge { err = TestStep2bThSendsARemoveAllScenesCommandToDutWithTheGroupIDFieldSetToG1_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : Step 3: 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 0x4E20 (20s) and no extension fields set.\n"); + ChipLogProgress(chipTool, " ***** Test Step 6 : Step 3: 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 20000 (20s) and no extension fields set.\n"); if (ShouldSkip("S.S.C00.Rsp")) { NextTest(); return; } - err = TestStep3ThSendsAAddSceneCommandToDutWithTheGroupIDFieldSetToG1TheSceneIDFieldSetTo0x01TheTransitionTimeFieldSetTo0x4E2020sAndNoExtensionFieldsSet_6(); + err = TestStep3ThSendsAAddSceneCommandToDutWithTheGroupIDFieldSetToG1TheSceneIDFieldSetTo0x01TheTransitionTimeFieldSetTo2000020sAndNoExtensionFieldsSet_6(); break; case 7: ChipLogProgress(chipTool, " ***** Test Step 7 : Step 4a: TH configures AC1 on DUT for all implemented application clusters supporting scenes.\n"); @@ -190237,15 +190237,15 @@ class Test_TC_S_2_4 : public TestCommandBridge { break; case 19: ChipLogProgress(chipTool, " ***** Test Step 19 : Step 6a: TH configures AC2 on DUT for all implemented application clusters supporting scenes.\n"); - if (ShouldSkip("PICS_SKIP_SAMPLE_APP && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS")) { + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { NextTest(); return; } err = TestStep6aThConfiguresAc2OnDutForAllImplementedApplicationClustersSupportingScenes_19(); break; case 20: - ChipLogProgress(chipTool, " ***** Test Step 20 : Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field set to 5000 (5s).\n"); - if (ShouldSkip("S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS")) { + ChipLogProgress(chipTool, " ***** Test Step 20 : Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field set to 5000 5s.\n"); + if (ShouldSkip("S.S.C05.Rsp")) { NextTest(); return; } @@ -190253,19 +190253,19 @@ class Test_TC_S_2_4 : public TestCommandBridge { break; case 21: ChipLogProgress(chipTool, " ***** Test Step 21 : Wait 5s\n"); - if (ShouldSkip("S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS")) { + if (ShouldSkip("S.S.C05.Rsp")) { NextTest(); return; } err = TestWait5s_21(); break; case 22: - ChipLogProgress(chipTool, " ***** Test Step 22 : TH confirm the DUT reached AC2 (on level control cluster) after 5s\n"); - if (ShouldSkip("S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME_MS && PICS_SDK_CI_ONLY")) { + ChipLogProgress(chipTool, " ***** Test Step 22 : TH confirm the DUT reached AC1 (on level control cluster) after 5s\n"); + if (ShouldSkip("S.S.C05.Rsp && PICS_SDK_CI_ONLY")) { NextTest(); return; } - err = TestThConfirmTheDutReachedAc2OnLevelControlClusterAfter5s_22(); + err = TestThConfirmTheDutReachedAc1OnLevelControlClusterAfter5s_22(); break; case 23: ChipLogProgress(chipTool, " ***** Test Step 23 : DUT transitions to AC1 over 5.\n"); @@ -190300,8 +190300,32 @@ class Test_TC_S_2_4 : public TestCommandBridge { err = TestStep7bThSendsARecallSceneCommandToDutWithTheGroupIDFieldSetToG1TheSceneIDFieldSetTo0x01AndTheTransitionTimeFieldSetToNullNoTransitionTimeOverride_26(); break; case 27: - ChipLogProgress(chipTool, " ***** Test Step 27 : 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\n"); - err = TestStep8ThRemovesTheGroupKeySetThatWasAddedBySendingAKeySetRemoveCommandToTheGroupKeyManagementClusterWithTheGroupKeySetIDFieldSetTo0x01a1_27(); + ChipLogProgress(chipTool, " ***** Test Step 27 : Wait 20s\n"); + if (ShouldSkip("S.S.C05.Rsp")) { + NextTest(); + return; + } + err = TestWait20s_27(); + break; + case 28: + ChipLogProgress(chipTool, " ***** Test Step 28 : TH confirm the DUT reached AC1 (on level control cluster) after 20s\n"); + if (ShouldSkip("S.S.C05.Rsp && PICS_SDK_CI_ONLY")) { + NextTest(); + return; + } + err = TestThConfirmTheDutReachedAc1OnLevelControlClusterAfter20s_28(); + break; + case 29: + ChipLogProgress(chipTool, " ***** Test Step 29 : DUT transitions to AC2 over 20.\n"); + if (ShouldSkip("PICS_SKIP_SAMPLE_APP")) { + NextTest(); + return; + } + err = TestDutTransitionsToAc2Over20_29(); + break; + case 30: + ChipLogProgress(chipTool, " ***** Test Step 30 : 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\n"); + err = TestStep8ThRemovesTheGroupKeySetThatWasAddedBySendingAKeySetRemoveCommandToTheGroupKeyManagementClusterWithTheGroupKeySetIDFieldSetTo0x01a1_30(); break; } @@ -190398,6 +190422,15 @@ class Test_TC_S_2_4 : public TestCommandBridge { 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; } // Go on to the next test. @@ -190408,7 +190441,7 @@ class Test_TC_S_2_4 : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 28; + const uint16_t mTestCount = 31; chip::Optional mNodeId; chip::Optional mCluster; @@ -190500,7 +190533,7 @@ class Test_TC_S_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep0cThSendsARemoveAllGroupsCommandToDut_3() + CHIP_ERROR TestStep1ThSendsARemoveAllGroupsCommandToDut_3() { MTRBaseDevice * device = GetDevice("alpha"); @@ -190510,9 +190543,9 @@ class Test_TC_S_2_4 : public TestCommandBridge { [cluster removeAllGroupsWithCompletion: ^(NSError * _Nullable err) { if (err != nil) { - NSLog(@"Step 0c: TH sends a RemoveAllGroups command to DUT.: Error: %@", err); + NSLog(@"Step 1: TH sends a RemoveAllGroups command to DUT.: Error: %@", err); } else { - NSLog(@"Step 0c: TH sends a RemoveAllGroups command to DUT.: Success"); + NSLog(@"Step 1: TH sends a RemoveAllGroups command to DUT.: Success"); } VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -190594,7 +190627,7 @@ class Test_TC_S_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep3ThSendsAAddSceneCommandToDutWithTheGroupIDFieldSetToG1TheSceneIDFieldSetTo0x01TheTransitionTimeFieldSetTo0x4E2020sAndNoExtensionFieldsSet_6() + CHIP_ERROR TestStep3ThSendsAAddSceneCommandToDutWithTheGroupIDFieldSetToG1TheSceneIDFieldSetTo0x01TheTransitionTimeFieldSetTo2000020sAndNoExtensionFieldsSet_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -190615,9 +190648,9 @@ class Test_TC_S_2_4 : public TestCommandBridge { [cluster addSceneWithParams:params completion: ^(MTRScenesManagementClusterAddSceneResponseParams * _Nullable values, NSError * _Nullable err) { if (err != nil) { - NSLog(@"Step 3: 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 0x4E20 (20s) and no extension fields set.: Error: %@", err); + NSLog(@"Step 3: 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 20000 (20s) and no extension fields set.: Error: %@", err); } else { - NSLog(@"Step 3: 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 0x4E20 (20s) and no extension fields set.: Success"); + NSLog(@"Step 3: 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 20000 (20s) and no extension fields set.: Success"); } VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -190936,9 +190969,9 @@ class Test_TC_S_2_4 : public TestCommandBridge { [cluster recallSceneWithParams:params completion: ^(NSError * _Nullable err) { if (err != nil) { - NSLog(@"Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field set to 5000 (5s).: Error: %@", err); + NSLog(@"Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field set to 5000 5s.: Error: %@", err); } else { - NSLog(@"Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field set to 5000 (5s).: Success"); + NSLog(@"Step 6b: TH sends a RecallScene command to DUT with the GroupID field set to G1, the SceneID field set to 0x01 and the TransitionTime field set to 5000 5s.: Success"); } VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -190957,7 +190990,7 @@ class Test_TC_S_2_4 : public TestCommandBridge { return WaitForMs("alpha", value); } - CHIP_ERROR TestThConfirmTheDutReachedAc2OnLevelControlClusterAfter5s_22() + CHIP_ERROR TestThConfirmTheDutReachedAc1OnLevelControlClusterAfter5s_22() { MTRBaseDevice * device = GetDevice("alpha"); @@ -190966,9 +190999,9 @@ class Test_TC_S_2_4 : public TestCommandBridge { [cluster readAttributeCurrentLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { if (err != nil) { - NSLog(@"TH confirm the DUT reached AC2 (on level control cluster) after 5s: Error: %@", err); + NSLog(@"TH confirm the DUT reached AC1 (on level control cluster) after 5s: Error: %@", err); } else { - NSLog(@"TH confirm the DUT reached AC2 (on level control cluster) after 5s: Success"); + NSLog(@"TH confirm the DUT reached AC1 (on level control cluster) after 5s: Success"); } VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); @@ -191065,7 +191098,53 @@ class Test_TC_S_2_4 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestStep8ThRemovesTheGroupKeySetThatWasAddedBySendingAKeySetRemoveCommandToTheGroupKeyManagementClusterWithTheGroupKeySetIDFieldSetTo0x01a1_27() + CHIP_ERROR TestWait20s_27() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForMs::Type value; + value.ms = 20500UL; + return WaitForMs("alpha", value); + } + + CHIP_ERROR TestThConfirmTheDutReachedAc1OnLevelControlClusterAfter20s_28() + { + + MTRBaseDevice * device = GetDevice("alpha"); + __auto_type * cluster = [[MTRBaseClusterLevelControl alloc] initWithDevice:device endpointID:@(1) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeCurrentLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + if (err != nil) { + NSLog(@"TH confirm the DUT reached AC1 (on level control cluster) after 20s: Error: %@", err); + } else { + NSLog(@"TH confirm the DUT reached AC1 (on level control cluster) after 20s: Success"); + } + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + id actualValue = value; + VerifyOrReturn(CheckValueNonNull("CurrentLevel", actualValue)); + VerifyOrReturn(CheckValue("CurrentLevel", actualValue, 100U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestDutTransitionsToAc2Over20_29() + { + + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Please confirm that transition to AC2 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("alpha", value); + } + + CHIP_ERROR TestStep8ThRemovesTheGroupKeySetThatWasAddedBySendingAKeySetRemoveCommandToTheGroupKeyManagementClusterWithTheGroupKeySetIDFieldSetTo0x01a1_30() { MTRBaseDevice * device = GetDevice("alpha");