<?xml version="1.0" encoding="UTF-8"?>
<!--
  Device:2 Root Data Model: Common Object definitions [WiFi USP]

  Copyright (c) 2010-2022, Broadband Forum

  The undersigned members have elected to grant the copyright to
  their contributed material used in this software:
    Copyright (c) 2017-2019 ARRIS Enterprises, LLC.

  Redistribution and use in source and binary forms, with or
  without modification, are permitted provided that the following
  conditions are met:

  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following
     disclaimer in the documentation and/or other materials
     provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its
     contributors may be used to endorse or promote products
     derived from this software without specific prior written
     permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  The above license is used as a license under copyright only.
  Please reference the Forum IPR Policy for patent licensing terms
  <https://www.broadband-forum.org/ipr-policy>.

  Any moral rights which are necessary to exercise under the above
  license grant are also deemed granted under this license.

  Comments or questions about this Broadband Forum data model should be
  directed to <info@broadband-forum.org>.
-->

<dm:document
    xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-10"
    xmlns:dmr="urn:broadband-forum-org:cwmp:datamodel-report-1-0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      urn:broadband-forum-org:cwmp:datamodel-1-10
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-1-10.xsd
      urn:broadband-forum-org:cwmp:datamodel-report-1-0
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-report-1-0.xsd"
    spec="urn:broadband-forum-org:tr-181-2-16-0-wifi-usp"
    file="tr-181-2-16-0-wifi-usp.xml">

  <import file="tr-069-biblio.xml" spec="urn:broadband-forum-org:tr-069"/>

  <import file="tr-106-types.xml" spec="urn:broadband-forum-org:tr-106">
    <dataType name="MACAddress"/>
  </import>

  <import file="tr-181-2-root.xml"
      spec="urn:broadband-forum-org:tr-181-2-16-root">
    <component name="Root"/>
  </import>

  <import file="tr-181-2-wifi.xml"
      spec="urn:broadband-forum-org:tr-181-2-16-wifi">
    <component name="WiFi"/>
    <component name="WiFiNeighboringWiFiDiagnosticsOutput"/>
    <component name="SpatialReuse"/>
    <component name="BigScanResult"/>
    <component name="AssociationEventData"/>
    <component name="DisassociationEventData"/>
    <component name="FailedConnectionEventData"/>
    <component name="RemoteMeasurementRequestInput"/>
    <component name="RemoteMeasurementRequestOutput"/>
    <component name="CCAMeasurementInput"/>
    <component name="CCAMeasurementOutput"/>
    <component name="WiFi6"/>
  </import>
 
  <component name="WiFiChannelScanInput">

    <object name="OpClass.{i}." access="readWrite" minEntries="0"
        maxEntries="unbounded" version="2.15">
      <description>
        The Operating Classes for which this channel scan is requested.
      </description>

      <parameter name="OperatingClass" mandatory="true" access="readOnly">
        <description>
          The Operating Class per {{bibref|802.11-2020|Table E-4}} of the
          OpClass and Channel tuple scanned by the Radio. Note that the
          Operating Class identifies the band and channel width. For 2.4GHz and
          5GHz bands, only 20MHz Operating Classes are valid.
        </description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="255"/>
          </unsignedInt>
        </syntax>
      </parameter>
    </object>

    <object name="OpClass.{i}.Channel.{i}." access="readWrite" minEntries="0"
        maxEntries="unbounded" version="2.15">
      <description>
        The Channels for which this channel scan is requested.
      </description>

      <parameter name="Channel" mandatory="true" access="readOnly">
        <description>
          The Channel number of the Channel that is requested to be scanned.
        </description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="255"/>
          </unsignedInt>
        </syntax>
      </parameter>
    </object>
    <component ref="WiFiScanInput"/>
  </component>

  <component name="WiFiScanInput">

    <parameter name="DwellTime" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        The duration of the time to scan each channel in {{units}}. A value of
        50 {{units}} is suggested.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DFSDwellTime" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        The duration of time to scan each Dynamic Frequency Selection (DFS)
        channel in {{units}}. A value of at least one beacon interval,
        typically 100 {{units}}, is suggested.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="HomeTime" access="readWrite" version="2.15">
      <description>
        The time in {{units}} after which the driver has to go back to the
        original channel before scanning the next channel to avoid disruption.
        If this is omitted, or is not supported by the device, then it should
        be ignored.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="SSID" access="readWrite" version="2.15">
      <description>
        The Service Set Identifier (SSID) to scan. If omitted, then all SSIDs
        are scanned.
      </description>
      <syntax>
        <string/>
      </syntax>
    </parameter>
  </component>

  <component name="SteerWiFiBackhaulInput">

    <parameter name="TargetBSS" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        Basic Service Set Identifier (BSSID) of the target BSS which the
        associated device(s) is to be associated to.
      </description>
      <syntax>
        <dataType ref="MACAddress"/>
      </syntax>
    </parameter>

    <parameter name="Channel" access="readWrite" version="2.15">
      <description>
        The number of the Wi-Fi channel the backhaul BSS is to be associated
        to. If {{param}} is not specified, then the radio is to determine which
        channel to use to associate to the requested {{param|TargetBSS}}.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="TimeOut" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        The maximum timeout for this backhaul steering to occur in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="BTMRequestInput">

    <parameter name="DisassociationImminent" access="readWrite"
        mandatory="true" version="2.15">
      <description>
        Indicates if the disassociation is imminent, as defined in
        {{bibref|802.11-2020|Section 9.6.13.9}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>

    <parameter name="DisassociationTimer" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        The number of {{units}} until the AP sends a disassociation frame to
        this station. If {{param}}=0 then {{param}} is not used.
      </description>
      <syntax>
        <unsignedInt>
          <units value="beacon transmission times"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="BSSTerminationDuration" access="readWrite"
        mandatory="true" version="2.15">
      <description>
        The number of {{units}} for which the BSS is not present. If
        {{param}}=0 or if this input in not provided, then {{param}} is not
        used.
      </description>
      <syntax>
        <unsignedInt>
          <units value="minutes"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ValidityInterval" access="readWrite" version="2.15">
      <description>
        The amount of time in {{units}} that the {{command}} is valid for. If
        {{param}}=0 or if this input in not provided, then {{param}} is not
        used.
      </description>
      <syntax>
        <unsignedInt>
          <units value="beacon intervals"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="SteeringTimer" access="readWrite" version="2.15">
      <description>
        The amount of time in {{units}} that this associated device is not
        allowed to return to the original BSS. If {{param}}=0 or if this input
        in not provided, then {{param}} is not used.
      </description>
      <syntax>
        <unsignedInt>
          <units value="beacon intervals"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TargetBSS" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        BSSID of the target BSS which the associated device(s) is to be
        associated to.
      </description>
      <syntax>
        <dataType ref="MACAddress"/>
      </syntax>
    </parameter>
  </component>

  <component name="DisassociateInput">

    <parameter name="DisassociationTimer" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        The time for which the associated device is to be disassociated in
        {{units}}. If set to 0, then the associated device is blocked
        indefinately.
      </description>
      <syntax>
        <unsignedInt>
          <units value="minutes"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ReasonCode" access="readWrite" mandatory="true"
        version="2.15">
      <description>
        The reason code for the request for the associated device to be
        disassociated, as defined in {{bibref|802.11-2020|Table 9-49}}.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="Silent" access="readWrite" version="2.15">
      <description>
        An optional input, if true then this is a request for a Silent
        Disassociate, whereby the AP is to remove the station from its list of
        associated devices without sending a message to the station.

        If this input in not provided, then a value of {{false}} is assumed.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>
  </component>

  <component name="SetTrafficSeparation">

    <command name="SetTrafficSeparation()" async="true" version="2.15">
      <description>
        This command allows or disallows EasyMesh traffic separation
        {{bibref|EasyMesh|Section 19.1}}. If {{param|Enable}} is {{true}} then
        the parameters defining traffic separation details can also be input
        with this command.

        This command applies to all EasyMesh Agent devices in the Wi-Fi
        network.

        This command can configure
        {{object|#.Device.{i}.SSIDtoVIDMapping.{i}.}} and
        {{param|#.Device.{i}.TrafficSeparationAllowed}}.

        Status is to be returned after implementation or failed implementation
        on all agents/devices/APs in this Multi-AP network.
      </description>
      <input>
        <parameter name="Enable" mandatory="true" version="2.15">
          <description>
            : {{true}}: EasyMesh traffic separation is allowed.

            : {{false}}: EasyMesh traffic separation is not allowed.
          </description>
          <syntax>
            <boolean/>
          </syntax>
        </parameter>

        <object name="SSIDtoVIDMapping.{i}." minEntries="0"
            maxEntries="unbounded" version="2.15">
          <description>
            The Service Set Identifier (SSID) to VLAN ID (VID) mapping for
            EasyMesh traffic separation {{bibref|EasyMesh}}. Consists of a
            table of pairs of {{param|SSID}} and corresponding {{param|VID}}.

            If this input is not provided, then existing
            {{object|##.Device.{i}.SSIDtoVIDMapping.{i}.}} apply.
          </description>
          <uniqueKey functional="true">
            <parameter ref="SSID"/>
          </uniqueKey>

          <parameter name="SSID">
            <description>
              The SSID name.
            </description>
            <syntax>
              <string/>
            </syntax>
          </parameter>

          <parameter name="VID">
            <description>
              The VLAN ID (VID).
            </description>
            <syntax>
              <unsignedInt>
                <range maxInclusive="4095"/>
              </unsignedInt>
            </syntax>
          </parameter>

        </object>

      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to allow or disallow
            EasyMesh traffic separation. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success">
                <description>
                  Indicates successful implementation on all agents/devices/APs
                  in this Multi-AP network.
                </description>
              </enumeration>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetServicePrioritization">

    <command name="SetServicePrioritization()" async="true" version="2.15">
      <description>
        This command allows or disallows EasyMesh service prioritization
        {{bibref|EasyMesh|Section 20}}. If {{param|Enable}} is {{true}} then
        the parameters defining service prioritization details can also be
        input with this command.

        This command can configure {{object|#.Device.{i}.SPRule.{i}.}},
        {{param|#.Device.{i}.DSCPMap}} and
        {{param|#.Device.{i}.ServicePrioritizationAllowed}}.

        This command applies to all EasyMesh Agent devices in the Wi-Fi
        network.

        Status is to be returned after implementation or failed implementation
        on all agents/devices/APs in this Multi-AP network.
      </description>
      <input>
        <parameter name="Enable" mandatory="true" version="2.15">
          <description>
            : {{true}}: EasyMesh service prioritization is allowed.

            : {{false}}: EasyMesh service prioritization is not allowed.
          </description>
          <syntax>
            <boolean/>
          </syntax>
        </parameter>

        <object name="SPRule.{i}." minEntries="0" maxEntries="unbounded"
            version="2.15">
          <description>
            This object describes a list of service prioritization (SP) rules
            {{bibref|EasyMesh}}.

            If this input is not provided, then existing
            {{object|##.Device.{i}.SPRule.{i}.}} apply.
          </description>
          <uniqueKey functional="true">
            <parameter ref="ID"/>
          </uniqueKey>

          <parameter name="ID" version="2.15">
            <description>
              Service prioritization rule Identifier.
            </description>
            <syntax>
              <unsignedInt/>
            </syntax>
          </parameter>

          <parameter name="Precedence" version="2.15">
            <description>
              Rule Precedence – higher number means higher priority.
            </description>
            <syntax>
              <unsignedInt>
                <range maxInclusive="254"/>
              </unsignedInt>
            </syntax>
          </parameter>

          <parameter name="Output" version="2.15">
            <description>
              Rule Output. The value of, or method used to select the 802.1Q
              C-TAG Priority Code Point (PCP) output value.
            </description>
            <syntax>
              <unsignedInt>
                <range maxInclusive="9"/>
              </unsignedInt>
            </syntax>
          </parameter>

          <parameter name="AlwaysMatch" version="2.15">
            <description>
              Indicates if the rule always matches.
            </description>
            <syntax>
              <boolean/>
            </syntax>
          </parameter>
        </object>

        <parameter name="DSCPMap" version="2.15">
          <description>
            A hexadecimal string of 64 PCP values (one octet per value)
            corresponding to the DSCP markings 0x00 to 0x3F, ordered by
            increasing DSCP value. Each octet is in the range 0x00 – 0x07. This
            is used to select a PCP value if a Service Prioritization Rule
            specifies Rule Output: 0x08.

            If this input is not provided, then the existing
            {{param|#.Device.{i}.DSCPMap}} applies.
          </description>
          <syntax>
            <hexBinary>
              <size maxLength="64"/>
            </hexBinary>
          </syntax>
        </parameter>

      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to allow or disallow
            EasyMesh service prioritization. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success">
                 <description>
                   Indicates successful implementation on all agents/devices/APs
                   in this Multi-AP network
                 </description>
              </enumeration>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="ChannelScanRequest">

    <command name="ChannelScanRequest()" async="true" version="2.15">
      <description>
        Request to initiate a channel scan. The operating classes, and list of
        channels for each operating class, are input. For 2.4GHz and 5GHz
        bands, only 20MHz operating classes are valid inputs.

        This command should result in updating
        {{object|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.ScanResult.}}
      </description>
      <input>

        <parameter name="OpClass" mandatory="true">
          <description>
            The Operating Class per {{bibref|802.11-2020|Table E-4}} For 2.4GHz
            and 5GHz bands, only 20MHz Operating Classes are valid.

            Note that the operating class identifies the band and channel
            width.
          </description>
          <syntax>
            <unsignedInt>
              <range maxInclusive="255"/>
            </unsignedInt>
          </syntax>
        </parameter>

        <parameter name="ChannelList" mandatory="true">
          <description>
            The channel numbers in this Operating Class for which the request
            to initiate a channel scan applies.
          </description>
          <syntax>
          <list/>
            <unsignedInt>
              <range maxInclusive="255"/>
            </unsignedInt>
          </syntax>
        </parameter>

      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to initiate a channel
            scan. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="RadioEnable">

    <command name="RadioEnable()" async="true" version="2.15">
      <description>
        Request to enable or disable this radio.

        This command can result in updating {{param|Enabled}}.

        If the instance of this {{object}} is the same as
        {{object|Device.WiFi.Radio.{i}.}}, then this command has the same
        effect as writing to {{param|Device.WiFi.Radio.{i}.Enable}}.
      </description>
      <input>
        <parameter name="Enable" mandatory="true" version="2.15">
          <description>
            : {{true}}: this radio is to be enabled.

            : {{false}}: this radio is to be disabled.
          </description>
          <syntax>
            <boolean/>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to enable or disable
            this radio. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="WiFiRestart">

    <command name="WiFiRestart()" async="true" version="2.15">
      <description>
        Request a restart of the Wi-Fi subsystem.
      </description>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to restart the Wi-Fi
            subsystem. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetSTASteeringState">

    <command name="SetSTASteeringState()" async="true" version="2.15">
      <description>
        Disallow or allow EasyMesh {{bibref|EasyMesh}} controller-initiated
        station (STA) steering on this device.

        This command can configure {{param|STASteeringState}}.
      </description>
      <input>
        <parameter name="Disallowed" mandatory="true" version="2.15">
          <description>
            : {{true}}: EasyMesh controller-initiated station steering
              disallowed;

            : {{false}}: EasyMesh controller-initiated station steering
              allowed.
          </description>
          <syntax>
            <boolean/>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to allow or disallow
            EasyMesh controller-initiated station steering. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetTxPowerLimit">

    <command name="SetTxPowerLimit()" async="true" version="2.15">
      <description>
        This command sets the upper limit on transmit power
        {{param|TransmitPowerLimit}} for this radio and
        {{param|OperatingClass}}.

        This command can configure
        {{param|#.CurrentOperatingClassProfile.{i}.TransmitPowerLimit}}.
      </description>

      <input>

        <parameter name="TransmitPowerLimit" mandatory="true">
          <description>
            This is the upper limit on nominal transmit Equivalent
            Isotropically Radiated Power (EIRP) that this radio can use for the
            {{param|OperatingClass}}. In units of decibels relative to 1 mW
            {{units}}.
          </description>
          <syntax>
            <int>
              <range minInclusive="-128" maxInclusive="127"/>
              <units value="dBm"/>
            </int>
          </syntax>
        </parameter>

        <parameter name="OperatingClass" mandatory="true">
          <description>
            The Operating Class per {{bibref|802.11-2020|Table E-4}} of the
            radio. Note that the Operating Class identifies the band and
            channel width.
          </description>
          <syntax>
            <unsignedInt>
              <range maxInclusive="255"/>
            </unsignedInt>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to set a transmit
            power limit. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetPreferredBackhauls">
    <command name="SetPreferredBackhauls()" async="true" version="2.15">
      <description>
        This command sets preferred backhaul links for EasyMesh
        {{bibref|EasyMesh}} backhaul.
      </description>
      <input>
        <object name="PreferredBackhauls.{i}." minEntries="1"
            maxEntries="unbounded" version="2.15">
          <description>
            Indicates preferred backhaul links for EasyMesh {{bibref|EasyMesh}}
            backhaul. Consists of a table of pairs of MAC addresses. For a
            WI-Fi connection pair, an entry contains the BSSID and bSTA MAC
            address. For a wired connection pair, an entry contains the
            interface MAC addresses. This command applies to all EasyMesh Agent
            devices in the Wi-Fi network.

            Status is to be returned after implementation or failed
            implementation on all agents/devices/APs in this Multi-AP network.
          </description>
          <uniqueKey functional="true">
            <parameter ref="BackhaulMACAddress"/>
          </uniqueKey>

          <parameter name="BackhaulMACAddress" mandatory="true">
            <description>
              The MAC address of the BSS, or similar Ethernet interface, on
              this preferred backhaul link.
            </description>
            <syntax>
              <dataType ref="MACAddress"/>
            </syntax>
          </parameter>

          <parameter name="bSTAMACAddress" mandatory="true">
            <description>
              The MAC address of the backhaul STA (bSTA), or similar Ethernet
              interface, on this preferred backhaul link.
            </description>
            <syntax>
              <dataType ref="MACAddress"/>
            </syntax>
          </parameter>
        </object>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to set preferred
            backhaul links. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success">
                <description>
                  Indicates successful implementation of all preferred backhaul
                  links in this Multi-AP network.
                </description>
              </enumeration>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetSSID">
    <command name="SetSSID()" async="true" version="2.15">
      <description>
        This command specifies an {{param|SSID}} for fronthaul use across this
        Wi-Fi Multi-AP network, or on this single-AP. Also specifies the
        {{param|PassPhrase}}, whether to add or remove this SSID, and specifies
        the {{param|Band}} for each {{param|SSID}}.

        This command applies to all EasyMesh Agent devices in the Wi-Fi
        network, or to this AP in the single-AP case.

        This command can be used to set only {{param|PassPhrase}} if
        {{param|SSID}} matches an existing {{param|#.SSID.{i}.SSID}} for this
        {{param|Band}} for fronthaul use across this Wi-Fi Multi-AP network.

        This command can configure {{object|#.SSID.{i}}}

        Status is to be returned after implementation or failed implementation
        on all agents/devices/APs in this Multi-AP network.
      </description>

      <input>

        <parameter name="SSID" mandatory="true">
          <description>
            The SSID for fronthaul use across this Wi-Fi Multi-AP network.
          </description>
          <syntax>
            <string/>
          </syntax>
        </parameter>

        <parameter name="AddRemove" mandatory="true">
          <description>
            Indicates whether to add or remove this {{param|SSID}}.

            : {{true}}: add this SSID,

            : {{false}}: remove this SSID.

            Status is to be returned after implementation or failed
            implementation on all agents/devices/APs in this Multi-AP network.

            If set to {{true}}, and this {{param|SSID}} already exists for this
            {{param|Band}}, then there is no change to the {{param|SSID}}, but
            the {{param|PassPhrase}} is set.
          </description>
          <syntax>
            <string/>
          </syntax>
        </parameter>

        <parameter name="PassPhrase">
          <description>
            The WPA2 Passphrase and/or SAE password for this {{param|SSID}}.
          </description>
          <syntax>
            <string/>
          </syntax>
        </parameter>

       <parameter name="Band">
          <description>
            The band(s) for which this {{param|SSID}} applies. {{enum}}

            If this input is not provided, then a value of {{enum|All}}
            applies.
          </description>
          <syntax>
            <list/>
            <string>
              <enumeration value="All">
                <description>Applies to all bands</description>
              </enumeration>
              <enumeration value="2.4">
                <description>2.4 GHz band</description>
              </enumeration>
              <enumeration value="5">
                <description>The entire 5 GHz band</description>
              </enumeration>
              <enumeration value="6">
                <description>The entire 6 GHz band</description>
              </enumeration>
              <enumeration value="5_UNII_1">
                <description>5 GHz UNII-1 band, 5.15 to 5.25 GHz</description>
              </enumeration>
              <enumeration value="5_UNII_2">
                <description>5 GHz UNII-2 band, 5.25 to 5.725 GHz</description>
              </enumeration>
              <enumeration value="5_UNII_3">
                <description>5 GHz UNII-3 band, 5.725 to 5.85 GHz</description>
              </enumeration>
              <enumeration value="5_UNII_4">
                <description>5 GHz UNII-4 band, 5.85 to 5.925 GHz</description>
              </enumeration>
              <enumeration value="6_UNII_5">
                <description>
                  6 GHz UNII-5 band, 5.925 to 6.425 GHz
                </description>
              </enumeration>
              <enumeration value="6_UNII_6">
                <description>
                  6 GHz UNII-6 band, 6.425 to 6.525 GHz
                </description>
              </enumeration>
              <enumeration value="6_UNII_7">
                <description>
                  6 GHz UNII-7 band, 6.525 to 6.875 GHz
                </description>
              </enumeration>
              <enumeration value="6_UNII_8">
                <description>
                  6 GHz UNII-8 band, 6.875 to 7.125 GHz
                </description>
              </enumeration>
            </string>
          </syntax>
        </parameter>

      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to set the SSID.
            {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success">
                <description>
                  Indicates successful implementation on all agents/devices/APs
                  in this Multi-AP network
                </description>
              </enumeration>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetDFSState">

    <command name="SetDFSState()" async="true" version="2.15">
      <description>
        Enables/disables the use of Dynamic Frequency Selection (DFS) channels
        on this device.

        This command can configure {{param|#.DFSEnable}}.
      </description>
      <input>
        <parameter name="DFSEnable" mandatory="true" version="2.15">
          <description>
            : {{true}}: the use of Dynamic Frequency Selection (DFS) channels
              is allowed;

            : {{false}}: the use of Dynamic Frequency Selection (DFS) channels
              is disallowed;
          </description>
          <syntax>
            <boolean/>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to allow or disallow
            the use of Dynamic Frequency Selection (DFS) channels. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetAnticipatedChannelPreference">

    <command name="SetAnticipatedChannelPreference()" async="true"
        version="2.15">
      <description>
        This command requests to set the Anticipated Channel Preference. The
        operating classes, and list of channels for each operating class, are
        input.
      </description>
      <input>
        <parameter name="OpClass" mandatory="true">
          <description>
            The Operating Class per {{bibref|802.11-2020|Table E-4}}.

            Note that the operating class identifies the band and channel
            width.
          </description>
          <syntax>
            <unsignedInt>
              <range maxInclusive="255"/>
            </unsignedInt>
          </syntax>
        </parameter>

        <parameter name="ChannelList" mandatory="true">
          <description>
            The channel numbers in this Operating Class.
          </description>
          <syntax>
            <list/>
            <unsignedInt>
              <range maxInclusive="255"/>
            </unsignedInt>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to set the anticipated
            channel preference. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetMSCSDisallowed">
    <command name="SetMSCSDisallowed()" async="true" version="2.15">
      <description>
        This command disallows Mirrored Stream Classification Service (MSCS)
        service prioritization to particular STA(s). {{bibref|EasyMesh}}

        This command applies to all EasyMesh Agent devices in the Wi-Fi
        network.

        This command configures {{param|#.MSCSDisallowedStaList}}.
      </description>
      <input>
        <parameter name="MSCSDisallowedStaList" mandatory="true"
            version="2.15">
          <description>
            List of STAs for which MSCS operation is disallowed.
          </description>
          <syntax>
            <list/>
            <dataType ref="MACAddress"/>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to disallow MSCS
            service prioritization to particular STA(s) {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetSCSDisallowed">
    <command name="SetSCSDisallowed()" async="true" version="2.15">
      <description>
        This command disallows Stream Classification Service (SCS) service
        prioritization to particular STA(s). {{bibref|EasyMesh}}

        This command applies to all EasyMesh Agent devices in the Wi-Fi
        network.

        This command can configure {{param|#.SCSDisallowedStaList}}.
      </description>
      <input>
        <parameter name="SCSDisallowedStaList" mandatory="true" version="2.15">
          <description>
            List of STAs for which SCS operation is disallowed.
          </description>
          <syntax>
            <list/>
            <dataType ref="MACAddress"/>
          </syntax>
        </parameter>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to disallow SCS
            service prioritization to particular STA(s). {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetQMDescriptors">
    <command name="SetQMDescriptors()" async="true" version="2.15">
      <description>
        This command configures each of the descriptor elements for Mirrored
        Stream Classification Service (MSCS), Stream Classification Service
        (SCS), or QoS Management. {{bibref|EasyMesh}}.

        This command can configure {{object|QMDescriptor.{i}.}}.

        If {{param|Input.QMDescriptor.{i}.DescriptorElement}} is for SCS or
        MSCS, the AP adds/changes/removes the rule according to the descriptor
        element request type.

        If a {{param|Input.QMDescriptor.{i}.DescriptorElement}} is a QoS
        Management DSCP Policy, the AP sends it to the STA identified by the
        {{param|Input.QMDescriptor.{i}.ClientMAC}}.
      </description>
      <input>
        <object name="QMDescriptor.{i}." minEntries="1" maxEntries="unbounded"
            version="2.15">
          <description>
            This object contains a table of {{param|DescriptorElement}}.
          </description>
          <uniqueKey functional="true">
            <parameter ref="ClientMAC"/>
          </uniqueKey>

          <parameter name="ClientMAC" mandatory="true">
            <description>
              MAC address of the Station (STA) for which this descriptor
              applies.
            </description>
            <syntax>
              <dataType ref="MACAddress"/>
            </syntax>
          </parameter>
          <parameter name="DescriptorElement" mandatory="true">
            <description>
              The descriptor element. One of:

              : MSCS descriptor element (as described in
                {{bibref|802.11-2020|Section 9.4.2.243}}, or

              : SCS descriptor element (as described in
                {{bibref|802.11-2020|Section 9.4.2.121}}, or

              : QoS Management DSCP policy element (as described in
                {{bibref|802.11-2020|Section 9.4.2.94}} and
                {{bibref|RFC8325|Section 6.3}}).
            </description>
            <syntax>
              <hexBinary/>
            </syntax>
          </parameter>
        </object>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to configure
            descriptor elements. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="SetSpatialReuse">
    <command name="SetSpatialReuse()" async="true" version="2.15">
      <description>
        This command sets the spatial reuse configuration of this radio.
        Applies only to Wi-Fi 6 and possibly later generations of radios.

        Acronyms: Spatial Reuse Group (SRG), Overlapping Basic Service Set
        (OBSS), Preamble Detection (PD).

        This command can configure {{object|#.SpatialReuse.}}.

        If some input parameter(s) are not provided, then the corresponding
        existing parameter in {{object|#.SpatialReuse.}} applies.
      </description>
      <input>
        <component ref="SpatialReuse"/>
      </input>

      <output>
        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to set the spatial
            reuse configuration of this radio. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
      </output>
    </command>
  </component>

  <component name="ChannelScan">

    <command name="ChannelScan()" async="true" version="2.15">
      <description>
        This parameter represents a request to initiate a channel scan on this
        radio on the given channel using a specific {{param|DwellTime}}. This
        command should result in updating
        {{object|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.ScanResult.}}

        If the instance of this {{object}} is the same as
        {{object|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}}}, then
        this command is similar to,
        {{command|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.ChannelScanRequest()}}.
      </description>
      <input>
        <component ref="WiFiChannelScanInput"/>
      </input>
      <output>

        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to initiate a channel
            scan. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Not_Ready"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Interface_Down"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
        <component ref="BigScanResult" version="2.15"/>
      </output>
    </command>
  </component>

  <component name="FullScan">

    <command name="FullScan()" async="true" version="2.15">
      <description>
        This parameter represents a request to initiate a full scan on this
        radio, including all channels supported by this radio, for a specific
        {{param|DwellTime}} and {{param|HomeTime}}. This command will result in
        updating
        {{object|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.ScanResult.}}

        If the instance of this {{object}} is the same as
        {{object|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}}}, then
        this command is similar to,
        {{command|Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.ChannelScanRequest()}}.
      </description>
      <input>
        <component ref="WiFiScanInput"/>
      </input>
      <output>

        <parameter name="Status">
          <description>
            Indicates the type of outcome of the request to initiate a full
            band scan. {{enum}}
          </description>
          <syntax>
            <string>
              <enumeration value="Success"/>
              <enumeration value="Error_Not_Ready"/>
              <enumeration value="Error_Timeout"/>
              <enumeration value="Error_Invalid_Input"/>
              <enumeration value="Error_Interface_Down"/>
              <enumeration value="Error_Other" optional="true"/>
            </string>
          </syntax>
        </parameter>
        <component ref="BigScanResult" version="2.15"/>
      </output>
    </command>
  </component>

  <component name="WiFiUSP">
    <object base="Device.WiFi." access="readOnly" minEntries="1"
        maxEntries="1">

      <command name="NeighboringWiFiDiagnostic()" async="true" version="2.12">
        <description>
          This command defines access to other WiFi SSIDs that this device is
          able to receive.
        </description>
        <output>

          <parameter name="Status" version="2.13">
            <description>
              Indicates the availability of diagnostics data. {{enum}}

              If the value of this parameter is anything other than
              {{enum|Complete}}, the values of the other results parameters for
              this test are indeterminate.
            </description>
            <syntax>
              <string>
                <enumeration value="Canceled" optional="true"/>
                <enumeration value="Complete"/>
                <enumeration value="Error" optional="true"/>
              </string>
            </syntax>
          </parameter>
          <component ref="WiFiNeighboringWiFiDiagnosticsOutput" version="2.12"/>
        </output>
      </command>

      <command name="Reset()" version="2.12" async="false">
        <description>
          This command represents a request to reset or reboot the Wi-Fi
          sub-system without resetting or rebooting the device.
        </description>
      </command>
    </object>

    <object base="Device.WiFi.DataElements.Network." access="readOnly"
        minEntries="1" maxEntries="1">
      <component ref="SetTrafficSeparation"/>
      <component ref="SetServicePrioritization"/>
      <component ref="SetPreferredBackhauls"/>
      <component ref="SetSSID"/>
      <component ref="SetMSCSDisallowed"/>
      <component ref="SetSCSDisallowed"/>
    </object>

    <object base="Device.WiFi.DataElements.Network.Device.{i}."
        access="readOnly" minEntries="1" maxEntries="unbounded">
      <component ref="SetSTASteeringState"/>
      <component ref="SetDFSState"/>
      <component ref="SetAnticipatedChannelPreference"/>
    </object>

    <object base="Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}."
        access="readOnly" minEntries="1" maxEntries="unbounded">
      <component ref="ChannelScanRequest"/>
      <component ref="RadioEnable"/>
      <component ref="SetTxPowerLimit"/>
      <component ref="SetSpatialReuse"/>
      <component ref="WiFiRestart"/>
    </object>

    <object
        base="Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.BSS.{i}."
        access="readOnly" minEntries="1" maxEntries="unbounded">
      <component ref="SetQMDescriptors"/>
    </object>

    <object
        base="Device.WiFi.DataElements.Network.Device.{i}.MultiAPDevice.Backhaul."
        access="readOnly" minEntries="1" maxEntries="1">
      <command name="SteerWiFiBackhaul()" async="true" version="2.15">
        <description>
          This command requests the Wi-Fi backhaul link to be steered to
          associate to a different BSS when the device is working as a bridge
          in a mesh network. The device needs to already have the necessary
          credentials for the switch to happen.

          The {{param|TargetBSS}} should be an instance of a
          Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.BSS.{i}.BSSID.
        </description>
        <input>
          <component ref="SteerWiFiBackhaulInput"/>
        </input>
        <output>

          <parameter name="Status">
            <description>
              Indicates the response to the Wi-Fi backhaul steering request.
              {{enum}}
            </description>
            <syntax>
              <string>
                <enumeration value="Success"/>
                <enumeration value="Error_Not_Ready"/>
                <enumeration value="Error_Timeout"/>
                <enumeration value="Error_Invalid_Input"/>
                <enumeration value="Error_Interface_Down"/>
                <enumeration value="Error_Other" optional="true"/>
              </string>
            </syntax>
          </parameter>
        </output>
      </command>
    </object>

    <object
        base="Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.MultiAPRadio."
        access="readOnly" minEntries="1" maxEntries="1">
      <component ref="FullScan"/>
      <component ref="ChannelScan"/>
    </object>

    <object
        base="Device.WiFi.DataElements.Network.Device.{i}.Radio.{i}.BSS.{i}.STA.{i}.MultiAPSTA."
        access="readOnly" minEntries="1" maxEntries="1">

      <command name="Disassociate()" async="true">
        <description>
          This command represents a request to disassociate this associated
          device.
        </description>
        <input>
          <component ref="DisassociateInput"/>
        </input>
        <output>

          <parameter name="Status">
            <description>
              Indicates the response to the request to disassociate an
              associated device. {{enum}}
            </description>
            <syntax>
              <string>
                <enumeration value="Success"/>
                <enumeration value="Error_Not_Ready"/>
                <enumeration value="Error_Timeout"/>
                <enumeration value="Error_Interface_Down"/>
                <enumeration value="Error_Other" optional="true"/>
              </string>
            </syntax>
          </parameter>
        </output>
      </command>

      <command name="BTMRequest()" async="true">
        <description>
          This command requests initiation of a BSS Transition Management (BTM)
          request to influence this client's roaming behavior to another BSS as
          defined in {{bibref|802.11-2020|Section 9.6.13.9}}.
        </description>
        <input>
          <component ref="BTMRequestInput"/>
        </input>
        <output>

          <parameter name="Status">
            <description>
              Indicates the response to the BSS Transition Management (BTM)
              request. {{enum}}
            </description>
            <syntax>
              <string>
                <enumeration value="Success"/>
                <enumeration value="Error_Not_Ready"/>
                <enumeration value="Error_Invalid_Input"/>
                <enumeration value="Error_Timeout"/>
                <enumeration value="Error_Invalid_Mac"/>
                <enumeration value="Error_Interface_Down"/>
                <enumeration value="Error_Other" optional="true"/>
              </string>
            </syntax>
          </parameter>
        </output>
      </command>
    </object>

    <object base="Device.WiFi.DataElements.AssociationEvent."
        access="readOnly" minEntries="1" maxEntries="1">
      <event name="Associated!" version="2.15">
        <description>
          The event is generated when an Associated Device (STA) associates to
          a BSS.
        </description>

        <component ref="AssociationEventData"/>

        <object name="WiFi6Capabilities." minEntries="1" maxEntries="1"
            version="2.16">
          <description>
            Describes the Wi-Fi 6 capabilities of the Associated Device (STA).
          </description>

          <component ref="WiFi6"/>
        </object>

      </event>
    </object>

    <object base="Device.WiFi.DataElements.DisassociationEvent."
        access="readOnly" minEntries="1" maxEntries="1">
      <event name="Disassociated!" version="2.15">
        <description>
          The event is generated when an Associated Device (STA) disassociates
          from a BSS.
        </description>
        <component ref="DisassociationEventData"/>
      </event>
    </object>

    <object base="Device.WiFi.DataElements.FailedConnectionEvent."
        access="readOnly" minEntries="1" maxEntries="1">
      <event name="FailedConnection!" version="2.15">
        <description>
          The event is generated when an Associated Device (STA) fails to
          connect to a BSS.
        </description>
        <component ref="FailedConnectionEventData"/>
      </event>
    </object>

    <object base="Device.WiFi.Radio.{i}." access="readOnly" minEntries="0"
        maxEntries="unbounded">

      <command name="RemoteMeasurementRequest()" async="true" version="2.15">
        <description>
          This command requests initiation of a Remote Measurement request to
          retrieve measurement data from a BSS on this radio. Upon receipt of
          this request, this radio is to initiate a measurement of the output
          {{param|SignalStrength}} and {{param|Noise}} for the indicated input.
        </description>
        <input>
          <component ref="RemoteMeasurementRequestInput"/>
        </input>
        <output>
          <component ref="RemoteMeasurementRequestOutput"/>

          <parameter name="Status">
            <description>
              Indicates the response to the Remote Measurement request.
              {{enum}}
            </description>
            <syntax>
              <string>
                <enumeration value="Success"/>
                <enumeration value="Error_Not_Ready"/>
                <enumeration value="Error_Invalid_Input"/>
                <enumeration value="Error_Timeout"/>
                <enumeration value="Error_Invalid_Mac"/>
                <enumeration value="Error_Interface_Down"/>
                <enumeration value="Error_Other" optional="true"/>
              </string>
            </syntax>
          </parameter>
        </output>
      </command>

      <command name="InitiateCCAMeasurement()" async="true" version="2.15">
        <description>
          This command represents a request to initiate a Clear Channel
          Assessment (CCA) measurement scan on this radio on the given channel
          using a specific {{param|DwellTime}}.
        </description>
        <input>
          <component ref="CCAMeasurementInput"/>
        </input>
        <output>
          <component ref="CCAMeasurementOutput"/>

          <parameter name="Status">
            <description>
              Indicates the response to the request to initiate a Clear Channel
              Assessment (CCA) measurement. {{enum}}
            </description>
            <syntax>
              <string>
                <enumeration value="Success"/>
                <enumeration value="Error_Not_Implemented"/>
                <enumeration value="Error_Not_Ready"/>
                <enumeration value="Error_Invalid_Input"/>
                <enumeration value="Error_Timeout"/>
                <enumeration value="Error_Interface_Down"/>
                <enumeration value="Error_Other" optional="true"/>
              </string>
            </syntax>
          </parameter>
        </output>
      </command>
      <component ref="FullScan"/>
      <component ref="ChannelScan"/>
    </object>

    <object base="Device.WiFi.AccessPoint.{i}.WPS." access="readOnly"
        minEntries="1" maxEntries="1">

      <command name="InitiateWPSPBC()" async="true" version="2.15">
        <description>
          Initiates a Wi-Fi Protected Setup (WPS) Push Button Configuration
          (PBC) process as defined in {{bibref|WPS 2.0}} .
        </description>
        <output>

          <parameter name="Status">
            <description>
              Indicates the response to the request to start Wi-Fi Protected
              Setup (WPS) Push Button Configuration (PBC). {{enum}}
            </description>
            <syntax>
              <string>
                <enumeration value="Success"/>
                <enumeration value="Error_Not_Ready"/>
                <enumeration value="Error_Timeout"/>
                <enumeration value="Error_Other" optional="true"/>
              </string>
            </syntax>
          </parameter>
        </output>
      </command>
    </object>

    <object base="Device.WiFi.AccessPoint.{i}.Security." access="readOnly"
        minEntries="1" maxEntries="1">

      <command name="Reset()" version="2.12" async="false">
        <description>
          Reset this {{object|#}} instance's WiFi security settings to their
          factory default values. The affected settings include
          {{param|ModeEnabled}}, {{param|WEPKey}}, {{param|PreSharedKey}},
          {{param|KeyPassphrase}}, {{param|SAEPassphrase}}, and
          {{param|#.WPS.PIN}} (if applicable).

          If the command cannot be executed, the agent MUST reject the command.
          Possible failure reasons include a lack of default values or if
          {{param|ModeEnabled}} is an Enterprise type, i.e.
          {{enum|WPA-Enterprise|ModesSupported}},
          {{enum|WPA2-Enterprise|ModesSupported}},
          {{enum|WPA3-Enterprise|ModesSupported}}, or
          {{enum|WPA-WPA2-Enterprise|ModesSupported}}.
        </description>
      </command>

    </object>
  </component>

  <model name="WiFiUSP:2.16">
    <component ref="Root"/>
    <component ref="WiFi"/>
    <component ref="WiFiUSP"/>
  </model>
</dm:document>
