# 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.2.2. [TC-OCC-2.2] Attributes with client as DUT

PICS:
    - OCC.S

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

tests:
    - label: "Commission DUT to TH"
      verification: |
          verification step to be updated.
      disabled: true

    - label: "DUT reads from the TH the (0x0000) Occupancy attribute"
      PICS: OCC.C.A0000
      verification: |
          ./chip-tool occupancysensing read occupancy 1 1

          verify the " occupancy response" on the TH (all-cluster-app) log:

          [1657906563.293939][2361:2361] CHIP:IM: Received Read request
          [1657906563.294045][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906563.294085][2361:2361] CHIP:DMG: {
          [1657906563.294118][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906563.294157][2361:2361] CHIP:DMG:        [
          [1657906563.294192][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906563.294235][2361:2361] CHIP:DMG:                {
          [1657906563.294280][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906563.294319][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906563.294375][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0000,
          [1657906563.294415][2361:2361] CHIP:DMG:                }
          [1657906563.294456][2361:2361] CHIP:DMG:
          [1657906563.294497][2361:2361] CHIP:DMG:        ],
          [1657906563.294538][2361:2361] CHIP:DMG:
          [1657906563.294608][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906563.294653][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906563.294688][2361:2361] CHIP:DMG: },
      disabled: true

    - label: "DUT reads from the TH the (0x0001) OccupancySensorType attribute"
      PICS: OCC.C.A0001
      verification: |
          ./chip-tool occupancysensing read occupancy-sensor-type 1 1

          verify the " occupancy-sensor-type response" on the TH (all-cluster-app) log:

          [1657906599.161154][2361:2361] CHIP:IM: Received Read request
          [1657906599.161269][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906599.161312][2361:2361] CHIP:DMG: {
          [1657906599.161348][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906599.161385][2361:2361] CHIP:DMG:        [
          [1657906599.161419][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906599.161463][2361:2361] CHIP:DMG:                {
          [1657906599.161518][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906599.161570][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906599.161621][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0001,
          [1657906599.161669][2361:2361] CHIP:DMG:                }
          [1657906599.161716][2361:2361] CHIP:DMG:
          [1657906599.161757][2361:2361] CHIP:DMG:        ],
          [1657906599.161803][2361:2361] CHIP:DMG:
          [1657906599.161846][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906599.161887][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906599.161924][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0002) OccupancySensorTypeBitmap
          attribute"
      PICS: OCC.C.A0002
      verification: |
          ./chip-tool occupancysensing read occupancy-sensor-type-bitmap 1 1

          verify the " occupancy-sensor-type-bitmap response" on the TH (all-cluster-app) log:

          [1657906629.182638][2361:2361] CHIP:IM: Received Read request
          [1657906629.182760][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906629.182805][2361:2361] CHIP:DMG: {
          [1657906629.182841][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906629.182883][2361:2361] CHIP:DMG:        [
          [1657906629.182923][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906629.182967][2361:2361] CHIP:DMG:                {
          [1657906629.183013][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906629.183065][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906629.183113][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0002,
          [1657906629.183167][2361:2361] CHIP:DMG:                }
          [1657906629.183218][2361:2361] CHIP:DMG:
          [1657906629.183260][2361:2361] CHIP:DMG:        ],
          [1657906629.183305][2361:2361] CHIP:DMG:
          [1657906629.183422][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906629.183467][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906629.183504][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0010) PIROccupiedToUnoccupiedDelay
          optional attribute, if PIR sensor"
      PICS: OCC.C.A0010
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read pir-occupied-to-unoccupied-delay 1 1

          verify the " pir-occupied-to-unoccupied-delay response" on the TH (all-cluster-app) log:

          [1657906650.927182][2361:2361] CHIP:IM: Received Read request
          [1657906650.927324][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906650.927381][2361:2361] CHIP:DMG: {
          [1657906650.927427][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906650.927482][2361:2361] CHIP:DMG:        [
          [1657906650.927532][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906650.927590][2361:2361] CHIP:DMG:                {
          [1657906650.927651][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906650.927717][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906650.927783][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0010,
          [1657906650.927846][2361:2361] CHIP:DMG:                }
          [1657906650.927905][2361:2361] CHIP:DMG:
          [1657906650.927960][2361:2361] CHIP:DMG:        ],
          [1657906650.928018][2361:2361] CHIP:DMG:
          [1657906650.928073][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906650.928126][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906650.928184][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0011) PIRUnoccupiedToOccupiedDelay
          optional attribute, if PIR sensor"
      PICS: OCC.C.A0011
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


           ./chip-tool occupancysensing read  pir-unoccupied-to-occupied-delay  1 1

          verify the " pir-unoccupied-to-occupied-delay response" on the TH (all-cluster-app) log:

          [1657906670.678493][2361:2361] CHIP:IM: Received Read request
          [1657906670.678680][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906670.678741][2361:2361] CHIP:DMG: {
          [1657906670.678787][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906670.678842][2361:2361] CHIP:DMG:        [
          [1657906670.678892][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906670.678950][2361:2361] CHIP:DMG:                {
          [1657906670.679008][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906670.679073][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906670.679141][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0011,
          [1657906670.679201][2361:2361] CHIP:DMG:                }
          [1657906670.679263][2361:2361] CHIP:DMG:
          [1657906670.679321][2361:2361] CHIP:DMG:        ],
          [1657906670.679380][2361:2361] CHIP:DMG:
          [1657906670.679435][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906670.679493][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906670.679542][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0012) PIRUnoccupiedToOccupiedThreshold
          optional attribute, if PIR sensor"
      PICS: OCC.C.A0012
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read pir-unoccupied-to-occupied-threshold  1 1

          verify the " pir-unoccupied-to-occupied-threshold response" on the TH (all-cluster-app) log:

          [1657906696.122069][2361:2361] CHIP:IM: Received Read request
          [1657906696.122210][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906696.122265][2361:2361] CHIP:DMG: {
          [1657906696.122312][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906696.122366][2361:2361] CHIP:DMG:        [
          [1657906696.122416][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906696.122480][2361:2361] CHIP:DMG:                {
          [1657906696.122543][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906696.122670][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906696.122744][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0012,
          [1657906696.122809][2361:2361] CHIP:DMG:                }
          [1657906696.122874][2361:2361] CHIP:DMG:
          [1657906696.122929][2361:2361] CHIP:DMG:        ],
          [1657906696.122987][2361:2361] CHIP:DMG:
          [1657906696.123042][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906696.123094][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906696.123143][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0020)
          UltrasonicOccupiedToUnoccupiedDelay optional attribute, if ultrasonic
          sensor"
      PICS: OCC.C.A0020
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read ultrasonic-occupied-to-unoccupied-delay  1 1

          verify the " ultrasonic-occupied-to-unoccupied-delay response" on the TH (all-cluster-app) log:

          [1657906729.107330][2361:2361] CHIP:IM: Received Read request
          [1657906729.107455][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906729.107504][2361:2361] CHIP:DMG: {
          [1657906729.107566][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906729.107620][2361:2361] CHIP:DMG:        [
          [1657906729.107664][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906729.107738][2361:2361] CHIP:DMG:                {
          [1657906729.107789][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906729.107847][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906729.107929][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0020,
          [1657906729.107984][2361:2361] CHIP:DMG:                }
          [1657906729.108038][2361:2361] CHIP:DMG:
          [1657906729.108105][2361:2361] CHIP:DMG:        ],
          [1657906729.108157][2361:2361] CHIP:DMG:
          [1657906729.108205][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906729.108269][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906729.108312][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0021)
          UltrasonicUnoccupiedToOccupiedDelay optional attribute, if ultrasonic
          sensor"
      PICS: OCC.C.A0021
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read  ultrasonic-unoccupied-to-occupied-delay 1 1

          verify the " ultrasonic-unoccupied-to-occupied-delay response" on the TH (all-cluster-app) log:

          [1657906752.147785][2361:2361] CHIP:IM: Received Read request
          [1657906752.147914][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906752.147963][2361:2361] CHIP:DMG: {
          [1657906752.148021][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906752.148070][2361:2361] CHIP:DMG:        [
          [1657906752.148113][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906752.148183][2361:2361] CHIP:DMG:                {
          [1657906752.148240][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906752.148304][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906752.148378][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0021,
          [1657906752.148433][2361:2361] CHIP:DMG:                }
          [1657906752.148484][2361:2361] CHIP:DMG:
          [1657906752.148551][2361:2361] CHIP:DMG:        ],
          [1657906752.148603][2361:2361] CHIP:DMG:
          [1657906752.148651][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906752.148717][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906752.148760][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0022)
          UltrasonicUnoccupiedToOccupiedThreshold optional attribute, if
          ultrasonic sensor"
      PICS: OCC.C.A0022
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome



          ./chip-tool occupancysensing read ultrasonic-unoccupied-to-occupied-threshold 1 1

          verify the " ultrasonic-unoccupied-to-occupied-threshold response" on the TH (all-cluster-app) log:

          [1657906770.663661][2361:2361] CHIP:IM: Received Read request
          [1657906770.663787][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906770.663853][2361:2361] CHIP:DMG: {
          [1657906770.663896][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906770.663943][2361:2361] CHIP:DMG:        [
          [1657906770.663988][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906770.664055][2361:2361] CHIP:DMG:                {
          [1657906770.664107][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906770.664195][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906770.664255][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0022,
          [1657906770.664299][2361:2361] CHIP:DMG:                }
          [1657906770.664365][2361:2361] CHIP:DMG:
          [1657906770.664415][2361:2361] CHIP:DMG:        ],
          [1657906770.664466][2361:2361] CHIP:DMG:
          [1657906770.664530][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906770.664578][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906770.664621][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0030)
          PhysicalContactOccupiedToUnoccupiedDelay optional attribute, if
          Physical Contact sensor"
      PICS: OCC.C.A0030
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome

          ./chip-tool occupancysensing read physical-contact-occupied-to-unoccupied-delay 1 1

          verify the " physical-contact-occupied-to-unoccupied-delay response" on the TH (all-cluster-app) log:

          [1657906788.836643][2361:2361] CHIP:IM: Received Read request
          [1657906788.836806][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906788.836862][2361:2361] CHIP:DMG: {
          [1657906788.836928][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906788.836982][2361:2361] CHIP:DMG:        [
          [1657906788.837032][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906788.837110][2361:2361] CHIP:DMG:                {
          [1657906788.837170][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906788.837246][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906788.837328][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0030,
          [1657906788.837387][2361:2361] CHIP:DMG:                }
          [1657906788.837464][2361:2361] CHIP:DMG:
          [1657906788.837520][2361:2361] CHIP:DMG:        ],
          [1657906788.837579][2361:2361] CHIP:DMG:
          [1657906788.837634][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906788.837706][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906788.837756][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0031)
          PhysicalContactUnoccupiedToOccupiedDelay optional attribute, if
          Physical Contact sensor"
      PICS: OCC.C.A0031
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read physical-contact-unoccupied-to-occupied-delay 1 1

          verify the " physical-contact-unoccupied-to-occupied-delay response" on the TH (all-cluster-app) log:

          [1657906806.229307][2361:2361] CHIP:IM: Received Read request
          [1657906806.229449][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906806.229503][2361:2361] CHIP:DMG: {
          [1657906806.229572][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906806.229628][2361:2361] CHIP:DMG:        [
          [1657906806.229678][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906806.229759][2361:2361] CHIP:DMG:                {
          [1657906806.229823][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906806.229891][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906806.229972][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0031,
          [1657906806.230028][2361:2361] CHIP:DMG:                }
          [1657906806.230090][2361:2361] CHIP:DMG:
          [1657906806.230166][2361:2361] CHIP:DMG:        ],
          [1657906806.230224][2361:2361] CHIP:DMG:
          [1657906806.230279][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906806.230348][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906806.230399][2361:2361] CHIP:DMG: },
      disabled: true

    - label:
          "DUT reads from the TH the (0x0032)
          PhysicalContactUnoccupiedToOccupiedThreshold optional attribute, if
          Physical Contact sensor"
      PICS: OCC.C.A0032
      verification: |
          This is an Optional attribute, so its not compulsory to get the expected outcome


          ./chip-tool occupancysensing read  physical-contact-unoccupied-to-occupied-threshold 1 1

          verify the " physical-contact-unoccupied-to-occupied-threshold response" on the TH (all-cluster-app) log:

          [1657906821.965692][2361:2361] CHIP:IM: Received Read request
          [1657906821.965776][2361:2361] CHIP:DMG: ReadRequestMessage =
          [1657906821.965808][2361:2361] CHIP:DMG: {
          [1657906821.965831][2361:2361] CHIP:DMG:        AttributePathIBs =
          [1657906821.965872][2361:2361] CHIP:DMG:        [
          [1657906821.965902][2361:2361] CHIP:DMG:                AttributePathIB =
          [1657906821.965937][2361:2361] CHIP:DMG:                {
          [1657906821.965971][2361:2361] CHIP:DMG:                        Endpoint = 0x1,
          [1657906821.966019][2361:2361] CHIP:DMG:                        Cluster = 0x406,
          [1657906821.966057][2361:2361] CHIP:DMG:                        Attribute = 0x0000_0032,
          [1657906821.966092][2361:2361] CHIP:DMG:                }
          [1657906821.966135][2361:2361] CHIP:DMG:
          [1657906821.966167][2361:2361] CHIP:DMG:        ],
          [1657906821.966197][2361:2361] CHIP:DMG:
          [1657906821.966220][2361:2361] CHIP:DMG:        isFabricFiltered = true,
          [1657906821.966241][2361:2361] CHIP:DMG:        InteractionModelRevision = 1
          [1657906821.966277][2361:2361] CHIP:DMG: },
      disabled: true
