# 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)

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
