# 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.3.13. [TC-DD-3.13] Commissioning Flow = 2 (Custom Flow) - QR Code [DUT -
    Commissioner]

PICS:
    - MCORE.ROLE.COMMISSIONER
    - MCORE.DD.QR_COMMISSIONING
    - MCORE.DD.CUSTOM_COMM_FLOW

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

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

    - label: "Preconditions"
      verification: |
          1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available.

          2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual).

          An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes:

          - 3-bit Version String=000

          - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier")

          - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier")

          - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2)

          - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork)

          - 12-bit Discriminator=0xF00

          - 27-bit Passcode=20202021

          - 4-bit Padding=0000

          - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data")
      disabled: true

    - label:
          "Custom Commissioning Flow: Use a Commissionee with a QR code that has
          the Custom Flow field set to 2 and supports BLE for its Discovery
          Capability. Commissionee is NOT in commissioning mode. Ensure the
          Version bit string follows the current Matter spec. documentation."
      PICS: MCORE.DD.DISCOVERY_BLE
      verification: |
          Verify on the TH Commissionee side:
          $ ./out/ble/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 2

          [1657235055.253604][370941:370941] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ====
          [1657235055.253688][370941:370941] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00]
          [1657235055.253736][370941:370941] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1657235055.253774][370941:370941] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00
      disabled: true

    - label: "Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          1. Verify the QR code is scanned by DUT
          Note: chip-tool does not support physically scanning QR codes
      disabled: true

    - label: "DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_BLE
      verification: |
          1. Parse the payload of the TH commissionee

          Verify on the DUT Commissioner side:
          $ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00
          [1660352364702] [20244:11810896] CHIP: [SPL] Parsing base38Representation: MT:-24J0YXE00KA0648G00
          [1660352364702] [20244:11810896] CHIP: [SPL] Version:       0
          [1660352364702] [20244:11810896] CHIP: [SPL] VendorID:      65521
          [1660352364702] [20244:11810896] CHIP: [SPL] ProductID:     32769
          [1660352364702] [20244:11810896] CHIP: [SPL] Custom flow:   2    (CUSTOM)
          [1660352364702] [20244:11810896] CHIP: [SPL] Capabilities:  0x02 (BLE)
          [1660352364702] [20244:11810896] CHIP: [SPL] Discriminator: 3840
          [1660352364702] [20244:11810896] CHIP: [SPL] Passcode:      20202021

          2. Verify that TH logs do not show the commissionee being commissioned by the DUT.
      disabled: true

    - label:
          "User should follow any TH-specific steps, unless the DUT has
          alternative means to guide the user to successful commissioning, for
          putting the TH Commissionee into commissioning mode, for triggering
          the DUT Commissioner for commissioning, and for completing the
          commissioning process using BLE."
      PICS: MCORE.DD.DISCOVERY_BLE
      verification: |
          Verify on the TH Commissionee side:
          [1657235088.040328][370941:370941] CHIP:SVR: Commissioning completed successfully
          [1657235088.040371][370941:370941] CHIP:DIS: Updating services using commissioning mode 0

          Verify on the DUT Commissioner side:
          $ ./chip-tool pairing code 1  MT:-24J0YXE00KA0648G00
          [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step "Cleanup"
          [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success
      disabled: true

    - label:
          "Custom Commissioning Flow: Use a Commissionee with a QR code that has
          the Custom Flow field set to 2 and supports IP Network for its
          Discovery Capability. Commissionee is NOT in commissioning mode.
          Ensure the Version bit string follows the current Matter spec.
          documentation."
      PICS: MCORE.DD.DISCOVERY_IP
      verification: |
          Verify on the TH Commissionee side:
          $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 4

          [1657235141.663008][370963:370963] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ====
          [1657235141.663082][370963:370963] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00]
          [1657235141.663133][370963:370963] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1657235141.663189][370963:370963] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00
      disabled: true

    - label: "Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          1. Verify the QR code is scanned by DUT
          Note: chip-tool does not support physically scanning QR codes
      disabled: true

    - label: "DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_IP
      verification: |
          1. Parse the payload of the TH commissionee

          Verify on the DUT Commissioner side:
          $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00
          [1660352541112] [20246:11812333] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00
          [1660352541113] [20246:11812333] CHIP: [SPL] Version:       0
          [1660352541113] [20246:11812333] CHIP: [SPL] VendorID:      65521
          [1660352541113] [20246:11812333] CHIP: [SPL] ProductID:     32769
          [1660352541114] [20246:11812333] CHIP: [SPL] Custom flow:   2    (CUSTOM)
          [1660352541114] [20246:11812333] CHIP: [SPL] Capabilities:  0x04 (On IP network)
          [1660352541114] [20246:11812333] CHIP: [SPL] Discriminator: 3840
          [1660352541114] [20246:11812333] CHIP: [SPL] Passcode:      20202021

          2. Verify that TH logs do not show the commissionee being commissioned by the DUT.
      disabled: true

    - label:
          "User should follow any TH-specific steps, unless the DUT has
          alternative means to guide the user to successful commissioning, for
          putting the TH Commissionee into commissioning mode, for triggering
          the DUT Commissioner for commissioning, and for completing the
          commissioning process using IP Network."
      PICS: MCORE.DD.DISCOVERY_IP
      verification: |
          Verify on the TH Commissionee side:
          [1657235198.977848][370963:370963] CHIP:SVR: Commissioning completed successfully
          [1657235198.977943][370963:370963] CHIP:DIS: Updating services using commissioning mode 0

          Verify on the DUT Commissioner side:
          $ ./chip-tool pairing code 1  MT:-24J029Q00KA0648G00
          [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step "Cleanup"
          [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success
      disabled: true

    - label:
          "Custom Commissioning Flow: Use a Commissionee with a QR code that has
          the Custom Flow field set to 2 and supports SoftAP for its Discovery
          Capability. Commissionee is NOT in commissioning mode. Ensure the
          Version bit string follows the current Matter spec. documentation."
      PICS: MCORE.DD.DISCOVERY_SOFTAP
      verification: |
          Out of Scope for V1.0
          SoftAP commissioning not currently supported
      disabled: true

    - label: "Scan the QR code from the previous step using the DUT."
      PICS: MCORE.DD.SCAN_QR_CODE
      verification: |
          Out of Scope for V1.0
          SoftAP commissioning not currently supported
      disabled: true

    - label: "DUT parses QR code."
      PICS: MCORE.DD.DISCOVERY_SOFTAP
      verification: |
          Out of Scope for V1.0
          SoftAP commissioning not currently supported
      disabled: true

    - label:
          "User should follow any TH-specific steps, unless the DUT has
          alternative means to guide the user to successful commissioning, for
          putting the TH Commissionee into commissioning mode, for triggering
          the DUT Commissioner for commissioning, and for completing the
          commissioning process using SoftAP."
      PICS: MCORE.DD.DISCOVERY_SOFTAP
      verification: |
          Out of Scope for V1.0
          SoftAP commissioning not currently supported
      disabled: true
