# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name: 3.7.4. [TC-CHANNEL-5.4] Change Channel Verification (DUT as Client)

PICS:
    - CHANNEL.C

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    endpoint: 0

tests:
    - label: "Preconditions"
      verification: |
          Commission TH to DUT, if not done so already. In some cases, such as with a Casting Video Player, the TH commissions the DUT.
      disabled: true

    - label: "DUT sends ChangeChannel command to TH"
      PICS: CHANNEL.C.C00.Tx
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner) or tv-casting-app (when DUT is a commissionee):

          If the DUT knows the Match(Channel name)  in channel InputList then those can be sent as the argument. Else User needs to execute the following command to know theMatch(Channel name)  to change the channel

          ./chip-tool channel read channel-list 1 1

          By sending above command user can select the Match(Channel name)  instead of ABC which are listed in chanel list.

          ./chip-tool channel change-channel  ABC 1 1

          [1665567814.599622][111029:111029] CHIP:DMG: InvokeRequestMessage =
          [1665567814.599625][111029:111029] CHIP:DMG: {
          [1665567814.599628][111029:111029] CHIP:DMG:         suppressResponse = false,
          [1665567814.599631][111029:111029] CHIP:DMG:         timedRequest = false,
          [1665567814.599640][111029:111029] CHIP:DMG:         InvokeRequests =
          [1665567814.599646][111029:111029] CHIP:DMG:         [
          [1665567814.599649][111029:111029] CHIP:DMG:                 CommandDataIB =
          [1665567814.599653][111029:111029] CHIP:DMG:                 {
          [1665567814.599656][111029:111029] CHIP:DMG:                         CommandPathIB =
          [1665567814.599660][111029:111029] CHIP:DMG:                         {
          [1665567814.599664][111029:111029] CHIP:DMG:                                 EndpointId = 0x1,
          [1665567814.599668][111029:111029] CHIP:DMG:                                 ClusterId = 0x504,
          [1665567814.599671][111029:111029] CHIP:DMG:                                 CommandId = 0x0,
          [1665567814.599675][111029:111029] CHIP:DMG:                         },
          [1665567814.599679][111029:111029] CHIP:DMG:
          [1665567814.599682][111029:111029] CHIP:DMG:                         CommandFields =
          [1665567814.599686][111029:111029] CHIP:DMG:                         {
          [1665567814.599691][111029:111029] CHIP:DMG:                                 0x0 = "ABC" (3 chars),
          [1665567814.599694][111029:111029] CHIP:DMG:                         },
          [1665567814.599697][111029:111029] CHIP:DMG:                 },
          [1665567814.599702][111029:111029] CHIP:DMG:
          [1665567814.599705][111029:111029] CHIP:DMG:         ],
          [1665567814.599710][111029:111029] CHIP:DMG:
          [1665567814.599714][111029:111029] CHIP:DMG:         InteractionModelRevision = 1
          [1665567814.599716][111029:111029] CHIP:DMG: },
          [1665567814.599733][111029:111029] CHIP:DMG: AccessControl: checking f=2 a=c s=0x000000000001B669 t= c=0x0000_0504 e=1 p=o


          Enter the below command to read the current input. ./chip-tool channel read current-channel 1 1
      disabled: true
