# 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.9. [TC-DD-1.9] Manual Pairing Code Payload Verification [DUT -
    Commissioner]

PICS:
    - MCORE.ROLE.COMMISSIONER
    - MCORE.DD.MANUAL_PC_COMMISSIONING

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

tests:
    - label:
          "Provide the 11-digit/21-digit Manual Pairing Code from the TH Device
          in text, speech or any format supported by DUT"
      verification: |
          1. Launch all-clusters-app on the raspi , get the Manual Pairing code from the log

          ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi

          [13293:13293] CHIP:DL: Device Configuration:
          [1653306603.740569][13293:13293] CHIP:DL:   Serial Number: TEST_SN
          [1653306603.740607][13293:13293] CHIP:DL:   Vendor Id: 65521 (0xFFF1)
          [1653306603.740644][13293:13293] CHIP:DL:   Product Id: 32769 (0x8001)
          [1653306603.740676][13293:13293] CHIP:DL:   Hardware Version: 0
          [1653306603.740700][13293:13293] CHIP:DL:   Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
          [1653306603.740722][13293:13293] CHIP:DL:   Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
          [1653306603.740752][13293:13293] CHIP:DL:   Manufacturing Date: (not set)
          [1653306603.740777][13293:13293] CHIP:DL:   Device Type: 65535 (0xFFFF)
          [1653306603.740798][13293:13293] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ====
          [1653306603.740846][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J042C00KA0648G00]
          [1653306603.740877][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1653306603.740898][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J042C00KA0648G00
          [1653306603.740929][13293:13293] CHIP:SVR: Manual pairing code: [34970112332]
          [1653306603.740951][13293:13293] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ====
          [1653306603.741000][13293:13293] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00]
          [1653306603.741028][13293:13293] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1653306603.741049][13293:13293] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00
          [1653306603.741081][13293:13293] CHIP:SVR: Manual pairing code: [749701123365521327694]


          2. Parse 11-digit Manual Pairing code
          ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload 34970112332

          Verify in DUT as client side:
          CHIP:SPL: Parsing decimalRepresentation: 34970112332
          CHIP:SPL: CommissioningFlow: 0
          CHIP:SPL: VendorID: 0
          CHIP:SPL: Version: 0
          CHIP:SPL: ProductID: 0
          CHIP:SPL: Discriminator: 3840
          CHIP:SPL: SetUpPINCode: 20202021
          CHIP:SPL: RendezvousInformation: 0

          3. Parse 21-digit Manual Pairing code
          ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload 749701123365521327694

          Verify in DUT as client side:
          CHIP:SPL: Parsing decimalRepresentation: 749701123365521327694
          CHIP:SPL: CommissioningFlow: 2
          CHIP:SPL: VendorID: 65521
          CHIP:SPL: Version: 0
          CHIP:SPL: ProductID: 32769
          CHIP:SPL: Discriminator: 3840
          CHIP:SPL: SetUpPINCode: 20202021
          CHIP:SPL: RendezvousInformation: 0

          4. Parse payload by commissioning the TH
          ./chip-tool pairing code 1 34970112332

          Verify in DUT as client side:
          [1653556303.582797][4071:4076] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005
          [1653556303.582850][4071:4076] CHIP:CTL: Received CommissioningComplete response, errorCode=0
          [1653556303.582891][4071:4076] CHIP:CTL: Successfully finished commissioning step "SendComplete"
          [1653556303.582927][4071:4076] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup"
          [1653556303.582964][4071:4076] CHIP:CTL: Performing next commissioning step "Cleanup"
          [1653556303.583040][4071:4076] CHIP:CTL: Successfully finished commissioning step "Cleanup"
          [1653556303.583110][4071:4076] CHIP:TOO: Device commissioning completed with success
          [1653556303.583209][4071:4076] CHIP:DMG: ICR moving to [AwaitingDe]
          [1653556303.583255][4071:4076] CHIP:EM: Sending Standalone Ack for MessageCounter:9735725 on exchange 24476i
      disabled: true
