diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index c0c22fc0df0191..3dd2b0f99fb439 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -8813,14 +8813,23 @@ endpoint 1 { ram attribute minSetpointDeadBand default = 0x19; ram attribute controlSequenceOfOperation default = 0x04; ram attribute systemMode default = 0x01; + callback attribute presetTypes; + ram attribute numberOfPresets default = 0; + ram attribute activePresetHandle; + callback attribute presets; + ram attribute presetsSchedulesEditable; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - ram attribute featureMap default = 0x0023; + ram attribute featureMap default = 0x0123; ram attribute clusterRevision default = 6; handle command SetpointRaiseLower; + handle command SetActivePresetRequest; + handle command StartPresetsSchedulesEditRequest; + handle command CancelPresetsSchedulesEditRequest; + handle command CommitPresetsSchedulesRequest; } server cluster FanControl { diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 31b6a05057dc74..a052433002d237 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -16393,6 +16393,38 @@ "source": "client", "isIncoming": 1, "isEnabled": 1 + }, + { + "name": "SetActivePresetRequest", + "code": 6, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "StartPresetsSchedulesEditRequest", + "code": 7, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "CancelPresetsSchedulesEditRequest", + "code": 8, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "CommitPresetsSchedulesRequest", + "code": 9, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 } ], "attributes": [ @@ -16636,6 +16668,86 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "PresetTypes", + "code": 72, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NumberOfPresets", + "code": 74, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ActivePresetHandle", + "code": 78, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Presets", + "code": 80, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PresetsSchedulesEditable", + "code": 82, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -16710,7 +16822,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0023", + "defaultValue": "0x0123", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -26554,4 +26666,4 @@ "parentEndpointIdentifier": null } ] -} +} \ No newline at end of file diff --git a/examples/all-clusters-app/linux/BUILD.gn b/examples/all-clusters-app/linux/BUILD.gn index e8671e701a7227..c7c5fb0f14ecd3 100644 --- a/examples/all-clusters-app/linux/BUILD.gn +++ b/examples/all-clusters-app/linux/BUILD.gn @@ -75,6 +75,7 @@ source_set("chip-all-clusters-common") { "${chip_root}/examples/energy-management-app/energy-management-common/src/EnergyTimeUtils.cpp", "${chip_root}/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp", "${chip_root}/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp", + "${chip_root}/examples/thermostat/linux/thermostat-delegate-impl.cpp", "AllClustersCommandDelegate.cpp", "AllClustersCommandDelegate.h", "AppOptions.cpp", @@ -98,6 +99,7 @@ source_set("chip-all-clusters-common") { include_dirs = [ "${chip_root}/examples/all-clusters-app/all-clusters-common/include", "${chip_root}/examples/energy-management-app/energy-management-common/include", + "${chip_root}/examples/thermostat/linux/include", ] if (chip_enable_pw_rpc) { diff --git a/examples/all-clusters-app/linux/main-common.cpp b/examples/all-clusters-app/linux/main-common.cpp index bc547d5416377c..edddc6a8a7d62e 100644 --- a/examples/all-clusters-app/linux/main-common.cpp +++ b/examples/all-clusters-app/linux/main-common.cpp @@ -37,6 +37,7 @@ #include "rvc-modes.h" #include "rvc-operational-state-delegate-impl.h" #include "tcc-mode.h" +#include "thermostat-delegate-impl.h" #include "water-heater-mode.h" #include #include @@ -46,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -323,3 +325,12 @@ void emberAfDiagnosticLogsClusterInitCallback(chip::EndpointId endpoint) DiagnosticLogsServer::Instance().SetDiagnosticLogsProviderDelegate(endpoint, &logProvider); } + +using namespace chip::app::Clusters::Thermostat; +void emberAfThermostatClusterInitCallback(EndpointId endpoint) +{ + // Register the delegate for the Thermostat + auto & delegate = ThermostatDelegate::GetInstance(); + + SetDefaultDelegate(endpoint, &delegate); +} diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 3552c9b8ce25f0..dc26361d6dd600 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -2561,6 +2561,7 @@ endpoint 1 { ram attribute absMaxHeatSetpointLimit default = 3000; ram attribute absMinCoolSetpointLimit default = 1600; ram attribute absMaxCoolSetpointLimit default = 3200; + ram attribute localTemperatureCalibration default = 0x00; persist attribute occupiedCoolingSetpoint default = 0x0A28; persist attribute occupiedHeatingSetpoint default = 0x07D0; ram attribute minHeatSetpointLimit default = 700; diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap index 483b79d7d434f5..e907730ee80696 100644 --- a/examples/thermostat/thermostat-common/thermostat.zap +++ b/examples/thermostat/thermostat-common/thermostat.zap @@ -4774,6 +4774,22 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "LocalTemperatureCalibration", + "code": 16, + "mfgCode": null, + "side": "server", + "type": "int8s", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "OccupiedCoolingSetpoint", "code": 17, diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index af0aa5895fd426..169d5684673b9d 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -6422,6 +6422,21 @@ PICS: - label: "Does the device implement the ACCapacityFormat attribute?" id: TSTAT.S.A0047 + - label: "Does the device implement the PresetTypes attribute?" + id: TSTAT.S.A0048 + + - label: "Does the device implement the NumberOfPresets attribute?" + id: TSTAT.S.A004a + + - label: "Does the device implement the ActivePresetHandle attribute?" + id: TSTAT.S.A004e + + - label: "Does the device implement the Presets attribute?" + id: TSTAT.S.A0050 + + - label: "Does the device implement the PresetsSchedulesEditable attribute?" + id: TSTAT.S.A0052 + # # server / commandsReceived # @@ -6445,6 +6460,26 @@ PICS: "Does the device implement receiving the GetRelayStatusLog command?" id: TSTAT.S.C04.Rsp + - label: + "Does the device implement receiving the SetActivePresetRequest + command?" + id: TSTAT.S.C06.Rsp + + - label: + "Does the device implement receiving the + StartPresetsSchedulesEditRequest command?" + id: TSTAT.S.C07.Rsp + + - label: + "Does the device implement receiving the + CancelPresetsSchedulesEditRequest command?" + id: TSTAT.S.C08.Rsp + + - label: + "Does the device implement receiving the CommitPresetsSchedulesRequest + command?" + id: TSTAT.S.C09.Rsp + # # server / commandsGenerated # @@ -6482,6 +6517,9 @@ PICS: - label: "Supports a local temperature not exposed" id: TSTAT.S.F06 + - label: "Supports setpoint presets" + id: TSTAT.S.F08 + # # server / manually # @@ -6523,6 +6561,25 @@ PICS: - label: "Does the device implement sending the GetRelayStatusLog command?" id: TSTAT.C.C04.Tx + - label: + "Does the device implement sending the SetActivePresetRequest command?" + id: TSTAT.C.C06.Tx + + - label: + "Does the device implement sending the + StartPresetsSchedulesEditRequest command?" + id: TSTAT.C.C07.Tx + + - label: + "Does the device implement sending the + CancelPresetsSchedulesEditRequest command?" + id: TSTAT.C.C08.Tx + + - label: + "Does the device implement sending the CommitPresetsSchedulesRequest + command?" + id: TSTAT.C.C09.Tx + # # client / manually # 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 b2bf2a111ebffd..40a65d7952d608 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 @@ -129,6 +129,17 @@ tests: type: bitmap32 hasMasksSet: [0x40] + - label: + "Step 3i: Given TSTAT.S.F08(PRES ensure featuremap has the correct bit + set" + PICS: TSTAT.S.F08 + command: "readAttribute" + attribute: "FeatureMap" + response: + constraints: + type: bitmap32 + hasMasksSet: [0x100] + - label: "Step 4a: TH reads from the DUT the AttributeList attribute." PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" @@ -555,6 +566,17 @@ tests: type: list contains: [30] + - label: + "Step 4j: TH reads the Feature dependent(TSTAT.S.F08(PRES) attribute + in AttributeList" + PICS: TSTAT.S.F08 + command: "readAttribute" + attribute: "AttributeList" + response: + constraints: + type: list + contains: [72, 74, 78, 80, 82] + - label: "Step 5: TH reads EventList attribute from the DUT." PICS: PICS_EVENT_LIST_ENABLED command: "readAttribute" @@ -593,6 +615,16 @@ tests: constraints: type: list contains: [4] + - label: + "Step 6d: TH reads Feature dependent(TSTAT.S.F08(PRES)) commands in + AcceptedCommandList" + PICS: TSTAT.S.F08 + command: "readAttribute" + attribute: "AcceptedCommandList" + response: + constraints: + type: list + contains: [6, 7, 8, 9] - label: "Step 7a: TH reads from the DUT the GeneratedCommandList attribute." diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_4_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_4_1.yaml new file mode 100644 index 00000000000000..9785c8b1bda0c1 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_4_1.yaml @@ -0,0 +1,113 @@ +# Copyright (c) 2024 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: 42.4.1. [TC-TSTAT-4.1] Preset attributes with server as DUT + +PICS: + - TSTAT.S + +config: + nodeId: 0x12344321 + cluster: "Thermostat" + endpoint: 1 + +tests: + - label: "Step 1: Commission DUT to TH" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "Saving value for comparision in step 2 read PresetTypes attribute" + PICS: TSTAT.S.A0048 + command: "readAttribute" + attribute: "PresetTypes" + response: + saveAs: PresetTypesValue + + - label: + "Saving value for comparision in step 3 read NumberOfPresets attribute" + PICS: TSTAT.S.A004a + command: "readAttribute" + attribute: "NumberOfPresets" + response: + saveAs: NumberOfPresetsValue + + - label: + "Saving value for comparision in step 4 read ActivePresetHandleValue + attribute" + PICS: TSTAT.S.A004e + command: "readAttribute" + attribute: "ActivePresetHandle" + response: + saveAs: ActivePresetHandleValue + + - label: "Saving value for comparision in step 5 read Presets attribute" + PICS: TSTAT.S.A0050 + command: "readAttribute" + attribute: "Presets" + response: + saveAs: PresetsValue + + - label: + "Saving value for comparision in step 6 read PresetsSchedulesEditable + attribute" + PICS: TSTAT.S.A0052 + command: "readAttribute" + attribute: "PresetsSchedulesEditable" + response: + saveAs: PresetsSchedulesEditableValue + + - label: "Step 2: TH reads the PresetTypes attribute from the DUT" + PICS: TSTAT.S.F08 & TSTAT.S.A0048 + command: "readAttribute" + attribute: "PresetTypes" + response: + constraints: + type: list + + - label: "Step 3: TH reads the NumberOfPresets attribute from the DUT" + PICS: TSTAT.S.F08 & TSTAT.S.A004a + command: "readAttribute" + attribute: "NumberOfPresets" + response: + constraints: + type: int8u + + - label: "Step 4: TH reads the ActivePresetHandle attribute from the DUT" + PICS: TSTAT.S.F08 & TSTAT.S.A004e + command: "readAttribute" + attribute: "ActivePresetHandle" + response: + constraints: + type: octstr + + - label: "Step 5: TH reads the Presets attribute from the DUT" + PICS: TSTAT.S.F08 & TSTAT.S.A0050 + command: "readAttribute" + attribute: "Presets" + response: + constraints: + type: list + + - label: + "Step 6: TH reads the PresetsSchedulesEditable attribute from the DUT" + PICS: TSTAT.S.F08 & TSTAT.S.A0052 + command: "readAttribute" + attribute: "PresetsSchedulesEditable" + response: + constraints: + type: boolean diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_4_2.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_4_2.yaml new file mode 100644 index 00000000000000..b813eafd402606 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_4_2.yaml @@ -0,0 +1,2228 @@ +# Copyright (c) 2024 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: 42.4.2. [TC-TSTAT-4.2] Preset Test Cases with server as DUT + +PICS: + - TSTAT.S + +config: + nodeId: 0x12344321 + cluster: "Thermostat" + endpoint: 1 + +tests: + - label: "Step 1: Commission DUT to TH" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: + "Step 2: Test Harness writes to the Presets attribute without calling + the StartPresetsSchedulesEditRequest" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #2 Test Harness Client attempts to write Presets and gets an INVALID_IN_STATE error since the client didn't send a request to edit the presets by calling StartPresetsSchedulesEditRequest command. + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": null, "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a INVALID_IN_STATE (0xCB) + + [1722285385.263] [53729:5380292] [DMG] WriteClient moving to [AwaitingDe] + [1722285385.263] [53729:5380292] [TOO] Response Failure: IM Error 0x000005CB: General error: 0xcb (INVALID_IN_STATE) + [1722285385.263] [53729:5380292] [EM] <<< [E:42658i S:21691 M:14088666 (Ack:20978215)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722285385.263] [53729:5380292] [EM] Flushed pending ack for MessageCounter:20978215 on exchange 42658i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 3a: Test Harness writes to the Presets attribute after calling + the StartPresetsSchedulesEditRequest command" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #3a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 3b: Test Harness writes to the Presets attribute adding 3 + presets for Sleep, Wake and GoingToSleep" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #3b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": null, "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": null, "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": null, "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286250.503] [54321:5397545] [DMG] WriteClient moving to [ResponseRe] + [1722286250.503] [54321:5397545] [DMG] WriteResponseMessage = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] AttributeStatusIBs = + [1722286250.503] [54321:5397545] [DMG] [ + [1722286250.503] [54321:5397545] [DMG] AttributeStatusIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] AttributePathIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] Endpoint = 0x1, + [1722286250.503] [54321:5397545] [DMG] Cluster = 0x201, + [1722286250.503] [54321:5397545] [DMG] Attribute = 0x0000_0050, + [1722286250.503] [54321:5397545] [DMG] } + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] StatusIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] status = 0x00 (SUCCESS), + [1722286250.503] [54321:5397545] [DMG] }, + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] }, + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] AttributeStatusIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] AttributePathIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] Endpoint = 0x1, + [1722286250.503] [54321:5397545] [DMG] Cluster = 0x201, + [1722286250.503] [54321:5397545] [DMG] Attribute = 0x0000_0050, + [1722286250.503] [54321:5397545] [DMG] ListIndex = Null, + [1722286250.503] [54321:5397545] [DMG] } + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] StatusIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] status = 0x00 (SUCCESS), + [1722286250.503] [54321:5397545] [DMG] }, + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] }, + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] AttributeStatusIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] AttributePathIB = + [1722286250.503] [54321:5397545] [DMG] { + [1722286250.503] [54321:5397545] [DMG] Endpoint = 0x1, + [1722286250.503] [54321:5397545] [DMG] Cluster = 0x201, + [1722286250.503] [54321:5397545] [DMG] Attribute = 0x0000_0050, + [1722286250.503] [54321:5397545] [DMG] ListIndex = Null, + [1722286250.503] [54321:5397545] [DMG] } + [1722286250.503] [54321:5397545] [DMG] + [1722286250.503] [54321:5397545] [DMG] StatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] status = 0x00 (SUCCESS), + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] AttributeStatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] AttributePathIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] Endpoint = 0x1, + [1722286250.504] [54321:5397545] [DMG] Cluster = 0x201, + [1722286250.504] [54321:5397545] [DMG] Attribute = 0x0000_0050, + [1722286250.504] [54321:5397545] [DMG] ListIndex = Null, + [1722286250.504] [54321:5397545] [DMG] } + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] StatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] status = 0x00 (SUCCESS), + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] AttributeStatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] AttributePathIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] Endpoint = 0x1, + [1722286250.504] [54321:5397545] [DMG] Cluster = 0x201, + [1722286250.504] [54321:5397545] [DMG] Attribute = 0x0000_0050, + [1722286250.504] [54321:5397545] [DMG] ListIndex = Null, + [1722286250.504] [54321:5397545] [DMG] } + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] StatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] status = 0x00 (SUCCESS), + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] AttributeStatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] AttributePathIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] Endpoint = 0x1, + [1722286250.504] [54321:5397545] [DMG] Cluster = 0x201, + [1722286250.504] [54321:5397545] [DMG] Attribute = 0x0000_0050, + [1722286250.504] [54321:5397545] [DMG] ListIndex = Null, + [1722286250.504] [54321:5397545] [DMG] } + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] StatusIB = + [1722286250.504] [54321:5397545] [DMG] { + [1722286250.504] [54321:5397545] [DMG] status = 0x00 (SUCCESS), + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] }, + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] ], + [1722286250.504] [54321:5397545] [DMG] + [1722286250.504] [54321:5397545] [DMG] InteractionModelRevision = 11 + [1722286250.504] [54321:5397545] [DMG] } + [1722286250.504] [54321:5397545] [DMG] WriteClient moving to [AwaitingDe] + [1722286250.504] [54321:5397545] [EM] <<< [E:14426i S:42250 M:116961408 (Ack:156984778)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286250.504] [54321:5397545] [EM] Flushed pending ack for MessageCounter:156984778 on exchange 14426i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 3c: Test Harness reads the Presets attribute without calling + the CommitPresetsSchedulesRequest command" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #3c Test Harness Client reads Presets attribute but the new additions are not committed since the client didn't call the CommitPresetsSchedulesRequest command + + ./chip-tool thermostat read presets 0x12344321 1 + On TH(chip-tool) verify that DUT successfully read Presets (but without the new changes) + [1722286701.424] [54699:5406692] [TOO] Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_0050 DataVersion: 3807987049 + [1722286701.425] [54699:5406692] [TOO] Presets: 2 entries + [1722286701.425] [54699:5406692] [TOO] [1]: { + [1722286701.425] [54699:5406692] [TOO] PresetHandle: 01 + [1722286701.425] [54699:5406692] [TOO] PresetScenario: 1 + [1722286701.425] [54699:5406692] [TOO] CoolingSetpoint: 2500 + [1722286701.425] [54699:5406692] [TOO] HeatingSetpoint: 2100 + [1722286701.426] [54699:5406692] [TOO] BuiltIn: TRUE + [1722286701.426] [54699:5406692] [TOO] } + [1722286701.426] [54699:5406692] [TOO] [2]: { + [1722286701.426] [54699:5406692] [TOO] PresetHandle: 02 + [1722286701.426] [54699:5406692] [TOO] PresetScenario: 2 + [1722286701.426] [54699:5406692] [TOO] CoolingSetpoint: 2600 + [1722286701.426] [54699:5406692] [TOO] HeatingSetpoint: 2000 + [1722286701.426] [54699:5406692] [TOO] BuiltIn: TRUE + [1722286701.426] [54699:5406692] [TOO] } + [1722286701.426] [54699:5406692] [EM] <<< [E:49759i S:37002 M:67372150 (Ack:254131025)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 3d: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #3d Test Harness Client calls CommitPresetsSchedulesRequest command + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722287841.505] [55282:5425045] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x0 + [1722287841.505] [55282:5425045] [DMG] ICR moving to [AwaitingDe] + [1722287841.505] [55282:5425045] [EM] <<< [E:46441i S:57071 M:61366563 (Ack:138534230)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 3e: Test Harness reads the Presets attribute after calling the + CommitPresetsSchedulesRequest command" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #3e Test Harness Client reads Presets attribute and can see the added Presets. + + ./chip-tool thermostat read presets 0x12344321 1 + On TH(chip-tool) verify that DUT successfully read Presets (with the new changes) + [1722288101.757] [55446:5430009] [TOO] Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_0050 DataVersion: 3807987055 + [1722288101.757] [55446:5430009] [TOO] Presets: 5 entries + [1722288101.758] [55446:5430009] [TOO] [1]: { + [1722288101.759] [55446:5430009] [TOO] PresetHandle: 01 + [1722288101.759] [55446:5430009] [TOO] PresetScenario: 1 + [1722288101.759] [55446:5430009] [TOO] CoolingSetpoint: 2500 + [1722288101.759] [55446:5430009] [TOO] HeatingSetpoint: 2600 + [1722288101.759] [55446:5430009] [TOO] BuiltIn: TRUE + [1722288101.759] [55446:5430009] [TOO] } + [1722288101.759] [55446:5430009] [TOO] [2]: { + [1722288101.759] [55446:5430009] [TOO] PresetHandle: 02 + [1722288101.759] [55446:5430009] [TOO] PresetScenario: 2 + [1722288101.759] [55446:5430009] [TOO] CoolingSetpoint: 2600 + [1722288101.759] [55446:5430009] [TOO] HeatingSetpoint: 2500 + [1722288101.759] [55446:5430009] [TOO] BuiltIn: TRUE + [1722288101.759] [55446:5430009] [TOO] } + [1722288101.759] [55446:5430009] [TOO] [3]: { + [1722288101.759] [55446:5430009] [TOO] PresetHandle: 03 + [1722288101.759] [55446:5430009] [TOO] PresetScenario: 3 + [1722288101.759] [55446:5430009] [TOO] Name: Sleep + [1722288101.759] [55446:5430009] [TOO] CoolingSetpoint: 2500 + [1722288101.759] [55446:5430009] [TOO] HeatingSetpoint: 2600 + [1722288101.759] [55446:5430009] [TOO] BuiltIn: FALSE + [1722288101.759] [55446:5430009] [TOO] } + [1722288101.759] [55446:5430009] [TOO] [4]: { + [1722288101.759] [55446:5430009] [TOO] PresetHandle: 04 + [1722288101.759] [55446:5430009] [TOO] PresetScenario: 4 + [1722288101.759] [55446:5430009] [TOO] Name: Wake + [1722288101.759] [55446:5430009] [TOO] CoolingSetpoint: 2200 + [1722288101.759] [55446:5430009] [TOO] HeatingSetpoint: 2900 + [1722288101.759] [55446:5430009] [TOO] BuiltIn: FALSE + [1722288101.759] [55446:5430009] [TOO] } + [1722288101.759] [55446:5430009] [TOO] [5]: { + [1722288101.759] [55446:5430009] [TOO] PresetHandle: 06 + [1722288101.759] [55446:5430009] [TOO] PresetScenario: 6 + [1722288101.759] [55446:5430009] [TOO] Name: GoingToSleep + [1722288101.759] [55446:5430009] [TOO] CoolingSetpoint: 2100 + [1722288101.759] [55446:5430009] [TOO] HeatingSetpoint: 2500 + [1722288101.759] [55446:5430009] [TOO] BuiltIn: FALSE + [1722288101.759] [55446:5430009] [TOO] } + [1722288101.759] [55446:5430009] [EM] <<< [E:64397i S:21821 M:262922240 (Ack:37271345)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722288101.760] [55446:5430009] [EM] Flushed pending ack for MessageCounter:37271345 on exchange 64397i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 4a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #4a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 4b: Test Harness writes to the Presets attribute with a + built-in preset having preset handle hex:01 removed" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #4b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722288460.741] [55752:5437815] [DMG] WriteClient moving to [ResponseRe] + [1722288460.741] [55752:5437815] [DMG] WriteResponseMessage = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] AttributeStatusIBs = + [1722288460.741] [55752:5437815] [DMG] [ + [1722288460.741] [55752:5437815] [DMG] AttributeStatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] AttributePathIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] Endpoint = 0x1, + [1722288460.741] [55752:5437815] [DMG] Cluster = 0x201, + [1722288460.741] [55752:5437815] [DMG] Attribute = 0x0000_0050, + [1722288460.741] [55752:5437815] [DMG] } + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] StatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] status = 0x00 (SUCCESS), + [1722288460.741] [55752:5437815] [DMG] }, + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] }, + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] AttributeStatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] AttributePathIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] Endpoint = 0x1, + [1722288460.741] [55752:5437815] [DMG] Cluster = 0x201, + [1722288460.741] [55752:5437815] [DMG] Attribute = 0x0000_0050, + [1722288460.741] [55752:5437815] [DMG] ListIndex = Null, + [1722288460.741] [55752:5437815] [DMG] } + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] StatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] status = 0x00 (SUCCESS), + [1722288460.741] [55752:5437815] [DMG] }, + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] }, + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] AttributeStatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] AttributePathIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] Endpoint = 0x1, + [1722288460.741] [55752:5437815] [DMG] Cluster = 0x201, + [1722288460.741] [55752:5437815] [DMG] Attribute = 0x0000_0050, + [1722288460.741] [55752:5437815] [DMG] ListIndex = Null, + [1722288460.741] [55752:5437815] [DMG] } + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] StatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] status = 0x00 (SUCCESS), + [1722288460.741] [55752:5437815] [DMG] }, + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] }, + [1722288460.741] [55752:5437815] [DMG] + [1722288460.741] [55752:5437815] [DMG] AttributeStatusIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.741] [55752:5437815] [DMG] AttributePathIB = + [1722288460.741] [55752:5437815] [DMG] { + [1722288460.742] [55752:5437815] [DMG] Endpoint = 0x1, + [1722288460.742] [55752:5437815] [DMG] Cluster = 0x201, + [1722288460.742] [55752:5437815] [DMG] Attribute = 0x0000_0050, + [1722288460.742] [55752:5437815] [DMG] ListIndex = Null, + [1722288460.742] [55752:5437815] [DMG] } + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] StatusIB = + [1722288460.742] [55752:5437815] [DMG] { + [1722288460.742] [55752:5437815] [DMG] status = 0x00 (SUCCESS), + [1722288460.742] [55752:5437815] [DMG] }, + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] }, + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] AttributeStatusIB = + [1722288460.742] [55752:5437815] [DMG] { + [1722288460.742] [55752:5437815] [DMG] AttributePathIB = + [1722288460.742] [55752:5437815] [DMG] { + [1722288460.742] [55752:5437815] [DMG] Endpoint = 0x1, + [1722288460.742] [55752:5437815] [DMG] Cluster = 0x201, + [1722288460.742] [55752:5437815] [DMG] Attribute = 0x0000_0050, + [1722288460.742] [55752:5437815] [DMG] ListIndex = Null, + [1722288460.742] [55752:5437815] [DMG] } + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] StatusIB = + [1722288460.742] [55752:5437815] [DMG] { + [1722288460.742] [55752:5437815] [DMG] status = 0x00 (SUCCESS), + [1722288460.742] [55752:5437815] [DMG] }, + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] }, + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] ], + [1722288460.742] [55752:5437815] [DMG] + [1722288460.742] [55752:5437815] [DMG] InteractionModelRevision = 11 + [1722288460.742] [55752:5437815] [DMG] } + [1722288460.742] [55752:5437815] [DMG] WriteClient moving to [AwaitingDe] + [1722288460.742] [55752:5437815] [EM] <<< [E:10991i S:19292 M:9249657 (Ack:153811994)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 4c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #4c Test Harness Client calls CommitPresetsSchedulesRequest command and gets UNSUPPORTED_ACCESS since a built-in preset was attempted to be removed. + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an UNSUPPORTED_ACCESS (0x7E) error + [1722288464.392] [55754:5437857] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x7e + [1722288464.392] [55754:5437857] [TOO] Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) + [1722288464.392] [55754:5437857] [DMG] ICR moving to [AwaitingDe] + [1722288464.392] [55754:5437857] [EM] <<< [E:45905i S:14600 M:175519796 (Ack:248690311)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 5a: Test Harness calls the SetActivePresetRequest command to + set the active preset handle" + PICS: TSTAT.S.F08 && TSTAT.S.C06.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #5a Test Harness Client calls SetActivePresetRequest command to set the active preset handle + + ./chip-tool thermostat set-active-preset-request "hex:03" 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722292538.299] [58873:5523668] [TOO] Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_004E DataVersion: 3470253931 + [1722292538.300] [58873:5523668] [TOO] ActivePresetHandle: 03 + [1722292538.300] [58873:5523668] [EM] <<< [E:63772i S:58620 M:79797990 (Ack:248773669)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: "Step 5b: Test Harness reads the ActivePresetHandle attribute" + PICS: TSTAT.S.F08 && TSTAT.S.A004e + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #5b Test Harness Client reads ActivePresetHandle attribute + + ./chip-tool thermostat read active-preset-handle 0x12344321 1 + On TH(chip-tool) verify that DUT successfully read ActivePresetHandle + [1722299898.382] [62999:5632512] [TOO] Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_004E DataVersion: 3098962545 + [1722299898.382] [62999:5632512] [TOO] ActivePresetHandle: 03 + [1722299898.382] [62999:5632512] [EM] <<< [E:27648i S:55804 M:2686999 (Ack:191947351)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 5c: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #5b Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 5d: Test Harness writes to the Presets attribute without the + preset with handle hex:03 matching the ActivePresetHandle attribute + removed" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #5c Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets ./out/debug/chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 5e: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #5e Test Harness Client calls CommitPresetsSchedulesRequest command ans gets INVALID_IN_STATE since the preset with its handle matching the active preset handle was attempted to be removed. + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an INVALID_IN_STATE (0xCB) error + [1722293312.795] [59386:5538858] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0xcb + [1722293312.795] [59386:5538858] [TOO] Error: IM Error 0x000005CB: General error: 0xcb (INVALID_IN_STATE) + [1722293312.795] [59386:5538858] [DMG] ICR moving to [AwaitingDe] + [1722293312.795] [59386:5538858] [EM] <<< [E:4647i S:21966 M:58651952 (Ack:80870764)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 6a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #6a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 6b: Test Harness writes to the Presets attribute with a + built-in preset having preset handle hex:01 modified to be not + built-in." + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #6b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 6c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #6c Test Harness Client calls CommitPresetsSchedulesRequest command gets UNSUPPORTED_ACCESS since a built-in preset was attempted to be modified to a non built-in preset + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an UNSUPPORTED_ACCESS (0x7E) error + [1722289468.881] [56642:5458641] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x7e + [1722289468.881] [56642:5458641] [TOO] Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) + [1722289468.881] [56642:5458641] [DMG] ICR moving to [AwaitingDe] + [1722289468.881] [56642:5458641] [EM] <<< [E:20464i S:35105 M:91065475 (Ack:114933900)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 7a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #6a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 7b: Test Harness writes to the Presets attribute with a new + preset having builtIn set to true" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #7b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": null, "name": "Vacation", "presetScenario": 5, "coolingSetpoint": 2900, "heatingSetpoint": 2000, "builtIn": true }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 7c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #6c Test Harness Client calls CommitPresetsSchedulesRequest command and gets CONSTRAINT_ERROR since a new preset was attempted to be added as a built-in preset. + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an CONSTRAINT_ERROR (0x87) error + [1722289998.305] [56996:5468872] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x87 + [1722289998.305] [56996:5468872] [TOO] Error: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1722289998.305] [56996:5468872] [DMG] ICR moving to [AwaitingDe] + [1722289998.305] [56996:5468872] [EM] <<< [E:44500i S:62829 M:76436393 (Ack:145233702)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 8a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #8a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 8b: Test Harness writes to the Presets attribute with a preset + having preset handle hex:08 that doesn't exist in the Presets + attribute" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #8b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:08", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 8c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #8c Test Harness Client calls CommitPresetsSchedulesRequest command gets NOT_FOUND since an existing preset was attempted to be added with a preset handle that doesn't exist in the Presets attribute + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an NOT_FOUND (0x8B) error + [1722290436.980] [57434:5479429] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x8b + [1722290436.980] [57434:5479429] [TOO] Error: IM Error 0x0000058B: General error: 0x8b (NOT_FOUND) + [1722290436.980] [57434:5479429] [DMG] ICR moving to [AwaitingDe] + [1722290436.980] [57434:5479429] [EM] <<< [E:54210i S:10110 M:158287615 (Ack:73923062)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 9a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #9a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: "Step 9b: Test Harness writes to the Presets attribute" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #8b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 9c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #8c Test Harness Client calls CommitPresetsSchedulesRequest command gets CONSTRAINT_ERROR since preset with preset handle hex:03 is duplicated + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends a CONSTRAINT_ERROR (0x87) error + [1722302289.994] [63677:5670818] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x87 + [1722302289.994] [63677:5670818] [TOO] Error: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1722302289.994] [63677:5670818] [DMG] ICR moving to [AwaitingDe] + [1722302289.994] [63677:5670818] [EM] <<< [E:25209i S:7768 M:264197735 (Ack:106550461)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 10a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #10a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 10b: Test Harness writes to the Presets attribute wherein a + built-in preset is modified to a non built-in preset" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #10b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 10c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #10c Test Harness Client calls CommitPresetsSchedulesRequest command gets UNSUPPORTED_ACCESS since built-in preset with handle hex:01 was attempted to be modified to a not built-in preset + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an UNSUPPORTED_ACCESS (0x7E) error + [1722289468.881] [56642:5458641] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x7e + [1722289468.881] [56642:5458641] [TOO] Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) + [1722289468.881] [56642:5458641] [DMG] ICR moving to [AwaitingDe] + [1722289468.881] [56642:5458641] [EM] <<< [E:20464i S:35105 M:91065475 (Ack:114933900)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 11a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #11a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 11b: Test Harness writes to the Presets attribute wherein a non + built-in preset is modified to a built-in preset" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #11b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 11c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #11c Test Harness Client calls CommitPresetsSchedulesRequest command gets UNSUPPORTED_ACCESS since non built-in preset with handle hex:03 was attempted to be modified to be built-in + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an UNSUPPORTED_ACCESS (0x7E) error + [1722297542.066] [60654:5591651] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x7e + [1722297542.066] [60654:5591651] [TOO] Error: IM Error 0x0000057E: General error: 0x7e (UNSUPPORTED_ACCESS) + [1722297542.066] [60654:5591651] [DMG] ICR moving to [AwaitingDe] + [1722297542.066] [60654:5591651] [EM] <<< [E:11999i S:35595 M:148057801 (Ack:14642826)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 12a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #12a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 12b: Test Harness writes to the Presets attribute with a preset + that doesn't support names in the PresetTypeFeatures bitmap but has a + name" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #11b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "name": "Occupied", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "hex:03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }, {"presetHandle": "hex:06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 2100, "heatingSetpoint": 2500, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722289461.377] [56636:5458560] [EM] <<< [E:23635i S:58282 M:220756286 (Ack:5366080)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 12c: Test Harness calls the CommitPresetsSchedulesRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C09.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #11c Test Harness Client calls CommitPresetsSchedulesRequest command gets CONSTRAINT_ERROR since we attempted to add a name to a preset with handle hex:01 that doesn't support names. + + ./chip-tool thermostat commit-presets-schedules-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends an CONSTRAINT_ERROR (0x87) error + [1722298150.233] [60910:5602100] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x87 + [1722298150.233] [60910:5602100] [TOO] Error: IM Error 0x00000587: General error: 0x87 (CONSTRAINT_ERROR) + [1722298150.233] [60910:5602100] [DMG] ICR moving to [AwaitingDe] + [1722298150.233] [60910:5602100] [EM] <<< [E:44287i S:42687 M:5072557 (Ack:66989213)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + #TODO: Add tests for the total number of Presets exceeds the NumberOfPresets supported. Also Add tests for adding presets with preset scenario not present in PresetTypes. + + - label: + "Step 13a: Test Harness calls the StartPresetsSchedulesEditRequest + command to edit presets" + PICS: TSTAT.S.F08 && TSTAT.S.C07.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #13a Test Harness Client calls StartPresetsSchedulesEditRequest command + + ./chip-tool thermostat start-presets-schedules-edit-request 180 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722286001.805] [54149:5392862] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0007 Status=0x0 + [1722286001.805] [54149:5392862] [DMG] ICR moving to [AwaitingDe] + [1722286001.805] [54149:5392862] [EM] <<< [E:7545i S:16937 M:144975449 (Ack:93571372)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286001.806] [54149:5392862] [EM] Flushed pending ack for MessageCounter:93571372 on exchange 7545i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 13b: Test Harness writes to the Presets attribute but calls + CancelPresetsSchedulesEditRequest command to cancel the edit request" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #13b Test Harness Client attempts to write Presets and gets SUCCESS + + ./chip-tool thermostat write presets '[ {"presetHandle": "hex:01", "presetScenario": 1, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": true }, {"presetHandle": "hex:02", "presetScenario": 2, "coolingSetpoint": 2600, "heatingSetpoint": 2500, "builtIn": true }, {"presetHandle": "03", "name": "Sleep", "presetScenario": 3, "coolingSetpoint": 2500, "heatingSetpoint": 2600, "builtIn": false }, {"presetHandle": "04", "name": "Wake", "presetScenario": 4, "coolingSetpoint": 2200, "heatingSetpoint": 2900, "builtIn": false }, {"presetHandle": null, "name": "Vacation", "presetScenario": 5, "coolingSetpoint": 2900, "heatingSetpoint": 2000, "builtIn": false }, {"presetHandle": "06", "name": "GoingToSleep", "presetScenario": 6, "coolingSetpoint": 3000, "heatingSetpoint": 1900, "builtIn": false }]' 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722289461.376] [56636:5458560] [DMG] WriteClient moving to [ResponseRe] + [1722289461.376] [56636:5458560] [DMG] WriteResponseMessage = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIBs = + [1722289461.376] [56636:5458560] [DMG] [ + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.376] [56636:5458560] [DMG] } + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] StatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] }, + [1722289461.376] [56636:5458560] [DMG] + [1722289461.376] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] AttributePathIB = + [1722289461.376] [56636:5458560] [DMG] { + [1722289461.376] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.376] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.376] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.376] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] AttributeStatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] AttributePathIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] Endpoint = 0x1, + [1722289461.377] [56636:5458560] [DMG] Cluster = 0x201, + [1722289461.377] [56636:5458560] [DMG] Attribute = 0x0000_0050, + [1722289461.377] [56636:5458560] [DMG] ListIndex = Null, + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] StatusIB = + [1722289461.377] [56636:5458560] [DMG] { + [1722289461.377] [56636:5458560] [DMG] status = 0x00 (SUCCESS), + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] }, + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] ], + [1722289461.377] [56636:5458560] [DMG] + [1722289461.377] [56636:5458560] [DMG] InteractionModelRevision = 11 + [1722289461.377] [56636:5458560] [DMG] } + [1722289461.377] [56636:5458560] [DMG] WriteClient moving to [AwaitingDe] + [1722286250.504] [54321:5397545] [EM] <<< [E:14426i S:42250 M:116961408 (Ack:156984778)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + [1722286250.504] [54321:5397545] [EM] Flushed pending ack for MessageCounter:156984778 on exchange 14426i + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 13c: Test Harness calls the CancelPresetsSchedulesEditRequest + command" + PICS: TSTAT.S.F08 && TSTAT.S.C08.Rsp + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #13c Test Harness Client calls CancelPresetsSchedulesEditRequest command + + ./chip-tool thermostat cancel-presets-schedules-edit-request 0x12344321 1 + On TH(chip-tool) verify that DUT sends a success response + [1722287841.505] [55282:5425045] [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0201 Command=0x0000_0009 Status=0x0 + [1722287841.505] [55282:5425045] [DMG] ICR moving to [AwaitingDe] + [1722287841.505] [55282:5425045] [EM] <<< [E:46441i S:57071 M:61366563 (Ack:138534230)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "Step 13d: Test Harness reads the Presets attribute after calling the + CancelPresetsSchedulesEditRequest command" + PICS: TSTAT.S.F08 && TSTAT.S.A0050 + verification: | + Optional Attribute - If it is supported, then in TH log it will results in displaying the value, else it will display UNSUPPORTED_ATTRIBUTE. Below is the log of RPI the result may be vary on the basis of dut implementation. + + #3c Test Harness Client reads Presets attribute + + ./chip-tool thermostat read presets 0x12344321 1 + On TH(chip-tool) verify that DUT successfully read Presets (but without the Vacation preset added) + [1722299465.497] [62905:5625656] [TOO] Endpoint: 1 Cluster: 0x0000_0201 Attribute 0x0000_0050 DataVersion: 3098962545 + [1722299465.497] [62905:5625656] [TOO] Presets: 5 entries + [1722299465.498] [62905:5625656] [TOO] [1]: { + [1722299465.498] [62905:5625656] [TOO] PresetHandle: 01 + [1722299465.498] [62905:5625656] [TOO] PresetScenario: 1 + [1722299465.498] [62905:5625656] [TOO] CoolingSetpoint: 2500 + [1722299465.498] [62905:5625656] [TOO] HeatingSetpoint: 2600 + [1722299465.498] [62905:5625656] [TOO] BuiltIn: TRUE + [1722299465.498] [62905:5625656] [TOO] } + [1722299465.498] [62905:5625656] [TOO] [2]: { + [1722299465.498] [62905:5625656] [TOO] PresetHandle: 02 + [1722299465.498] [62905:5625656] [TOO] PresetScenario: 2 + [1722299465.498] [62905:5625656] [TOO] CoolingSetpoint: 2600 + [1722299465.498] [62905:5625656] [TOO] HeatingSetpoint: 2500 + [1722299465.498] [62905:5625656] [TOO] BuiltIn: TRUE + [1722299465.498] [62905:5625656] [TOO] } + [1722299465.498] [62905:5625656] [TOO] [3]: { + [1722299465.498] [62905:5625656] [TOO] PresetHandle: 03 + [1722299465.498] [62905:5625656] [TOO] PresetScenario: 3 + [1722299465.498] [62905:5625656] [TOO] Name: Sleep + [1722299465.498] [62905:5625656] [TOO] CoolingSetpoint: 2500 + [1722299465.498] [62905:5625656] [TOO] HeatingSetpoint: 2600 + [1722299465.498] [62905:5625656] [TOO] BuiltIn: FALSE + [1722299465.498] [62905:5625656] [TOO] } + [1722299465.498] [62905:5625656] [TOO] [4]: { + [1722299465.498] [62905:5625656] [TOO] PresetHandle: 04 + [1722299465.498] [62905:5625656] [TOO] PresetScenario: 4 + [1722299465.498] [62905:5625656] [TOO] Name: Wake + [1722299465.498] [62905:5625656] [TOO] CoolingSetpoint: 2200 + [1722299465.498] [62905:5625656] [TOO] HeatingSetpoint: 2900 + [1722299465.498] [62905:5625656] [TOO] BuiltIn: FALSE + [1722299465.498] [62905:5625656] [TOO] } + [1722299465.498] [62905:5625656] [TOO] [5]: { + [1722299465.498] [62905:5625656] [TOO] PresetHandle: 06 + [1722299465.498] [62905:5625656] [TOO] PresetScenario: 6 + [1722299465.498] [62905:5625656] [TOO] Name: Vacationleep + [1722299465.498] [62905:5625656] [TOO] CoolingSetpoint: 2100 + [1722299465.498] [62905:5625656] [TOO] HeatingSetpoint: 2500 + [1722299465.498] [62905:5625656] [TOO] BuiltIn: FALSE + [1722299465.498] [62905:5625656] [TOO] } + [1722299465.498] [62905:5625656] [EM] <<< [E:53084i S:11903 M:249395534 (Ack:245071987)] (S) Msg TX to 1:000000000000006E [FEC4] [UDP:[fe80::1%lo0]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:34) + cluster: "LogCommands" + command: "UserPrompt" + arguments: + values: + - name: "message" + value: "Please enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index 152544521f1453..82254aa6c0cd4e 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -1916,6 +1916,7 @@ TSTAT.S.F03=0 TSTAT.S.F04=0 TSTAT.S.F05=1 TSTAT.S.F06=0 +TSTAT.S.F08=1 TSTAT.S.A0000=1 TSTAT.S.A0001=0 @@ -1967,6 +1968,12 @@ TSTAT.S.A0044=0 TSTAT.S.A0045=0 TSTAT.S.A0046=0 TSTAT.S.A0047=0 +TSTAT.S.A0048=1 +TSTAT.S.A004a=1 +TSTAT.S.A004e=1 +TSTAT.S.A0050=1 +TSTAT.S.A0052=1 + TSTAT.S.M.MinSetpointDeadBandWritable=1 TSTAT.S.M.HVACSystemTypeConfigurationWritable=0 @@ -1976,6 +1983,10 @@ TSTAT.S.C01.Rsp=0 TSTAT.S.C02.Rsp=0 TSTAT.S.C03.Rsp=0 TSTAT.S.C04.Rsp=0 +TSTAT.S.C06.Rsp=1 +TSTAT.S.C07.Rsp=1 +TSTAT.S.C08.Rsp=1 +TSTAT.S.C09.Rsp=1 # Client TSTAT.C=0 @@ -1990,6 +2001,10 @@ TSTAT.C.C02.Tx=0 TSTAT.C.C03.Tx=0 TSTAT.S.C00.Tx=0 TSTAT.S.C01.Tx=0 +TSTAT.C.C06.Tx=1 +TSTAT.C.C07.Tx=1 +TSTAT.C.C08.Tx=1 +TSTAT.C.C09.Tx=1 # Client Commands TSTAT.C.C00.Tx=1