# 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: 88.3.1. [TC-DGGEN-3.1] Attributes [DUT as Client]

PICS:
    - DGGEN.C

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

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

    - label: "Commission TH to DUT"
      verification: |

      disabled: true

    - label: "DUT reads NetworkInterfaces structure attribute from TH."
      PICS: DGGEN.C.A0000
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read network-interfaces 1 0

           verify that list of supported NetworkInterfaces structures,  Structure data includes Name, IsOperational, OffPremiseServicesReachableIPv4, OffPremiseServicesReachableIPv6,   HardwareAddress, IPv4Addresses,  IPv6Addresses and type on TH(all-clusters-app)


          ReadRequestMessage =
          [1661421334.265953][2362:2362] CHIP:DMG: {
          [1661421334.266009][2362:2362] CHIP:DMG:         AttributePathIBs =
          [1661421334.266074][2362:2362] CHIP:DMG:         [
          [1661421334.266135][2362:2362] CHIP:DMG:                 AttributePathIB =
          [1661421334.266206][2362:2362] CHIP:DMG:                 {
          [1661421334.266288][2362:2362] CHIP:DMG:                         Endpoint = 0x0,
          [1661421334.266370][2362:2362] CHIP:DMG:                         Cluster = 0x33,
          [1661421334.266450][2362:2362] CHIP:DMG:                         Attribute = 0x0000_0000,
          [1661421334.266528][2362:2362] CHIP:DMG:                 }
          [1661421334.266605][2362:2362] CHIP:DMG:
          [1661421334.266675][2362:2362] CHIP:DMG:         ],
          [1661421334.266748][2362:2362] CHIP:DMG:
          [1661421334.266814][2362:2362] CHIP:DMG:         isFabricFiltered = true,
          [1661421334.266884][2362:2362] CHIP:DMG:         InteractionModelRevision = 1
          [1661421334.266944][2362:2362] CHIP:DMG: },
          [1661421334.267126][2362:2362] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661421334.267365][2362:2362] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661421334.267437][2362:2362] CHIP:DMG: <RE:Run> Cluster 33, Attribute 0 is dirty
          [1661421334.267491][2362:2362] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0000 (expanded=0)
          [1661421334.267558][2362:2362] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661421334.267638][2362:2362] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "DUT reads a RebootCount attribute value from TH. Then a TH (node)
          gets rebooted more than 2 times."
      PICS: DGGEN.C.A0001
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read reboot-count 1 0

          verify that RebootCount attribute data type must be UINT16 and the count should match with the number of rebooted times on TH(all-clusters-app).

          Received Read request
          [1661421488.051680][2362:2362] CHIP:DMG: ReadRequestMessage =
          [1661421488.051755][2362:2362] CHIP:DMG: {
          [1661421488.051811][2362:2362] CHIP:DMG:         AttributePathIBs =
          [1661421488.051876][2362:2362] CHIP:DMG:         [
          [1661421488.051937][2362:2362] CHIP:DMG:                 AttributePathIB =
          [1661421488.052025][2362:2362] CHIP:DMG:                 {
          [1661421488.052098][2362:2362] CHIP:DMG:                         Endpoint = 0x0,
          [1661421488.052185][2362:2362] CHIP:DMG:                         Cluster = 0x33,
          [1661421488.052266][2362:2362] CHIP:DMG:                         Attribute = 0x0000_0001,
          [1661421488.052355][2362:2362] CHIP:DMG:                 }
          [1661421488.052430][2362:2362] CHIP:DMG:
          [1661421488.052496][2362:2362] CHIP:DMG:         ],
          [1661421488.052570][2362:2362] CHIP:DMG:
          [1661421488.052637][2362:2362] CHIP:DMG:         isFabricFiltered = true,
          [1661421488.052701][2362:2362] CHIP:DMG:         InteractionModelRevision = 1
          [1661421488.052763][2362:2362] CHIP:DMG: },
          [1661421488.052936][2362:2362] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661421488.053176][2362:2362] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661421488.053301][2362:2362] CHIP:DMG: <RE:Run> Cluster 33, Attribute 1 is dirty
          [1661421488.053361][2362:2362] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0001 (expanded=0)
          [1661421488.053431][2362:2362] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661421488.053510][2362:2362] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "TH reboots and DUT reads a UpTime attribute value of TH since some
          arbitrary start time of TH rebooting."
      PICS: DGGEN.C.A0002
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read up-time 1 0

          Verify that UpTime attribute data type must be UINT64 and the time duratoin should be represented in seconds since DUT (node) has been rebooted on TH(all-clusters-app).

          ReadRequestMessage =
          [1661421563.809563][2362:2362] CHIP:DMG: {
          [1661421563.809617][2362:2362] CHIP:DMG:         AttributePathIBs =
          [1661421563.809681][2362:2362] CHIP:DMG:         [
          [1661421563.809741][2362:2362] CHIP:DMG:                 AttributePathIB =
          [1661421563.809812][2362:2362] CHIP:DMG:                 {
          [1661421563.809885][2362:2362] CHIP:DMG:                         Endpoint = 0x0,
          [1661421563.809983][2362:2362] CHIP:DMG:                         Cluster = 0x33,
          [1661421563.810076][2362:2362] CHIP:DMG:                         Attribute = 0x0000_0002,
          [1661421563.810155][2362:2362] CHIP:DMG:                 }
          [1661421563.810228][2362:2362] CHIP:DMG:
          [1661421563.810293][2362:2362] CHIP:DMG:         ],
          [1661421563.810366][2362:2362] CHIP:DMG:
          [1661421563.810433][2362:2362] CHIP:DMG:         isFabricFiltered = true,
          [1661421563.810497][2362:2362] CHIP:DMG:         InteractionModelRevision = 1
          [1661421563.810557][2362:2362] CHIP:DMG: },
          [1661421563.810736][2362:2362] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661421563.810990][2362:2362] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661421563.811066][2362:2362] CHIP:DMG: <RE:Run> Cluster 33, Attribute 2 is dirty
          [1661421563.811120][2362:2362] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0002 (expanded=0)
          [1661421563.811190][2362:2362] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661421563.811271][2362:2362] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label: "DUT reads a TotalOperationalHours attribute value from TH."
      PICS: DGGEN.C.A0003
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read total-operational-hours 1 0

          verify that TotalOperationalHours attribute data type must be UINT32 and the value indicates the number of hours the node has been operational since DUT (node) has been rebooted on TH(all-clusters-app).

          ReadRequestMessage =
          [1661421632.317370][2362:2362] CHIP:DMG: {
          [1661421632.317431][2362:2362] CHIP:DMG:         AttributePathIBs =
          [1661421632.317490][2362:2362] CHIP:DMG:         [
          [1661421632.317551][2362:2362] CHIP:DMG:                 AttributePathIB =
          [1661421632.317652][2362:2362] CHIP:DMG:                 {
          [1661421632.317733][2362:2362] CHIP:DMG:                         Endpoint = 0x0,
          [1661421632.317830][2362:2362] CHIP:DMG:                         Cluster = 0x33,
          [1661421632.317923][2362:2362] CHIP:DMG:                         Attribute = 0x0000_0003,
          [1661421632.318008][2362:2362] CHIP:DMG:                 }
          [1661421632.318090][2362:2362] CHIP:DMG:
          [1661421632.318163][2362:2362] CHIP:DMG:         ],
          [1661421632.318235][2362:2362] CHIP:DMG:
          [1661421632.318304][2362:2362] CHIP:DMG:         isFabricFiltered = true,
          [1661421632.318368][2362:2362] CHIP:DMG:         InteractionModelRevision = 1
          [1661421632.318428][2362:2362] CHIP:DMG: },
          [1661421632.318615][2362:2362] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661421632.318881][2362:2362] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661421632.318960][2362:2362] CHIP:DMG: <RE:Run> Cluster 33, Attribute 3 is dirty
          [1661421632.319014][2362:2362] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0003 (expanded=0)
          [1661421632.319081][2362:2362] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661421632.319159][2362:2362] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "TH undergoes a reboot process. DUT reads a attribute value from TH."
      PICS: DGGEN.C.A0004
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read boot-reason 1 0

          verify that  bootreason attribute data type must match the value listed in Table 105 BootReason ENUM table in spec on TH(all-clusters-app).


          ReadRequestMessage =
          [1661421678.360282][2362:2362] CHIP:DMG: {
          [1661421678.360336][2362:2362] CHIP:DMG:         AttributePathIBs =
          [1661421678.360400][2362:2362] CHIP:DMG:         [
          [1661421678.360461][2362:2362] CHIP:DMG:                 AttributePathIB =
          [1661421678.360531][2362:2362] CHIP:DMG:                 {
          [1661421678.360605][2362:2362] CHIP:DMG:                         Endpoint = 0x0,
          [1661421678.360688][2362:2362] CHIP:DMG:                         Cluster = 0x33,
          [1661421678.360767][2362:2362] CHIP:DMG:                         Attribute = 0x0000_0004,
          [1661421678.360843][2362:2362] CHIP:DMG:                 }
          [1661421678.360914][2362:2362] CHIP:DMG:
          [1661421678.360978][2362:2362] CHIP:DMG:         ],
          [1661421678.361048][2362:2362] CHIP:DMG:
          [1661421678.361114][2362:2362] CHIP:DMG:         isFabricFiltered = true,
          [1661421678.361178][2362:2362] CHIP:DMG:         InteractionModelRevision = 1
          [1661421678.361322][2362:2362] CHIP:DMG: },
          [1661421678.361498][2362:2362] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661421678.361719][2362:2362] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661421678.361792][2362:2362] CHIP:DMG: <RE:Run> Cluster 33, Attribute 4 is dirty
          [1661421678.361847][2362:2362] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0004 (expanded=0)
          [1661421678.361912][2362:2362] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661421678.361988][2362:2362] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "DUT reads ActiveHardwareFaults attribute value from TH. Subscription
          is possible option for this attribute."
      PICS: DGGEN.C.A0005
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read active-hardware-faults 1 0

          verify that ActiveHardwareFaults attribute the attribute response should be empty. But when a hardware fault occurs, the return attribute value must match the value listed in the HardwareFault ENUM table 11.11.6.1 on TH(all-clusters-app).

          [1659773303.234177][17263:17263] CHIP:DMG:
          [1659773303.234225][17263:17263] CHIP:DMG: ReportDataMessage =
          [1659773303.234234][17263:17263] CHIP:DMG: {
          [1659773303.234241][17263:17263] CHIP:DMG:         AttributeReportIBs =
          [1659773303.234256][17263:17263] CHIP:DMG:         [
          [1659773303.234264][17263:17263] CHIP:DMG:                 AttributeReportIB =
          [1659773303.234278][17263:17263] CHIP:DMG:                 {
          [1659773303.234286][17263:17263] CHIP:DMG:                         AttributeDataIB =
          [1659773303.234296][17263:17263] CHIP:DMG:                         {
          [1659773303.234306][17263:17263] CHIP:DMG:                                 DataVersion = 0x4dcd1218,
          [1659773303.234316][17263:17263] CHIP:DMG:                                 AttributePathIB =
          [1659773303.234326][17263:17263] CHIP:DMG:                                 {
          [1659773303.234336][17263:17263] CHIP:DMG:                                         Endpoint = 0x0,
          [1659773303.234346][17263:17263] CHIP:DMG:                                         Cluster = 0x33,
          [1659773303.234357][17263:17263] CHIP:DMG:                                         Attribute = 0x0000_0005,
          [1659773303.234367][17263:17263] CHIP:DMG:                                 }
          [1659773303.234378][17263:17263] CHIP:DMG:
          [1659773303.234388][17263:17263] CHIP:DMG:                                 Data = [
          [1659773303.234401][17263:17263] CHIP:DMG:
          [1659773303.234417][17263:17263] CHIP:DMG:                                 ],
          [1659773303.234428][17263:17263] CHIP:DMG:                         },
          [1659773303.234444][17263:17263] CHIP:DMG:
          [1659773303.234457][17263:17263] CHIP:DMG:                 },
          [1659773303.234475][17263:17263] CHIP:DMG:
          [1659773303.234485][17263:17263] CHIP:DMG:         ],
          [1659773303.234503][17263:17263] CHIP:DMG:
          [1659773303.234512][17263:17263] CHIP:DMG:         SuppressResponse = true,
          [1659773303.234523][17263:17263] CHIP:DMG:         InteractionModelRevision = 1
          [1659773303.234533][17263:17263] CHIP:DMG: }
          [1659773303.234544][17263:17263] CHIP:DMG:
      disabled: true

    - label:
          "DUT reads ActiveRadioFaults attribute value from TH. Subscription is
          possible option for this attribute."
      PICS: DGGEN.C.A0006
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read active-radio-faults 1 0

          verify that  the attribute response should be empty. But when a radio fault occurs, the return attribute value must match the value listed in the RadioFault ENUM table. 11.11.6.2 on TH(all-clusters-app).

          [1659971190.358722][3458:3458] CHIP:IM: Received Read request
          [1659971190.358800][3458:3458] CHIP:DMG: ReadRequestMessage =
          [1659971190.358827][3458:3458] CHIP:DMG: {
          [1659971190.358848][3458:3458] CHIP:DMG:         AttributePathIBs =
          [1659971190.358874][3458:3458] CHIP:DMG:         [
          [1659971190.358897][3458:3458] CHIP:DMG:                 AttributePathIB =
          [1659971190.358924][3458:3458] CHIP:DMG:                 {
          [1659971190.358952][3458:3458] CHIP:DMG:                         Endpoint = 0x0,
          [1659971190.358988][3458:3458] CHIP:DMG:                         Cluster = 0x33,
          [1659971190.359019][3458:3458] CHIP:DMG:                         Attribute = 0x0000_0006,
          [1659971190.359049][3458:3458] CHIP:DMG:                 }
          [1659971190.359077][3458:3458] CHIP:DMG:
          [1659971190.359101][3458:3458] CHIP:DMG:         ],
          [1659971190.359129][3458:3458] CHIP:DMG:
          [1659971190.359154][3458:3458] CHIP:DMG:         isFabricFiltered = true,
          [1659971190.359178][3458:3458] CHIP:DMG:         InteractionModelRevision = 1
          [1659971190.359201][3458:3458] CHIP:DMG: },
          [1659971190.359274][3458:3458] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1659971190.359356][3458:3458] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1659971190.359385][3458:3458] CHIP:DMG: <RE:Run> Cluster 33, Attribute 6 is dirty
          [1659971190.359406][3458:3458] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0006 (expanded=0)
          [1659971190.359434][3458:3458] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1659971190.359466][3458:3458] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "DUT reads ActiveNetworkFaults attribute value from TH. Subscription
          is possible option for this attribute."
      PICS: DGGEN.C.A0007
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read active-network-faults 1 0

          verify that ActiveNetworkFaults attribute value attribute response should be empty. But when a network fault occurs, the return attribute value must match the value listed in the NetworkFault ENUM on TH(all-clusters-app)

          ReadRequestMessage =
          [1661422339.662496][2220:2220] CHIP:DMG: {
          [1661422339.662554][2220:2220] CHIP:DMG:         AttributePathIBs =
          [1661422339.662619][2220:2220] CHIP:DMG:         [
          [1661422339.662681][2220:2220] CHIP:DMG:                 AttributePathIB =
          [1661422339.662752][2220:2220] CHIP:DMG:                 {
          [1661422339.662825][2220:2220] CHIP:DMG:                         Endpoint = 0x0,
          [1661422339.662926][2220:2220] CHIP:DMG:                         Cluster = 0x33,
          [1661422339.663022][2220:2220] CHIP:DMG:                         Attribute = 0x0000_0007,
          [1661422339.663110][2220:2220] CHIP:DMG:                 }
          [1661422339.663184][2220:2220] CHIP:DMG:
          [1661422339.663249][2220:2220] CHIP:DMG:         ],
          [1661422339.663321][2220:2220] CHIP:DMG:
          [1661422339.663389][2220:2220] CHIP:DMG:         isFabricFiltered = true,
          [1661422339.663454][2220:2220] CHIP:DMG:         InteractionModelRevision = 1
          [1661422339.663514][2220:2220] CHIP:DMG: },
          [1661422339.663697][2220:2220] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661422339.663957][2220:2220] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661422339.664032][2220:2220] CHIP:DMG: <RE:Run> Cluster 33, Attribute 7 is dirty
          [1661422339.664088][2220:2220] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0007 (expanded=0)
          [1661422339.664157][2220:2220] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661422339.664234][2220:2220] CHIP:DMG: AccessControl: allowed
      disabled: true

    - label:
          "TH reads TestEventTriggersEnabled attribute value. If this value is
          set True, then a certain test mode will be performed (or triggered)
          according to pre-provisioned client and server test mode."
      PICS: DGGEN.C.A0008
      verification: |
          Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client)

          ./chip-tool generaldiagnostics read   test-event-triggers-enabled  1 0

          verify that TestEventTriggersEnabled attribute value should be data type bool on TH(all-clusters-app)

          ReadRequestMessage =
          [1661422384.680672][2220:2220] CHIP:DMG: {
          [1661422384.680728][2220:2220] CHIP:DMG:         AttributePathIBs =
          [1661422384.680794][2220:2220] CHIP:DMG:         [
          [1661422384.680856][2220:2220] CHIP:DMG:                 AttributePathIB =
          [1661422384.680937][2220:2220] CHIP:DMG:                 {
          [1661422384.681020][2220:2220] CHIP:DMG:                         Endpoint = 0x0,
          [1661422384.681105][2220:2220] CHIP:DMG:                         Cluster = 0x33,
          [1661422384.681189][2220:2220] CHIP:DMG:                         Attribute = 0x0000_0008,
          [1661422384.681267][2220:2220] CHIP:DMG:                 }
          [1661422384.681348][2220:2220] CHIP:DMG:
          [1661422384.681421][2220:2220] CHIP:DMG:         ],
          [1661422384.681494][2220:2220] CHIP:DMG:
          [1661422384.681562][2220:2220] CHIP:DMG:         isFabricFiltered = true,
          [1661422384.681627][2220:2220] CHIP:DMG:         InteractionModelRevision = 1
          [1661422384.681688][2220:2220] CHIP:DMG: },
          [1661422384.681857][2220:2220] CHIP:DMG: IM RH moving to [GeneratingReports]
          [1661422384.682101][2220:2220] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0
          [1661422384.682174][2220:2220] CHIP:DMG: <RE:Run> Cluster 33, Attribute 8 is dirty
          [1661422384.682229][2220:2220] CHIP:DMG: Reading attribute: Cluster=0x0000_0033 Endpoint=0 AttributeId=0x0000_0008 (expanded=0)
          [1661422384.682297][2220:2220] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0033 e=0 p=v
          [1661422384.682364][2220:2220] CHIP:DMG: AccessControl: allowed
      disabled: true
