# 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: "Step 1: 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
          On TH (tv-app), Verify the  change channel command is received successfully.
          [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
