# 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: 15.4.4. [TC-SC-4.4] Discovery [DUT as Controller]

PICS:
    - PICS_MCORE_ROLE_CONTROLLER

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

tests:
    - label: "Note"
      verification: |
          Chip-tool command used below are an example to verify the  DUT as controller test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "TH starts commissioning process with DUT"
      verification: |
          1. Provision the DUT by TH (Chip-tool)
      disabled: true

    - label: "DUT reads Vendor Id attribute from TH"
      PICS: BINFO.C.A0002
      verification: |
          ./chip-tool  basicinformation read vendor-id  1 0

          On TH,  Verify that TH read and shows Vendor Id value

          [1660776352.802689][3357:3357] CHIP:DMG:
          [1660776352.802776][3357:3357] CHIP:DMG: ReportDataMessage =
          [1660776352.802807][3357:3357] CHIP:DMG: {
          [1660776352.802832][3357:3357] CHIP:DMG:         AttributeReportIBs =
          [1660776352.802868][3357:3357] CHIP:DMG:         [
          [1660776352.802896][3357:3357] CHIP:DMG:                 AttributeReportIB =
          [1660776352.802933][3357:3357] CHIP:DMG:                 {
          [1660776352.802963][3357:3357] CHIP:DMG:                         AttributeDataIB =
          [1660776352.802999][3357:3357] CHIP:DMG:                         {
          [1660776352.803040][3357:3357] CHIP:DMG:                                 DataVersion = 0x5c6f4557,
          [1660776352.803080][3357:3357] CHIP:DMG:                                 AttributePathIB =
          [1660776352.803118][3357:3357] CHIP:DMG:                                 {
          [1660776352.803157][3357:3357] CHIP:DMG:                                         Endpoint = 0x0,
          [1660776352.803198][3357:3357] CHIP:DMG:                                         Cluster = 0x28,
          [1660776352.803241][3357:3357] CHIP:DMG:                                         Attribute = 0x0000_0002,
          [1660776352.803279][3357:3357] CHIP:DMG:                                 }
          [1660776352.803319][3357:3357] CHIP:DMG:
          [1660776352.803360][3357:3357] CHIP:DMG:                                 Data = 65521,
          [1660776352.803396][3357:3357] CHIP:DMG:                         },
          [1660776352.803434][3357:3357] CHIP:DMG:
          [1660776352.803468][3357:3357] CHIP:DMG:                 },
          [1660776352.803503][3357:3357] CHIP:DMG:
          [1660776352.803530][3357:3357] CHIP:DMG:         ],
          [1660776352.803571][3357:3357] CHIP:DMG:
          [1660776352.803600][3357:3357] CHIP:DMG:         SuppressResponse = true,
          [1660776352.803628][3357:3357] CHIP:DMG:         InteractionModelRevision = 1
          [1660776352.803655][3357:3357] CHIP:DMG: }
          [1660776352.803699][3357:3357] CHIP:DMG:
      disabled: true

    - label: "Change the IP address of TH by any means within the same network"
      verification: |
          Connect the raspi running the TH to another router which is on the same network. Make sure that the DUT and TH are on the same network and can ping to each other. Observe that the TH gets a new IP address. Perform Step 4
      disabled: true

    - label: "DUT reads Vendor Id attribute from TH"
      PICS: BINFO.C.A0002
      verification: |
          ./chip-tool  basicinformation read vendor-id  1 0

          On TH,  Verify that TH read and shows Vendor Id value

          [1660776352.802689][3357:3357] CHIP:DMG:
          [1660776352.802776][3357:3357] CHIP:DMG: ReportDataMessage =
          [1660776352.802807][3357:3357] CHIP:DMG: {
          [1660776352.802832][3357:3357] CHIP:DMG:         AttributeReportIBs =
          [1660776352.802868][3357:3357] CHIP:DMG:         [
          [1660776352.802896][3357:3357] CHIP:DMG:                 AttributeReportIB =
          [1660776352.802933][3357:3357] CHIP:DMG:                 {
          [1660776352.802963][3357:3357] CHIP:DMG:                         AttributeDataIB =
          [1660776352.802999][3357:3357] CHIP:DMG:                         {
          [1660776352.803040][3357:3357] CHIP:DMG:                                 DataVersion = 0x5c6f4557,
          [1660776352.803080][3357:3357] CHIP:DMG:                                 AttributePathIB =
          [1660776352.803118][3357:3357] CHIP:DMG:                                 {
          [1660776352.803157][3357:3357] CHIP:DMG:                                         Endpoint = 0x0,
          [1660776352.803198][3357:3357] CHIP:DMG:                                         Cluster = 0x28,
          [1660776352.803241][3357:3357] CHIP:DMG:                                         Attribute = 0x0000_0002,
          [1660776352.803279][3357:3357] CHIP:DMG:                                 }
          [1660776352.803319][3357:3357] CHIP:DMG:
          [1660776352.803360][3357:3357] CHIP:DMG:                                 Data = 65521,
          [1660776352.803396][3357:3357] CHIP:DMG:                         },
          [1660776352.803434][3357:3357] CHIP:DMG:
          [1660776352.803468][3357:3357] CHIP:DMG:                 },
          [1660776352.803503][3357:3357] CHIP:DMG:
          [1660776352.803530][3357:3357] CHIP:DMG:         ],
          [1660776352.803571][3357:3357] CHIP:DMG:
          [1660776352.803600][3357:3357] CHIP:DMG:         SuppressResponse = true,
          [1660776352.803628][3357:3357] CHIP:DMG:         InteractionModelRevision = 1
          [1660776352.803655][3357:3357] CHIP:DMG: }
          [1660776352.803699][3357:3357] CHIP:DMG:
      disabled: true
