# 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.1.13. [TC-DD-1.13] Onboarding Payload Verification - Custom Flow = 1 [DUT
    - Commissionee]

PICS:
    - MCORE.ROLE.COMMISSIONEE
    - MCORE.DD.QR
    - MCORE.DD.USER_INTENT_COMM_FLOW

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

tests:
    - label: "Preconditions"
      verification: |
          1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual)
      disabled: true

    - label: "Power on the DUT device."
      verification: |
          1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up

          $  ./chip-tool discover commissionables
          TH Commissioner should not discover the DUT here
      disabled: true

    - label: "Scan the DUTs QR code from the previous step using the TH."
      verification: |
          1. Run DUT. Example for DUT=all-clusters app
          $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021

          2. Parse onboarding payload using TH=chip-tool
          $  ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00

          Verify in TH as commissioner side:
          [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00
          [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 1
          [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521
          [1651193251087] [15494:447566] CHIP: [SPL] Version: 0
          [1651193251087] [15494:447566] CHIP: [SPL] ProductID: 32769
          [1651193251087] [15494:447566] CHIP: [SPL] Discriminator: 3840
          [1651193251087] [15494:447566] CHIP: [SPL] SetUpPINCode: 20202021
          [1651193251087] [15494:447566] CHIP: [SPL] RendezvousInformation: 4
      disabled: true

    - label:
          "Follow any DUT-specific steps for putting the DUT Commissionee into
          commissioning mode"
      verification: |
          1. Follow vendor-specific steps from the pairing hint to put DUT into commissioning mode
          2. Verify DUT is advertising in commissioning mode. On DUT,

          For devices already on the network:
          $  ./chip-tool discover commissionables
          Verify in TH as commissioner side:

          [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32
          [1651192893436] [15304:442604] CHIP: [DIS]         Vendor ID: 65521
          [1651192893436] [15304:442604] CHIP: [DIS]         Product ID: 32769
          [1651192893436] [15304:442604] CHIP: [DIS]         Long Discriminator: 3840
          [1651192893436] [15304:442604] CHIP: [DIS]         Pairing Hint: 33
          [1651192893436] [15304:442604] CHIP: [DIS]         Hostname: DCA6328D6E320000
          [1651192893436] [15304:442604] CHIP: [DIS]         Instance Name: 914762134DA8E7D1
          [1651192893436] [15304:442604] CHIP: [DIS]         IP Address #1: fe80::dea6:32ff:fe8d:6e32
          [1651192893436] [15304:442604] CHIP: [DIS]         Port: 5540
          [1651192893436] [15304:442604] CHIP: [DIS]         Commissioning Mode: 1
          [1651192893436] [15304:442604] CHIP: [DIS]         Mrp Interval idle: 5000 ms
          [1651192893436] [15304:442604] CHIP: [DIS]         Mrp Interval active: 300 ms

          For devices not on the network (i.e. BLE discovery):
          1. Discover commissionables over BLE using a BLE discovery tool of choice.
          Try NRF Connect app (https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop)
          OR
          HCIDump (https://ubuntu.com/core/docs/bluez/reference/commands)
          Observe the DUT advertising in a commissionable state
      disabled: true
