# 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: 80.3.3. [TC-MOD-3.3] OTA Mode Verification (DUT as Server)

PICS:
    - MOD.S.A0004

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

tests:
    - label: "TH reads the StartUpMode attribute from the DUT"
      PICS: MOD.S.A0004
      verification: |
          ./chip-tool modeselect read start-up-mode 1 1

          on TH,Verify that the DUT response is the integer. Record this value for usage in step 2.

          [1645778279.693082][4898:4903] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0003DataVersion: 3781469722
          [1645778279.693151][4898:4903] CHIP:TOO:   StartUpMode: 0
      disabled: true

    - label: "TH reads the CurrentMode attribute from the DUT"
      PICS: MOD.S.A0003
      verification: |
          ./chip-tool modeselect read current-mode 1 1

          on TH,Verify that the DUT response is the integer. Record this value for usage in step 2b and 3.

          [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721
          [1645778146.171602][4876:4881] CHIP:TOO:   CurrentMode: 7
      disabled: true

    - label:
          "If the StartUpMode and CurrentMode attributes have the same value,
          proceed to step 2c, Otherwise proceed to step 3a."
      PICS: MOD.S.A0003 && MOD.S.A0004
      verification: |
          NOTE:
          If the StartUpMode and CurrentMode attributes have the same value, proceed to step 2c, Otherwise proceed to step 3a.
      disabled: true

    - label: "TH reads the SupportedModes attribute from the DUT"
      PICS: MOD.S.A0002
      verification: |
          ./chip-tool modeselect read supported-modes 1 1

          on TH,Verify that the DUT response provides a list of supported modes

          [1645776742.667057][4661:4666] CHIP:TOO:   SupportedModes: 3 entries
          [1645776742.669546][4661:4666] CHIP:TOO:     [1]: {
          [1645776742.669588][4661:4666] CHIP:TOO:       Label: Black
          [1645776742.669613][4661:4666] CHIP:TOO:       Mode: 0
          [1645776742.669636][4661:4666] CHIP:TOO:       SemanticTag: 0
          [1645776742.669661][4661:4666] CHIP:TOO:      }
          [1645776742.669692][4661:4666] CHIP:TOO:     [2]: {
          [1645776742.669715][4661:4666] CHIP:TOO:       Label: Cappuccino
          [1645776742.669737][4661:4666] CHIP:TOO:       Mode: 4
          [1645776742.669757][4661:4666] CHIP:TOO:       SemanticTag: 0
          [1645776742.669779][4661:4666] CHIP:TOO:      }
          [1645776742.669808][4661:4666] CHIP:TOO:     [3]: {
          [1645776742.669831][4661:4666] CHIP:TOO:       Label: Espresso
          [1645776742.669853][4661:4666] CHIP:TOO:       Mode: 7
          [1645776742.669874][4661:4666] CHIP:TOO:       SemanticTag: 0
          [1645776742.669896][4661:4666] CHIP:TOO:      }
      disabled: true

    - label:
          "Select a value from the list in step 2c with a different value than
          the StartUpMode value read in step 1. TH sends a ChangeToMode command
          to the DUT with the selected value."
      PICS: MOD.S.A0002 && MOD.S.C00.Rsp
      verification: |
          ./chip-tool modeselect change-to-mode 4 1 1

          on TH,Verify that the DUT responds with a successful (value 0x00) status response.

          [1645778189.045030][4888:4893] CHIP:DMG: Received Command Response Status for Endpoint=1 Cluster=0x0000_0050 Command=0x0000_0000 Status=0x0
      disabled: true

    - label:
          "Perform an OTA update on the device that requires a reboot. Allow for
          the DUT to update and fully reboot."
      verification: |
          Perform an OTA update on the device that requires a reboot. Allow for the DUT to update and fully reboot.
      disabled: true

    - label: "TH reads the CurrentMode attribute from the DUT"
      PICS: MOD.S.A0003
      verification: |
          ./chip-tool modeselect read current-mode 1 1

          on TH,Verify that the DUT response is the integer recorded in step 2a or, if the mode was changed, 2d.

          [1645778146.171510][4876:4881] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0050 Attribute 0x0000_0000DataVersion: 3781469721
          [1645778146.171602][4876:4881] CHIP:TOO:   CurrentMode: 4
      disabled: true
