<?xml version="1.0" encoding="UTF-8"?>
<!--
  TR-069 Device:2 Root Data Model definition [CWMP]

  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, 2021 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-cwmp"
    file="tr-181-2-16-0-cwmp.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="Alias" ref="_AliasCWMP"/>
    <dataType name="DiagnosticsState"/>
    <dataType name="StatsCounter32"/>
    <dataType name="StatsCounter64"/>
    <dataType name="URL"/>
    <dataType name="UUID"/>
  </import>

  <import file="tr-181-2-common.xml"
      spec="urn:broadband-forum-org:tr-181-2-16-common">
    <component name="ETSIM2M"/>
    <component name="ADSLLineDiagnosticsInput"/>
    <component name="ADSLLineDiagnosticsOutput"/>
    <component name="SELTUERDiagnosticsInput"/>
    <component name="SELTUERDiagnosticsOutput"/>
    <component name="SELTQLNDiagnosticsInput"/>
    <component name="SELTQLNDiagnosticsOutput"/>
    <component name="SELTPDiagnosticsInput"/>
    <component name="SELTPDiagnosticsOutput"/>
    <component name="ATMF5LoopbackDiagnosticsInput"/>
    <component name="ATMF5LoopbackDiagnosticsOutput"/>
    <component name="HPNAPHYThroughputDiagnosticsInput"/>
    <component name="HPNAPHYThroughputDiagnosticsOutputNumberOfEntries"/>
    <component name="HPNAPHYThroughputDiagnosticsOutput"/>
    <component name="HPNAPerformanceMonitoringDiagnosticsInput"/>
    <component
        name="HPNAPerformanceMonitoringDiagnosticsOutputNumberOfEntries"/>
    <component name="HPNAPerformanceMonitoringDiagnosticsOutput"/>
    <component name="GhnPHYThroughputDiagnosticsInput"/>
    <component name="GhnPHYThroughputDiagnosticsOutput"/>
    <component name="GhnPerformanceMonitoringDiagnosticsInput"/>
    <component name="GhnPerformanceMonitoringDiagnosticsOutputNumberOfEntries"/>
    <component name="GhnPerformanceMonitoringDiagnosticsOutput"/>
    <component name="UPAInterfaceMeasurementDiagnosticsInput"/>
    <component name="UPAInterfaceMeasurementDiagnosticsOutput"/>
    <component name="IPPingDiagnosticsInput"/>
    <component name="IPPingDiagnosticsOutput"/>
    <component name="IPTraceRouteDiagnosticsInput"/>
    <component name="IPTraceRouteDiagnosticsOutputNumberOfEntries"/>
    <component name="IPTraceRouteDiagnosticsOutput"/>
    <component name="IPDownloadDiagnosticsCapabilities"/>
    <component name="IPDownloadDiagnosticsInput"/>
    <component name="IPDownloadDiagnosticsInput2"/>
    <component name="IPDownloadDiagnosticsOutputNumberOfEntries"/>
    <component name="IPDownloadDiagnosticsOutput"/>
    <component name="IPUploadDiagnosticsCapabilities"/>
    <component name="IPUploadDiagnosticsInput"/>
    <component name="IPUploadDiagnosticsInput2"/>
    <component name="IPUploadDiagnosticsOutputNumberOfEntries"/>
    <component name="IPUploadDiagnosticsOutput"/>
    <component name="IPUDPEchoDiagnosticsCapabilities"/>
    <component name="IPUDPEchoDiagnosticsInput"/>
    <component name="IPUDPEchoDiagnosticsInput2"/>
    <component name="IPUDPEchoDiagnosticsOutputNumberOfEntries"/>
    <component name="IPUDPEchoDiagnosticsOutput"/>
    <component name="IPLayerCapacityCapabilities"/>
    <component name="IPLayerCapacityInput"/>
    <component name="IPLayerCapacityOutputNumberOfEntries"/>
    <component name="IPLayerCapacityOutput"/>
    <component name="IPServerSelectionDiagnosticsInput"/>
    <component name="IPServerSelectionDiagnosticsOutput"/>
    <component name="DNSLookupDiagnosticsInput"/>
    <component name="DNSLookupDiagnosticsOutput"/>
    <component name="DNSLookupDiagnosticsOutputNumberOfEntries"/>
    <component name="SelfTestDiagnosticsOutput"/>
    <component name="SendMagicPacketInput"/>
    <component name="PacketCaptureDiagnosticsInput"/>
    <component name="PacketCaptureDiagnosticsOutputNumberOfEntries"/>
    <component name="PacketCaptureDiagnosticsOutput"/>
    <component name="RemoteMeasurementRequestInput"/>
    <component name="RemoteMeasurementRequestOutput"/>
    <component name="CCAMeasurementInput"/>
    <component name="CCAMeasurementOutput"/>
    <component name="CheckCredentialsInput"/>
    <component name="USPLocalAgent"/>
    <component name="STOMP"/>
    <component name="ManagementServerCommon"/>
    <component name="SoftwareModules"/>
    <model name="_Device:2.16" ref="Device:2.16"/>
  </import>

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

  <!-- Templates used in object and/or parameter descriptions -->

  <template id="Reset">
    {{param|Reset}} parameter is set to {{true}}
  </template>

  <template id="BULK-DATA-HTTP-REF">
    {{bibref|TR-069|Annex N}}
  </template>

  <template id="BULK-DATA-HTTP-QUERY-REF">
    {{bibref|TR-069|Annex N.2.1}}
  </template>

  <template id="BULK-DATA-HTTP-RETRY-REF">
    {{bibref|TR-069|Annex N.2.2.1}}
  </template>

  <template id="BULK-DATA-WILD-REF">
    {{bibref|TR-069|Annex N.3.1}}
  </template>

  <template id="BULK-DATA-CSV-REF">
    {{bibref|TR-069|Annex N.3.4}}
  </template>

  <template id="BULK-DATA-JSON-REF">
    {{bibref|TR-069|Annex N.3.5}}
  </template>

  <template id="BULK-DATA-OPT-SOLNS"/>

  <template id="BULK-DATA-TIMESTAMP">
    . If the CPE is unable to acquire a time, then the processing described by
    the dateTime type in {{bibref|TR-069|Table 12}} is followed
  </template>

  <template id="FAP-GPS-RESET">
    This value is retained across reboots and is only reset after another scan
    completes successfully or {{param|GPSReset}} is set to {{true}}.
  </template>

  <template id="PERIODICSTATISTICS-FORCESAMPLE">
    {{param|Device.PeriodicStatistics.SampleSet.{i}.ForceSample}}
  </template>

  <template id="PERIODICSTATISTICS-FAILURES">
    {{param|Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Failures}}
  </template>

  <template id="USP-REQUEST-CHALLENGE">
    USP RequestChallenge()
  </template>

  <template id="USP-CHALLENGE-RESPONSE">
    USP ChallengeResponse()
  </template>

  <template id="XMPP-REF">
    , as specified in {{bibref|TR-069|Annex K XMPP Connection Request}}
  </template>

  <template id="XMPP-APP-REF">
    , as described in {{bibref|TR-069|Appendix III}}
  </template>

  <template id="VENDORCONFIGFILE-DESC">
    Whenever the CPE successfully downloads a configuration file as a result of
    the Download RPC with the FileType argument of ''3 Vendor Configuration
    File'', the CPE MUST update this table.
  </template>

  <template id="VENDORCONFIGFILE-NAME">
    Otherwise, the value of this parameter MUST be set to the value of the
    TargetFileName argument of the Download RPC used to download this
    configuration file.
  </template>

  <template id="IP-DIAGNOSTICS-PARENT"/>

  <model name="Device:2.16" base="_Device:2.16">
    <object base="Device.DeviceInfo." access="readOnly" minEntries="1"
        maxEntries="1">

      <parameter base="ManufacturerOUI" access="readOnly">
        <description action="append">
          Any change would indicate that it's a new device and would therefore
          require a BOOTSTRAP Inform.
        </description>
      </parameter>

      <parameter name="SupportedDataModelNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.DeviceInfo.ProcessStatus." access="readOnly"
        minEntries="1" maxEntries="1">

      <parameter base="ProcessNumberOfEntries" access="readOnly">
        <description action="append">
          Since a Process can come and go very quickly, the CPE SHOULD place a
          locally specified limit on the frequency at which it will notify the
          ACS of value changes, as described in {{bibref|TR-069|Section
          3.2.1}}.
        </description>
      </parameter>
    </object>

    <object name="Device.DeviceInfo.SupportedDataModel.{i}." access="readOnly"
        numEntriesParameter="SupportedDataModelNumberOfEntries" minEntries="0"
        maxEntries="unbounded" version="2.0">
      <description>
        This table contains details of the device's Current Supported Data
        Model.

        The table MUST describe the device's entire Supported Data Model.
        Therefore, if a device's Supported Data Model changes at run-time,
        entries will need to be added or removed as appropriate.

        Each table entry MUST refer to only a single Root Object or Service
        Object. The device MAY choose to use more than one table entry for a
        given Root Object or Service Object.

        Considering that every device has some form of a data model, this table
        MUST NOT be empty.
      </description>
      <uniqueKey functional="true">
        <parameter ref="URL"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="UUID"/>
      </uniqueKey>

      <parameter name="Alias" access="readWrite" version="2.3">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>

      <parameter name="URL" access="readOnly">
        <description>
          The {{datatype}} that describes some or all of the device's currently
          Supported Data Model.

          The URL MUST reference an XML file which describes the appropriate
          part of the Supported Data Model.

          The referenced XML file MUST be compliant with the DT (Device Type)
          Schema that is described in {{bibref|TR-106|Annex B}}, including any
          additional normative requirements referenced within the Schema.

          The XML file referenced by this URL MUST NOT change while the CPE is
          running, and SHOULD NOT change across a CPE reboot. Note that
          {{param|UUID}} is a unique key, so the XML file referenced by this
          URL will never change.

          The XML file MAY be located within the CPE. In this scenario the CPE
          MAY use the value of "localhost" as URL host portion, When the
          "localhost" value is used, the ACS has the responsibility to
          substitute the "localhost" value with the host portion of the
          connection request URL.

          Behavior in the event of an invalid URL, failure to access the
          referenced XML file, or an invalid XML file, is
          implementation-dependent.
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>

      <parameter name="UUID" access="readOnly" version="2.6">
        <description>
          UUID ({{bibref|RFC4122}}) that is the value of the uuid attribute in
          the DT Instance referenced by {{param|URL}}.
        </description>
        <syntax>
          <dataType ref="UUID"/>
        </syntax>
      </parameter>

      <parameter name="URN" access="readOnly">
        <description>
          URN ({{bibref|RFC3986}}) that is the value of the spec attribute in
          the DM (data model) Instance that defines the Root Object or Service
          Object referenced by this table entry.

          For example, if this table entry references a DT Instance that refers
          to the ''Device:2.13'' Root Object, the value of this parameter would
          be ''urn:broadband-forum-org:tr-181-2-13-0''. If the DT Instance
          instead referred to a vendor-specific Root Object, e.g.
          ''X_EXAMPLE_Device:1.0'' (derived from ''Device:1.3''), the value of
          this parameter would be something like
          ''urn:example-com:device-1-0-0''.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Features" access="readOnly">
        <description>
          This parameter MUST list exactly the features that are defined using
          the top-level ''feature'' element in the DT Instance referenced by
          {{param|URL}}.

          For example, if the DT instance specified the following:

          :&lt;feature name="DNSServer"/&gt;

          :&lt;feature name="Router"/&gt;

          :&lt;feature name="X_MyDeviceFeature"/&gt;

          then the value of this parameter might be
          ''DNSServer,Router,X_MyDeviceFeature''. The order in which the
          features are listed is not significant.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.DeviceInfo.ProxierInfo." access="readOnly"
        minEntries="1" maxEntries="1" version="2.3">
      <description>
        Represents the associated CPE Proxier for a Proxied Device that
        utilizes the Virtual CWMP Device Mechanism {{bibref|TR-069|Annex J.2}}.
      </description>

      <parameter name="ManufacturerOUI" access="readOnly">
        <description>
          Organizationally unique identifier of the associated CPE Proxier.
          Represented as a six hexadecimal-digit value using all upper-case
          letters and including any leading zeros. {{pattern}}

          The value MUST be a valid OUI as defined in {{bibref|OUI}}.
        </description>
        <syntax>
          <string>
            <size minLength="6" maxLength="6"/>
            <pattern value="[0-9A-F]{6}"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProductClass" access="readOnly">
        <description>
          Identifier of the class of product of the associated CPE Proxier for
          which the serial number applies.

          {{empty}} indicates either that the CPE Proxier does not use a
          product class to differentiate its serial number.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="SerialNumber" access="readOnly">
        <description>
          Serial number of the associated CPE Proxier.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProxyProtocol" access="readOnly">
        <description>
          The protocol being used to communicate between the CPE Proxier and
          this Proxied Device. {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in {{bibref|TR-106|3.3}}
          MUST be adhered to.
        </description>
        <syntax>
          <string>
            <enumeration value="Z-Wave">
              <description>see {{bibref|Z-Wave}}</description>
            </enumeration>
            <enumeration value="ZigBee">
              <description>see {{bibref|ZigBee}}</description>
            </enumeration>
            <enumeration value="UPnP-DM">
              <description>see {{bibref|UPnP-DM:1}}</description>
            </enumeration>
            <enumeration value="ETSI-M2M">
              <description>see {{bibref|ETSIM2MFA}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.GatewayInfo." access="readOnly" minEntries="1"
        maxEntries="1" version="2.0">
      <description>
        This object contains information associated with a connected Internet
        Gateway Device.
      </description>

      <parameter name="ManufacturerOUI" access="readOnly"
          activeNotify="forceDefaultEnabled">
        <description>
          Organizationally unique identifier of the associated Internet Gateway
          Device. {{pattern}}

          {{empty}} indicates that there is no associated Internet Gateway
          Device that has been detected.
        </description>
        <syntax>
          <string>
            <size maxLength="6"/>
            <pattern value=""/>
            <pattern value="[0-9A-F]{6}"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProductClass" access="readOnly"
          activeNotify="forceDefaultEnabled">
        <description>
          Identifier of the product class of the associated Internet Gateway
          Device. {{empty}} indicates either that there is no associated
          Internet Gateway Device that has been detected, or the Internet
          Gateway Device does not support the use of the product-class
          parameter.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="SerialNumber" access="readOnly"
          activeNotify="forceDefaultEnabled">
        <description>
          Serial number of the associated Internet Gateway Device. {{empty}}
          indicates that there is no associated Internet Gateway Device that
          has been detected.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer." access="readOnly" minEntries="1"
        maxEntries="1" version="2.0" dmr:previousObject="Device.DeviceInfo.">
      <description>
        This object contains parameters relating to the CPE's association with
        an ACS.
      </description>

      <component ref="ManagementServerCommon"/>

      <parameter name="URL" access="readWrite">
        <description>
          The {{datatype}} for the CPE to connect to the ACS using the CPE WAN
          Management Protocol.

          This parameter MUST be in the form of a valid HTTP or HTTPS URL.

          The ''host'' portion of this URL is used by the CPE for validating
          the ACS certificate when using SSL or TLS.

          Note that on a factory reset of the CPE, the value of this parameter
          might be reset to its factory value. If an ACS modifies the value of
          this parameter, it SHOULD be prepared to accommodate the situation
          that the original value is restored as the result of a factory reset.
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>

      <parameter name="Username" access="readWrite">
        <description>
          Username used to authenticate the CPE when making a connection to the
          ACS using the CPE WAN Management Protocol.

          This username is used only for HTTP-based authentication of the CPE.

          Note that on a factory reset of the CPE, the value of this parameter
          might be reset to its factory value. If an ACS modifies the value of
          this parameter, it SHOULD be prepared to accommodate the situation
          that the original value is restored as the result of a factory reset.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Password" access="readWrite">
        <description>
          Password used to authenticate the CPE when making a connection to the
          ACS using the CPE WAN Management Protocol.

          This password is used only for HTTP-based authentication of the CPE.

          Note that on a factory reset of the CPE, the value of this parameter
          might be reset to its factory value. If an ACS modifies the value of
          this parameter, it SHOULD be prepared to accommodate the situation
          that the original value is restored as the result of a factory reset.
        </description>
        <syntax hidden="true">
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ScheduleReboot" access="readWrite" version="2.10">
        <description>
          An absolute date and time in UTC at which time the CPE will perform a
          reboot.

          If a CWMP session is in progress at the specified time, the CPE MUST
          wait until the session has ended before performing the reboot.

          If the value specifies a date and time that has already passed (i.e.,
          a past date and time), no reboot will be performed.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="DelayReboot" access="readWrite" version="2.10">
        <description>
          The number of {{units}} from the time the CWMP session in which this
          parameter value is set is ended until the CPE performs a reboot.

          Whenever the CPE reboots, this value MUST be reset by the CPE to -1.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
            <units value="seconds"/>
          </int>
        </syntax>
      </parameter>

      <parameter name="PeriodicInformEnable" access="readWrite">
        <description>
          Whether or not the CPE MUST periodically send CPE information to the
          ACS using the Inform method call.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="PeriodicInformInterval" access="readWrite">
        <description>
          The duration in {{units}} of the interval for which the CPE MUST
          attempt to connect with the ACS and call the Inform method if
          {{param|PeriodicInformEnable}} is {{true}}.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="PeriodicInformTime" access="readWrite">
        <description>
          An absolute time reference in UTC to determine when the CPE will
          initiate the periodic Inform method calls. Each Inform call MUST
          occur at this reference time plus or minus an integer multiple of the
          {{param|PeriodicInformInterval}}.

          {{param}} is used only to set the ''phase'' of the periodic Informs.
          The actual value of {{param}} can be arbitrarily far into the past or
          future.

          For example, if {{param|PeriodicInformInterval}} is 86400 (a day) and
          if {{param}} is set to UTC midnight on some day (in the past,
          present, or future) then periodic Informs will occur every day at UTC
          midnight. These MUST begin on the very next midnight, even if
          {{param}} refers to a day in the future.

          The Unknown Time value defined in {{bibref|TR-106|section 3.2}}
          indicates that no particular time reference is specified. That is,
          the CPE MAY locally choose the time reference, and needs only to
          adhere to the specified {{param|PeriodicInformInterval}}.

          If absolute time is not available to the CPE, its periodic Inform
          behavior MUST be the same as if the {{param}} parameter was set to
          the Unknown Time value.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="ParameterKey" access="readOnly" activeNotify="canDeny"
          forcedInform="true">
        <description>
          {{param}} provides the ACS a reliable and extensible means to track
          changes made by the ACS. The value of {{param}} MUST be equal to the
          value of the ParameterKey argument from the most recent successful
          SetParameterValues, AddObject, or DeleteObject method call from the
          ACS.

          The CPE MUST set {{param}} to the value specified in the
          corresponding method arguments if and only if the method completes
          successfully and no fault response is generated. If a method call
          does not complete successfully (implying that the changes requested
          in the method did not take effect), the value of {{param}} MUST NOT
          be modified.

          The CPE MUST only modify the value of {{param}} as a result of
          SetParameterValues, AddObject, DeleteObject, or due to a factory
          reset. On factory reset, the value of {{param}} MUST be set to
          {{empty}}.
        </description>
        <syntax>
          <string>
            <size maxLength="32"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ConnectionRequestURL" access="readOnly"
          activeNotify="forceDefaultEnabled" forcedInform="true">
        <description>
          The HTTP {{datatype}} for an ACS to make a Connection Request
          notification to the CPE.

          In the form:

          : http://host:port/path

          The ''host'' portion of the URL MAY be the IP address for the
          management interface of the CPE in lieu of a host name.

          Note: If the ''host'' portion of the URL is a literal IPv6 address
          then it MUST be enclosed in square brackets (see
          {{bibref|RFC3986|Section 3.2.2}}).
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>

      <parameter name="ConnectionRequestUsername" access="readWrite">
        <description>
          Username used to authenticate an ACS making a Connection Request to
          the CPE.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ConnectionRequestPassword" access="readWrite">
        <description>
          Password used to authenticate an ACS making a Connection Request to
          the CPE.
        </description>
        <syntax hidden="true">
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="UpgradesManaged" access="readWrite">
        <description>
          Indicates whether or not the ACS will manage upgrades for the CPE. If
          {{true}}, the CPE SHOULD NOT use other means other than the ACS to
          seek out available upgrades. If {{false}}, the CPE MAY use other
          means for this purpose.

          Note that an autonomous upgrade (reported via an "10 AUTONOMOUS
          TRANSFER COMPLETE" Inform Event code) SHOULD be regarded as a managed
          upgrade if it is performed according to ACS-specified policy.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="KickURL" access="readOnly">
        <description>
          Present only for a CPE that supports the Kicked RPC method.

          LAN-accessible {{datatype}} from which the CPE can be ''kicked'' to
          initiate the Kicked RPC method call. MUST be an absolute URL
          including a host name or IP address as would be used on the LAN side
          of the CPE.
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>

      <parameter name="DownloadProgressURL" access="readOnly">
        <description>
          Present only for a CPE that provides a LAN-side web page to show
          progress during a file download.

          LAN-accessible {{datatype}} to which a web-server associated with the
          ACS MAY redirect a user's browser on initiation of a file download to
          observer the status of the download.
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>

      <parameter name="DefaultActiveNotificationThrottle" access="readWrite">
        <description>
          This parameter is used to control throttling of active notifications
          sent by the CPE to the ACS. It defines the minimum number of
          {{units}} that the CPE MUST wait since the end of the last session
          with the ACS before establishing a new session for the purpose of
          delivering an active notification.

          In other words, if CPE needs to establish a new session with the ACS
          for the sole purpose of delivering an active notification, it MUST
          delay establishing such a session as needed to ensure that the
          minimum time since the last session completion has been met.

          The time is counted since the last successfully completed session,
          regardless of whether or not it was used for active notifications or
          other purposes. However, if connection to the ACS is established for
          purposes other than just delivering active notifications, including
          for the purpose of retrying a failed session, such connection MUST
          NOT be delayed based on this parameter value, and the pending active
          notifications MUST be communicated during that connection.

          The time of the last session completion does not need to be tracked
          across reboots.
        </description>
        <syntax>
          <unsignedInt>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="CWMPRetryMinimumWaitInterval" access="readWrite">
        <description>
          Configures the first session retry wait interval, in {{units}}, as
          specified in {{bibref|TR-069|section 3.2.1.1}}.

          A value of 5 corresponds to the default behavior that is described in
          {{bibref|TR-069}}.

          The device MUST use a random value between {{param}} and ({{param}} *
          {{param|CWMPRetryIntervalMultiplier}} / 1000) as the first retry wait
          interval. Other values in the retry pattern MUST be calculated using
          this value as a starting point.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1" maxInclusive="65535"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="CWMPRetryIntervalMultiplier" access="readWrite">
        <description>
          Configures the retry interval multiplier as specified in
          {{bibref|TR-069|section 3.2.1.1}}.

          This value is expressed in units of 0.001. Hence the values of the
          multiplier range between 1.000 and 65.535.

          A value of 2000 corresponds to the default behavior that is described
          in {{bibref|TR-069}}.

          The device MUST use a random value between
          {{param|CWMPRetryMinimumWaitInterval}} and
          ({{param|CWMPRetryMinimumWaitInterval}} * {{param}} / 1000) as the
          first retry wait interval. Other values in the retry pattern MUST be
          calculated using this value as a starting point.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1000" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="HTTPConnectionRequestEnable" access="readWrite"
          version="2.11">
        <description>
          Enables or disables HTTP connection request handling on the CPE.

          If HTTP connection request handling is disabled ({{param}} is set to
          {{false}}), {{param|ConnectionRequestURL}} MUST be set to {{empty}}
          and the CPE MUST close the port used by the HTTP connection request
          server.
        </description>
        <syntax>
          <boolean/>
          <default type="factory" value="true"/>
        </syntax>
      </parameter>

      <parameter name="UDPConnectionRequestAddress" access="readOnly">
        <description>
          Address and port to which an ACS MAY send a UDP Connection Request to
          the CPE (see {{bibref|TR-069|Annex G}}).

          This parameter is represented in the form of an Authority element as
          defined in {{bibref|RFC3986}}. The value MUST be in one of the
          following two forms:

          : host:port

          : host

          * When {{param|STUNEnable}} is {{true}}, the ''host'' and ''port''
            portions of this parameter MUST represent the public address and
            port corresponding to the NAT binding through which the ACS can
            send UDP Connection Request messages (once this information is
            learned by the CPE through the use of STUN).

          * When {{param|STUNEnable}} is {{false}}, the ''host'' and ''port''
            portions of the URL MUST represent the local IP address and port on
            which the CPE is listening for UDP Connection Request messages.

          The second form of this parameter MAY be used only if the port value
          is equal to ''80''.

          Note: If the ''host'' portion of the URL is a literal IPv6 address
          then it MUST be enclosed in square brackets (see
          {{bibref|RFC3986|Section 3.2.2}}).
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="STUNEnable" access="readWrite">
        <description>
          Enables or disables the use of STUN by the CPE. This applies only to
          the use of STUN in association with the ACS to allow UDP Connection
          Requests.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="STUNServerAddress" access="readWrite">
        <description>
          Host name or IP address of the STUN server for the CPE to send
          Binding Requests if STUN is enabled via {{param|STUNEnable}}.

          If is {{empty}} and {{param|STUNEnable}} is {{true}}, the CPE MUST
          use the address of the ACS extracted from the host portion of the ACS
          URL.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="STUNServerPort" access="readWrite">
        <description>
          Port number of the STUN server for the CPE to send Binding Requests
          if STUN is enabled via {{param|STUNEnable}}.

          By default, this SHOULD be the equal to the default STUN port, 3478.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="STUNUsername" access="readWrite">
        <description>
          If is not {{empty}}, the value of the STUN USERNAME attribute to be
          used in Binding Requests (only if message integrity has been
          requested by the STUN server).

          If is {{empty}}, the CPE MUST NOT send STUN Binding Requests with
          message integrity.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="STUNPassword" access="readWrite">
        <description>
          The value of the STUN Password to be used in computing the
          MESSAGE-INTEGRITY attribute to be used in Binding Requests (only if
          message integrity has been requested by the STUN server).
        </description>
        <syntax hidden="true">
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="STUNMaximumKeepAlivePeriod" access="readWrite">
        <description>
          If STUN Is enabled, the maximum period, in {{units}}, that STUN
          Binding Requests MUST be sent by the CPE for the purpose of
          maintaining the binding in the Gateway. This applies specifically to
          Binding Requests sent from the UDP Connection Request address and
          port.

          A value of -1 indicates that no maximum period is specified.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
            <units value="seconds"/>
          </int>
        </syntax>
      </parameter>

      <parameter name="STUNMinimumKeepAlivePeriod" access="readWrite">
        <description>
          If STUN Is enabled, the minimum period, in {{units}}, that STUN
          Binding Requests can be sent by the CPE for the purpose of
          maintaining the binding in the Gateway. This limit applies only to
          Binding Requests sent from the UDP Connection Request address and
          port, and only those that do not contain the BINDING-CHANGE
          attribute. This limit does not apply to retransmissions following the
          procedures defined in {{bibref|RFC3489}}.
        </description>
        <syntax>
          <unsignedInt>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="NATDetected" access="readOnly">
        <description>
          When STUN is enabled, this parameter indicates whether or not the CPE
          has detected address and/or port mapping in use.

          A {{true}} value indicates that the received MAPPED-ADDRESS in the
          most recent Binding Response differs from the CPE's source address
          and port.

          When {{param|STUNEnable}} is {{false}}, this value MUST be {{false}}.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="AliasBasedAddressing" access="readOnly"
          forcedInform="true" version="2.3">
        <description>
          Indicates whether or not the Alias-Based Addressing Mechanism is
          supported.

          A {{true}} value indicates that the CPE supports the Alias-Based
          Addressing Mechanism, as defined in {{bibref|TR-069|3.6.1}} and
          described in {{bibref|TR-069|Appendix II}}.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="InstanceMode" access="readWrite" version="2.3">
        <description>
          Instance identification mode as defined in {{bibref|TR-069|3.6.1}}.
          When {{param|AliasBasedAddressing}} is {{true}}, {{param}} is used by
          the ACS to control whether the CPE will use Instance Numbers or
          Instance Aliases in returned Path Names. {{enum}}

          This parameter is REQUIRED for any CPE supporting Alias-Based
          Addressing.
        </description>
        <syntax>
          <string>
            <enumeration value="InstanceNumber"/>
            <enumeration value="InstanceAlias"/>
          </string>
          <default type="factory" value="InstanceNumber"/>
        </syntax>
      </parameter>

      <parameter name="AutoCreateInstances" access="readWrite" version="2.3">
        <description>
          Enable or disable the Auto-Create Instance Mechanism. When
          {{param|AliasBasedAddressing}} is {{true}}, {{param}} indicates
          whether or not the CPE will automatically create instances while
          processing a SetParameterValues RPC (as defined in
          {{bibref|TR-069|A.3.2.1}}).

          *A {{true}} value indicates that the CPE will perform auto-creation
           of instances when the Alias-Based Addressing Mechanism is used in
           SetParameterValues RPC.

          *A {{false}} value indicates that the CPE will not create new object
           instances. Instead, it will reject the setting of parameters in
           unrecognized instances and respond with a fault code.

          This parameter is REQUIRED for any CPE supporting Alias-Based
          Addressing.
        </description>
        <syntax>
          <boolean/>
          <default type="factory" value="false"/>
        </syntax>
      </parameter>

      <parameter name="ManageableDeviceNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="ManageableDeviceNotificationLimit" access="readWrite"
          version="2.7">
        <description>
          The minimum time, in seconds, between Active Notifications resulting
          from changes to the {{param|ManageableDeviceNumberOfEntries}} (if
          Active Notification is enabled).
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="EmbeddedDeviceNumberOfEntries" access="readOnly"
          version="2.3">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="VirtualDeviceNumberOfEntries" access="readOnly"
          version="2.3">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="SupportedConnReqMethods" access="readOnly"
          version="2.7">
        <description>
          The connection request methods supported by this {{object}}. {{enum}}
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="HTTP">
              <description>
                The connection request method as specified in
                {{bibref|TR-069|Section 3.2.2 ACS Connection Initiation}},
                '''REQUIRED'''
              </description>
            </enumeration>
            <enumeration value="STUN" optional="true">
              <description>
                The connection request method as specified in
                {{bibref|TR-069|Annex G Connection Request via NAT Gateway}}
              </description>
            </enumeration>
            <enumeration value="XMPP" optional="true">
              <description>
                The connection request method as specified in
                {{bibref|TR-069|Annex K XMPP Connection Request}}
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="ConnReqXMPPConnection" access="readWrite" version="2.7">
        <description>
          {{reference|the {{object|#.XMPP.Connection}} instance that is used
          for connection requests to this {{object}}}}
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent="#.XMPP.Connection."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ConnReqAllowedJabberIDs" access="readWrite"
          version="2.7">
        <description>
          When an XMPP Connection Request is sent to a CPE the XMPP IQ Stanza
          will contian a "from" address that contains the Jabber ID of the
          initiating entity.

          This parameter is a {{list}} Each entry represents a Jabber ID, or
          address, that is allowed to initiate an XMPP Connection Request.

          Each Jabber ID is allowed to be either a "Full JID" (containing a
          local-part, domain-part, and resource-part in the following format:
          "local-part@domain-part/resource-part") or a "Bare JID" (containing a
          local-part and a domain-part in the following format:
          "local-part@domain-part"). "Full JID" entries require an exact match
          whereas "Bare JID" entries are a wildcard match and will match any
          Jabber ID with the same local-part and domain-part independent of the
          resource-part.

          For example, if {{param}} contained "ACS1@tr069.example.com,
          ACS2@tr-069.example.com/resource1" then the following incoming "from"
          addresses would be '''allowed''':

          * "ACS1@tr069.example.com/resource1"

          * "ACS1@tr069.example.com/resource2"

          * "ACS2@tr069.example.com/resource1"

          And the following incoming "from" addresses '''would not be
          allowed''':

          * "ACS2@tr069.example.com/resource2"

          * "ACS@tr069.example.com/resource"

          If this Parameter is {{empty}} then all Jabber IDs are allowed and an
          XMPP Connection Request can not be deemed invalid due to the "from"
          address.
        </description>
        <syntax>
          <list maxItems="32">
            <size/>
          </list>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ConnReqJabberID" access="readOnly"
          activeNotify="forceDefaultEnabled" version="2.7">
        <description>
          The value MUST be the value of the
          {{param|#.XMPP.Connection.{i}.JabberID}} contained in the
          {{object|#.XMPP.Connection}} instance referenced by the
          {{param|ConnReqXMPPConnection}} parameter.

          If the {{param|ConnReqXMPPConnection}} parameter is empty or the
          {{object|#.XMPP.Connection}} instance being reference is disabled,
          then this value will be empty.

          If the {{object|#.XMPP.Connection}} instance being referenced by the
          {{param|ConnReqXMPPConnection}} parameter is lost
          ({{param|#.XMPP.Connection.{i}.Status}} parameter changes from
          Enabled to some other value), then the value of this parameter MUST
          remain unchanged until the connection can be reestablished and a new
          {{param|#.XMPP.Connection.{i}.JabberID}} can be established. If the
          new {{param|#.XMPP.Connection.{i}.JabberID}} is identical to the
          existing value, then the value of this parameter MUST NOT be altered
          and a VALUE CHANGE event MUST NOT be generated.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="HTTPCompressionSupported" access="readOnly"
          version="2.7">
        <description>
          Indicates the HTTP Compression mechanism(s) supported by this CPE.
          Requirements for the use of HTTP Compression for CWMP can be found in
          {{bibref|TR-069|Section 3.4.7}}. {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in
          {{bibref|TR-106|Section 3.3}} MUST be adhered to.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="GZIP">
              <description>
                As defined in {{bibref|RFC2616|Section 3.5}}
              </description>
            </enumeration>
            <enumeration value="Compress">
              <description>
                As defined in {{bibref|RFC2616|Section 3.5}}
              </description>
            </enumeration>
            <enumeration value="Deflate">
              <description>
                As defined in {{bibref|RFC2616|Section 3.5}}
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="HTTPCompression" access="readWrite" version="2.7">
        <description>
          The value of this parameter represents the HTTP Compression mechanism
          to be used by the CPE when communicating with the ACS.
        </description>
        <syntax>
          <string>
            <enumerationRef targetParam="HTTPCompressionSupported"
                nullValue="Disabled"/>
          </string>
          <default type="factory" value="Disabled"/>
        </syntax>
      </parameter>

      <parameter name="LightweightNotificationProtocolsSupported"
          access="readOnly" version="2.7">
        <description>
          Indicates the Lightweight Notification Protocol(s) supported by this
          CPE. {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in
          {{bibref|TR-106|Section 3.3}} MUST be adhered to.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="UDP">
              <description>
                As defined in {{bibref|TR-069|Annex M}}
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="LightweightNotificationProtocolsUsed"
          access="readWrite" version="2.7">
        <description>
          The value of this parameter represents the protocol(s) that will be
          used by the CPE when sending Lightweight Notifications.

          {{empty}} means that Lightweight Notifications are disabled, despite
          any SetParameterAttributes that have been configured on various
          parameters.
        </description>
        <syntax>
          <list/>
          <string>
            <enumerationRef
                targetParam="LightweightNotificationProtocolsSupported"
                nullValue=""/>
          </string>
        </syntax>
      </parameter>

      <parameter name="LightweightNotificationTriggerInterval"
          access="readWrite" version="2.12">
        <description>
          The duration in {{units}} of the interval for which the CPE MUST
          attempt to deliver any pending Passive Lightweight Notifications.

          A value of 0 means that the trigger interval is effectively disabled.
          In this case pending Passive Lightweight Notifications are only sent
          when triggered by an Active Lightweight Notification.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="LightweightNotificationTriggerTime" access="readWrite"
          version="2.12">
        <description>
          An absolute time reference in UTC to determine when the CPE will
          initiate the Lightweight Notification (in the case that there are
          pending Passive Lightweight Notifications that need to be delivered).
          Each Passive Lightweight Notification (that is waiting for the
          Lightweight Notification Trigger mechanism for delivery) MUST occur
          at this reference time plus or minus an integer multiple of the
          {{param|LightweightNotificationTriggerInterval}}. {{param}} is used
          only to set the ''phase'' of the Passive Lightweight Notification.
          The actual value of {{param}} can be arbitrarily far into the past or
          future.

          For example, if {{param|LightweightNotificationTriggerInterval}} is
          86400 (a day) and if {{param}} is set to UTC midnight on some day (in
          the past, present, or future) then Lightweight Notifications for
          pending Passive Lightweight Notifications will occur every day at UTC
          midnight. These MUST begin on the very next midnight, even if
          {{param}} refers to a day in the future. The Unknown Time value
          defined in {{bibref|TR-106|section 3.2}} indicates that no particular
          time reference is specified. That is, the CPE MAY locally choose the
          time reference, and needs only to adhere to the specified
          {{param|LightweightNotificationTriggerInterval}}. If absolute time is
          not available to the CPE, its Lightweight Notifications behavior MUST
          be the same as if the {{param}} parameter was set to the Unknown Time
          value.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="UDPLightweightNotificationHost" access="readWrite"
          version="2.7">
        <description>
          Host name or address to be used when sending the UDP Lightweight
          Notifications.

          {{param}} is only applicable when
          {{param|LightweightNotificationProtocolsUsed}} contains the
          {{enum|UDP|LightweightNotificationProtocolsUsed}} enumeration.

          If {{param}} is not implemented or is {{empty}}, and UDP Lightweight
          Notifications are supported, the destination host MUST be the same as
          the ACS (as contained in the host portion of the {{param|URL}}).
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="UDPLightweightNotificationPort" access="readWrite"
          version="2.7">
        <description>
          The port number to be used when sending UDP Lightweight
          Notifications.

          {{param}} is only applicable when
          {{param|LightweightNotificationProtocolsUsed}} contains the
          {{enum|UDP|LightweightNotificationProtocolsUsed}} enumeration.

          If {{param}} is not implemented and UDP Lightweight Notifications are
          supported, the destination port MUST be 7547.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="InstanceWildcardsSupported" access="readOnly"
          version="2.12">
        <description>
          Indicates whether or not instance wildcards are supported.

          A {{true}} value indicates that the CPE supports instance wildcards
          for GPV, GPN and GPA RPC calls, as defined in [TR-069].
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="InformParameterNumberOfEntries" access="readOnly"
          version="2.8">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.ManageableDevice.{i}."
        access="readOnly" numEntriesParameter="ManageableDeviceNumberOfEntries"
        minEntries="0" maxEntries="unbounded" version="2.0">
      <description>
        Each entry in this table corresponds to a distinct LAN Device that
        supports Device-Gateway Association according to {{bibref|TR-069|Annex
        F}} as indicated by the presence of the DHCP option specified in that
        Annex.
      </description>
      <uniqueKey functional="true">
        <parameter ref="ManufacturerOUI"/>
        <parameter ref="SerialNumber"/>
        <parameter ref="ProductClass"/>
      </uniqueKey>

      <parameter name="Alias" access="readWrite" status="deleted">
        <description>
          A non-volatile handle used to reference this instance. {{param}}
          provides a mechanism for an ACS to label this instance for future
          reference. An initial unique value MUST be assigned when the CPE
          creates an instance of this object.

          {{deprecated|2.11|because {{object}} is a transient object}}

          {{obsoleted|2.14}}

          {{deleted|2.15}}
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ManufacturerOUI" access="readOnly"
          activeNotify="canDeny">
        <description>
          Organizationally unique identifier of the Device manufacturer as
          provided to the Gateway by the Device. Represented as a six
          hexadecimal-digit value using all upper-case letters and including
          any leading zeros. {{pattern}}

          The value MUST be a valid OUI as defined in {{bibref|OUI}}.
        </description>
        <syntax>
          <string>
            <size minLength="6" maxLength="6"/>
            <pattern value="[0-9A-F]{6}"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="SerialNumber" access="readOnly" activeNotify="canDeny">
        <description>
          Serial number of the Device as provided to the Gateway by the Device.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProductClass" access="readOnly" activeNotify="canDeny">
        <description>
          Identifier of the class of product for which the Device's serial
          number applies as provided to the Gateway by the Device.

          If the Device does not provide a Product Class, then this parameter
          MUST be {{empty}}.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Host" access="readOnly">
        <description>
          {{list}} {{reference}} References all the {{object|##.Hosts.Host}}
          table entries, whether active or inactive, that correspond to this
          physical LAN device. There can be multiple such entries if the device
          has more than one network interface.

          For example: ''Device.Hosts.Host.1,Device.Hosts.Host.5''
        </description>
        <syntax>
          <list>
            <size maxLength="1024"/>
          </list>
          <string>
            <pathRef refType="strong" targetParent="##.Hosts.Host."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.AutonomousTransferCompletePolicy."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object allows configuration of CPE policy for notification of
        AUTONOMOUS TRANSFER COMPLETE events, defined in {{bibref|TR-069}}.

        The CPE policy determines the conditions under which the CPE notifies
        the ACS of the completion of file transfers that were not specifically
        requested by the ACS.
      </description>

      <parameter name="Enable" access="readWrite">
        <description>
          Enable/disable CPE notification of AUTONOMOUS TRANSFER COMPLETE
          events to the ACS.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="TransferTypeFilter" access="readWrite">
        <description>
          Indicates the transfer types that MUST be included when the CPE
          notifies the ACS of AUTONOMOUS TRANSFER COMPLETE events. Transfer
          types not indicated by this filter MUST NOT be included when the CPE
          notifies the ACS. {{enum}}

          Note that this includes any backup or restore operations that were
          not specifically requested by the ACS. A backup is regarded as an
          Upload and a restore is regarded as a Download.
        </description>
        <syntax>
          <string>
            <enumeration value="Upload"/>
            <enumeration value="Download"/>
            <enumeration value="Both">
              <description>Upload and Download</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="ResultTypeFilter" access="readWrite">
        <description>
          Indicates the transfer results that MUST be included when the CPE
          notifies the ACS of AUTONOMOUS TRANSFER COMPLETE events. Transfer
          results omitted from this list MUST NOT be included when the CPE
          notifies the ACS.

          Note that this includes any backup or restore operations that were
          not specifically requested by the ACS. A backup is regarded as an
          Upload and a restore is regarded as a Download.
        </description>
        <syntax>
          <string>
            <enumeration value="Success">
              <description>
                The autonomous file transfer completed successfully; i.e., the
                FaultCode was zero
              </description>
            </enumeration>
            <enumeration value="Failure">
              <description>
                The autonomous file transfer did not complete successfully;
                i.e., the FaultCode was non-zero
              </description>
            </enumeration>
            <enumeration value="Both">
              <description>Success and Failure</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="FileTypeFilter" access="readWrite">
        <description>
          {{list}} Indicates the file types that MUST be included when the CPE
          notifies the ACS of AUTONOMOUS TRANSFER COMPLETE events. File types
          omitted from this list MUST NOT be included when the CPE notifies the
          ACS.

          {{pattern}}

          Additionally, the following format is defined to allow the unique
          definition of vendor-specific file types:

          * ''"X &lt;OUI&gt; &lt;Vendor-specific identifier&gt;"''

          &lt;OUI&gt; is replaced by a 6 hexadecimal-digit OUI
          (organizationally unique identifier) as defined in {{bibref|OUI}},
          with all upper-case letters and any leading zeros included. The OUI
          used for a given vendor-specific file type MUST be one that is
          assigned to the organization that defined this file type (which is
          not necessarily the same as the vendor of the CPE or ACS).

          Note that {{empty}} indicates that all file types are excluded from
          this filter, effectively disabling CPE notification of AUTONOMOUS
          TRANSFER COMPLETE events to the ACS.
        </description>
        <syntax>
          <list>
            <size maxLength="1024"/>
          </list>
          <string>
            <pattern value="1 Firmware Upgrade Image">
              <description>Download Only</description>
            </pattern>
            <pattern value="2 Web Content">
              <description>Download Only</description>
            </pattern>
            <pattern value="3 Vendor Configuration File">
              <description>Download or Upload</description>
            </pattern>
            <pattern value="4 Vendor Log File">
              <description>Upload Only</description>
            </pattern>
            <pattern value="X [0-9A-F]{6} .*">
              <description>
                For Vendor-Specific File Types, could be for either Download or
                Upload
              </description>
            </pattern>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.DownloadAvailability."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object contains multicast announcement and query parameters used
        for the purpose of downloading files.
      </description>
    </object>

    <object name="Device.ManagementServer.DownloadAvailability.Announcement."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object contains multicast announcement parameters used to download
        files.
      </description>

      <parameter name="Enable" access="readWrite">
        <description>
          Enable/disable CPE ability to receive and use multicast announcements
          from a server for the purpose of downloading files.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of the announcement service.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true">
              <description>
                MAY be used by the CPE to indicate a locally defined error
                condition.
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="GroupNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object
        name="Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}."
        access="readWrite" numEntriesParameter="GroupNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.0">
      <description>
        Multicast groups to which the CPE SHOULD listen for announcements.
      </description>
      <uniqueKey functional="true">
        <parameter ref="URL"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Alias" access="readWrite" version="2.3">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>

      <parameter name="Enable" access="readWrite">
        <description>
          Enable/disable listening to this multicast group.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this group table entry.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true">
              <description>
                MAY be used by the CPE to indicate a locally defined error
                condition, e.g. unable to parse received announcements.
              </description>
            </enumeration>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <parameter name="URL" access="readWrite">
        <description>
          The {{datatype}} encoding the group address, source and port on which
          to listen, and other protocol information, e.g. expected announcement
          format.

          Depending on the application, the messages identified by this URL MAY
          directly contain the data to be downloaded, or alternatively MAY
          contain information informing the CPE how to obtain the data to be
          downloaded via a separate mechanism, which itself could involve a
          unicast or a multicast download protocol.

          Refer to {{bibref|DVB-TS.102.824}} for an example of a URL format
          that identifies a SAP {{bibref|RFC2974}} stream that indicates how to
          use either FLUTE {{bibref|RFC3926}} or DSM-CC
          {{bibref|ISO-13818-6:1998}} to perform the download.
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.DownloadAvailability.Query."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object contains multicast query parameters used to download files.
      </description>

      <parameter name="Enable" access="readWrite">
        <description>
          Enable/disable CPE ability to autonomously query a server for the
          purpose of downloading files.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of the query service.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true">
              <description>
                MAY be used by the CPE to indicate a locally defined error
                condition, e.g. unable to contact query response server.
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="URL" access="readWrite">
        <description>
          The {{datatype}} of the query response server.

          Depending on the application, the protocol described by this URL MAY
          be a SOAP interface, or MAY be any other RPC mechanism.

          Refer to {{bibref|DVB-TS.102.824}} for an example of a URL format
          that identifies a SOAP interface running over HTTP or HTTPS.
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.DUStateChangeComplPolicy."
        access="readOnly" minEntries="1" maxEntries="1" version="2.1">
      <description>
        This object allows configuration of CPE policy for notification of "12
        AUTONOMOUS DU STATE CHANGE COMPLETE" events defined in
        {{bibref|TR-069}}.

        The CPE policy determines the conditions under which the CPE notifies
        the ACS of the completion of Deployment Unit state changes that were
        not specifically requested via CWMP.
      </description>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables/Disables CPE notification of "12 AUTONOMOUS DU STATE CHANGE
          COMPLETE" events to the ACS.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="OperationTypeFilter" access="readWrite">
        <description>
          Indicates the Deployment Unit operations that MUST be included when
          the CPE notifies the ACS of "12 AUTONOMOUS DU STATE CHANGE COMPLETE"
          events.

          Operation types not indicated by this list MUST NOT be included when
          the CPE notifies the ACS. {{empty}} is essentially the same as
          setting {{param|Enable}} to {{false}}.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="Install"/>
            <enumeration value="Update"/>
            <enumeration value="Uninstall"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ResultTypeFilter" access="readWrite">
        <description>
          Indicates the Deployment Unit state change results that MUST be
          included when the CPE notifies the ACS of "12 AUTONOMOUS DU STATE
          CHANGE COMPLETE" events. State change results omitted from this
          filter MUST NOT be included when the CPE notifies the ACS.
        </description>
        <syntax>
          <string>
            <enumeration value="Success">
              <description>
                The autonomous state change completed successfully; i.e., the
                FaultCode was zero
              </description>
            </enumeration>
            <enumeration value="Failure">
              <description>
                The autonomous state change did not complete successfully;
                i.e., the FaultCode was non-zero
              </description>
            </enumeration>
            <enumeration value="Both">
              <description>
                All result types independent of Success or Failure
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="FaultCodeFilter" access="readWrite">
        <description>
          Indicates the Deployment Unit state change fault codes that MUST be
          included when the CPE notifies the ACS of "12 AUTONOMOUS DU STATE
          CHANGE COMPLETE" events. State change fault codes omitted from this
          filter MUST NOT be included when the CPE notifies the ACS.

          This filter has no effect on the notification of a successful
          autonomous state change. This filter only applies when
          {{param|ResultTypeFilter}} is set to either
          {{enum|Failure|ResultTypeFilter}} or {{enum|Both|ResultTypeFilter}}.
          {{empty}} means that failed autonomous state changes will not be sent
          to the ACS.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="9001"/>
            <enumeration value="9003"/>
            <enumeration value="9012"/>
            <enumeration value="9013"/>
            <enumeration value="9015"/>
            <enumeration value="9016"/>
            <enumeration value="9017"/>
            <enumeration value="9018"/>
            <enumeration value="9022"/>
            <enumeration value="9023"/>
            <enumeration value="9024"/>
            <enumeration value="9025"/>
            <enumeration value="9026"/>
            <enumeration value="9027"/>
            <enumeration value="9028"/>
            <enumeration value="9029"/>
            <enumeration value="9030"/>
            <enumeration value="9031"/>
            <enumeration value="9032"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.EmbeddedDevice.{i}."
        access="readOnly" numEntriesParameter="EmbeddedDeviceNumberOfEntries"
        minEntries="0" maxEntries="unbounded" version="2.3">
      <description>
        Each entry in this table represents a distinct Proxied Device that
        utilizes the Embedded Object Mechanism {{bibref|TR-069|Annex J.3}} for
        proxying devices.
      </description>
      <uniqueKey functional="true">
        <parameter ref="ControllerID"/>
        <parameter ref="ProxiedDeviceID"/>
      </uniqueKey>

      <parameter name="ControllerID" access="readOnly">
        <description>
          Identifier of the controller that is responsible for a sub-network of
          Proxied Devices within the LAN.

          {{empty}} indicates that this Proxied Device either:

          * Isn't part of a sub-network, within the LAN, with a controller
            entity.

          * Doesn't need a {{param}} to ensure its {{param|ProxiedDeviceID}} is
            unique throughout the LAN.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProxiedDeviceID" access="readOnly">
        <description>
          Idenitfier of the Proxied Device.

          This is an opaque string that is unique to the Proxied Device within
          a specific sub-network within the LAN (identified by the
          {{param|ControllerID}}). If the {{param|ControllerID}} is {{empty}}
          this {{param}} is unique across the LAN.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Reference" access="readOnly">
        <description>
          {{noreference}}The value MUST be the path name of a table row. If the
          referenced object is deleted, this {{object}} instance MUST also be
          removed. Represents the instance of a multi-instanced object that is
          directly controlled by, and has come into existence because of, this
          Proxied Device that utilizes the Embedded Object Mechanism
          {{bibref|TR-069|Annex J.3}}.
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="SupportedDataModel" access="readOnly">
        <description>
          Represents the CWMP-DT schema instance(s) that this Proxied Device is
          utilizing. The CWMP-DT schema instance is also the one being utilized
          by the object referenced within {{param|Reference}}.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong"
                targetParent="##.DeviceInfo.SupportedDataModel."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Host" access="readOnly">
        <description>
          References the {{object|##.Hosts.Host}} table entry(s), whether
          active or inactive, that corresponds to this proxied LAN device.
        </description>
        <syntax>
          <list maxItems="32">
            <size/>
          </list>
          <string>
            <pathRef refType="strong" targetParent="##.Hosts.Host."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProxyProtocol" access="readOnly">
        <description>
          The protocol being used to communicate between the CPE Proxier and
          this Proxied Device. {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in {{bibref|TR-106|3.3}}
          MUST be adhered to.
        </description>
        <syntax>
          <string>
            <enumeration value="Z-Wave">
              <description>see {{bibref|Z-Wave}}</description>
            </enumeration>
            <enumeration value="ZigBee">
              <description>see {{bibref|ZigBee}}</description>
            </enumeration>
            <enumeration value="UPnP-DM">
              <description>see {{bibref|UPnP-DM:1}}</description>
            </enumeration>
            <enumeration value="ETSI-M2M">
              <description>see {{bibref|ETSIM2MFA}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProxyProtocolReference" access="readOnly" version="2.6">
        <description>
          {{reference|a protocol object that uses the {{param|ProxyProtocol}}}}
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="DiscoveryProtocol" access="readOnly" version="2.6">
        <description>
          {{list|that represents the discovery protocol(s) for this proxied
          device}}

          {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in
          {{bibref|TR-106|Section 3.3}} MUST be adhered to.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="Z-Wave">
              <description>see {{bibref|Z-Wave}}</description>
            </enumeration>
            <enumeration value="ZigBee">
              <description>see {{bibref|ZigBee}}</description>
            </enumeration>
            <enumeration value="UPnP">
              <description>see {{bibref|UPnP-DAv1}}</description>
            </enumeration>
            <enumeration value="ETSI-M2M">
              <description>see {{bibref|ETSIM2MFA}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="DiscoveryProtocolReference" access="readOnly"
          version="2.6">
        <description>
          {{list}} {{reference|an object discovered using one or more protocols
          listed in {{param|DiscoveryProtocol}}}}

          For objects discovered by the UPnP discovery protocol, the {{param}}
          would contain items that are references to instances of the
          following:

          * {{object|##.UPnP.Discovery.RootDevice}}

          * {{object|##.UPnP.Discovery.Device}}

          * {{object|##.UPnP.Discovery.Service}}

          For objects discovered by the ETSI-M2M discovery protocol, the
          {{param}} would contain items that are references to instances of
          {{object|##.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance}}.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="CommandProcessed" access="readOnly">
        <description>
          Whether or not the CPE Proxier has successfully communicated all
          pending configuration commands down to the Proxied Device.
        </description>
        <syntax>
          <string>
            <enumeration value="Pending"/>
            <enumeration value="Retrying"/>
            <enumeration value="Success"/>
            <enumeration value="Error"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="CommandProcessingErrMsg" access="readOnly">
        <description>
          Detailed {{param|CommandProcessed}} error description (vendor
          specific).
        </description>
        <syntax>
          <string>
            <size maxLength="1024"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="LastSyncTime" access="readOnly">
        <description>
          The last time that the CPE Proxier synchronized the state of the
          Proxied Device. This parameter MUST be updated when a proxy command
          is executed successfully on the Proxied Device.

          The Unknown Time value, as defined in {{bibref|TR-106}}, indicates
          that the Proxied Device's state has not been synchronized since the
          CPE Proxier was last rebooted.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.VirtualDevice.{i}."
        access="readOnly" numEntriesParameter="VirtualDeviceNumberOfEntries"
        minEntries="0" maxEntries="unbounded" version="2.3">
      <description>
        Each entry in this table represents a distinct Proxied Device that
        utilizes the Virtual CWMP Device Mechanism {{bibref|TR-069|Annex J.2}}
        for proxying devices.
      </description>
      <uniqueKey functional="true">
        <parameter ref="ManufacturerOUI"/>
        <parameter ref="ProductClass"/>
        <parameter ref="SerialNumber"/>
      </uniqueKey>

      <parameter name="ManufacturerOUI" access="readOnly">
        <description>
          Organizationally unique identifier of the associated Proxied Device.
          Represented as a six hexadecimal-digit value using all upper-case
          letters and including any leading zeros. {{pattern}}

          The value MUST be a valid OUI as defined in {{bibref|OUI}}.
        </description>
        <syntax>
          <string>
            <size minLength="6" maxLength="6"/>
            <pattern value="[0-9A-F]{6}"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProductClass" access="readOnly">
        <description>
          Identifier of the class of product of the associated Proxied Device
          for which the serial number applies.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="SerialNumber" access="readOnly">
        <description>
          Serial number of the associated Proxied Device.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Host" access="readOnly">
        <description>
          {{list}} {{reference}} References all the {{object|##.Hosts.Host}}
          table entries, whether active or inactive, that correspond to this
          proxied LAN device. There can be multiple such entries if the Proxied
          Device has more than one network interface.
        </description>
        <syntax>
          <list maxItems="32">
            <size/>
          </list>
          <string>
            <pathRef refType="strong" targetParent="##.Hosts.Host."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProxyProtocol" access="readOnly">
        <description>
          The protocol being used to communicate between the CPE Proxier and
          this Proxied Device. {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in {{bibref|TR-106|3.3}}
          MUST be adhered to.
        </description>
        <syntax>
          <string>
            <enumeration value="Z-Wave">
              <description>see {{bibref|Z-Wave}}</description>
            </enumeration>
            <enumeration value="ZigBee">
              <description>see {{bibref|ZigBee}}</description>
            </enumeration>
            <enumeration value="UPnP-DM">
              <description>see {{bibref|UPnP-DM:1}}</description>
            </enumeration>
            <enumeration value="ETSI-M2M">
              <description>see {{bibref|ETSIM2MFA}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="ProxyProtocolReference" access="readOnly" version="2.6">
        <description>
          {{reference|a protocol object that uses the {{param|ProxyProtocol}}}}
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="DiscoveryProtocol" access="readOnly" version="2.6">
        <description>
          {{list|that represents the discovery protocol(s) for this proxied
          device}}

          {{enum}}

          Vendors can extend the enumerated values with vendor specific
          extensions, in which case the rules outlined in
          {{bibref|TR-106|Section 3.3}} MUST be adhered to.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="Z-Wave">
              <description>see {{bibref|Z-Wave}}</description>
            </enumeration>
            <enumeration value="ZigBee">
              <description>see {{bibref|ZigBee}}</description>
            </enumeration>
            <enumeration value="UPnP">
              <description>see {{bibref|UPnP-DAv1}}</description>
            </enumeration>
            <enumeration value="ETSI-M2M">
              <description>see {{bibref|ETSIM2MFA}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter name="DiscoveryProtocolReference" access="readOnly"
          version="2.6">
        <description>
          {{list}} {{reference|an object discovered using one or more protocols
          listed in {{param|DiscoveryProtocol}}}}

          For objects discovered by the UPnP discovery protocol, the {{param}}
          would contain items that are references to instances of the
          following:

          * {{object|##.UPnP.Discovery.RootDevice}}

          * {{object|##.UPnP.Discovery.Device}}

          * {{object|##.UPnP.Discovery.Service}}

          For objects discovered by the ETSI-M2M discovery protocol, the
          {{param}} would contain items that are references to instances of
          {{object|##.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance}}.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.StandbyPolicy." access="readOnly"
        minEntries="1" maxEntries="1" version="2.7">
      <description>
        Parameters related to CPE behavior when waking up from standby. If this
        object is supported then the CPE MUST support the requirements of
        {{bibref|TR-069|Annex L}}.

        NOTE: "CR", as used in the names and descriptions of the parameters
        defined in this object, refers to the Connection Request concept
        defined in TR-069.
      </description>

      <parameter name="CRUnawarenessMaxDuration" access="readWrite">
        <description>
          When waking up from a non CR-Aware Standby that lasted more than this
          parameter's value (in {{units}}), the CPE MUST issue a WAKEUP Event.

          If the value is -1, the CPE MUST NOT ever issue WAKEUP Events for
          having been non CR-aware.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
            <units value="seconds"/>
          </int>
          <default type="factory" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="MaxMissedPeriodic" access="readWrite">
        <description>
          When waking up from a non fully Timer-Aware Standby that made it miss
          more than this parameter's value Periodic Contacts, the CPE MUST
          issue a WAKEUP Event.

          If the value is -1, the CPE MUST NOT ever issue WAKEUP Events for
          exceeding that limit.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="factory" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="NotifyMissedScheduled" access="readWrite">
        <description>
          When waking up from a non fully Timer-Aware Standby that made it miss
          at least one Scheduled Contact, the CPE MUST issue a WAKEUP Event if
          this parameter is {{true}}.
        </description>
        <syntax>
          <boolean/>
          <default type="factory" value="false"/>
        </syntax>
      </parameter>

      <parameter name="NetworkAwarenessCapable" access="readOnly">
        <description>
          Indicates that the CPE is capable of CR-Aware Standby.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="SelfTimerCapable" access="readOnly">
        <description>
          Indicates that the CPE is capable of Timer-Aware Standby.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="CRAwarenessRequested" access="readWrite">
        <description>
          If {{param|NetworkAwarenessCapable}} and this parameter are both
          {{true}}, the CPE MUST NOT go into a non CR-Aware Standby state.
        </description>
        <syntax>
          <boolean/>
          <default type="factory" value="false"/>
        </syntax>
      </parameter>

      <parameter name="PeriodicAwarenessRequested" access="readWrite">
        <description>
          If {{param|SelfTimerCapable}} and this parameter are both {{true}},
          the CPE MUST NOT go into a standby state that prevents it from
          honoring Periodic Contacts.
        </description>
        <syntax>
          <boolean/>
          <default type="factory" value="false"/>
        </syntax>
      </parameter>

      <parameter name="ScheduledAwarenessRequested" access="readWrite">
        <description>
          If this parameter is true, the CPE MUST NOT go into a standby state
          that prevents it from honoring Scheduled Contacts. This means that,
          whenever the ACS has requested a Scheduled Contact:

          *if {{param|SelfTimerCapable}} is {{true}} and the CPE chooses to go
           into Standby before the Scheduled Contact has been honored, it MUST
           use a Timer-Aware Standby;

          *if {{param|SelfTimerCapable}} is {{false}}, the CPE MUST NOT go into
           Standby before the Scheduled Contact has been honored.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.InformParameter.{i}."
        access="readWrite" numEntriesParameter="InformParameterNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.8">
      <description>
        This table provides the ACS with the ability to control the Parameters
        that are delivered by the Inform RPC.

        Any Parameter (identified by {{param|ParameterName}}) contained in this
        table MUST be included within the ParameterList argument of the Inform
        RPC whenever any Event within the {{param|EventList}} is being
        delivered.

        This table does not include Forced Inform Parameters, and Forced Inform
        Parameters are not allowed to be inserted into this table. Any attempt
        by an ACS to configure this table to contain a Forced Inform Parameter
        MUST result in the failure of the SetParameterValues RPC with error
        code 9007.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="ParameterName"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this {{object}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Alias" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>

      <parameter name="ParameterName" access="readWrite">
        <description>
          A pattern that describes the Parameter(s) to be included in the
          Inform’s ParameterList argument. Specifically, patterns with
          wildcards (an "*" character) in place of Instance Identifiers are
          allowed; any attempt to set the value otherwise MUST be rejected by
          the CPE.

          If the pattern does not match any existing Parameters at the time
          that the CPE is creating the Inform RPC, then this
          {{object|#.InformParameter}} instance is not included in the Inform’s
          ParameterList argument.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="EventList" access="readWrite">
        <description>
          Each entry in this list represents an Event for which this Parameter
          MUST be included within the ParameterList argument of the Inform RPC.

          All Inform Events (see {{bibref|TR-069|Section 3.7.1.5}}), except for
          "4 VALUE CHANGE", are allowed as entries in this list. "4 VALUE
          CHANGE" is not allowed as that would violate requirements contained
          in {{bibref|TR-069|Section A.3.3.1}}.

          {{empty}} means all events except "4 VALUE CHANGE".
        </description>
        <syntax>
          <list/>
          <string/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ManagementServer.HeartbeatPolicy." access="readOnly"
        minEntries="1" maxEntries="1" version="2.12">
      <description>
        Parameters related to CPE behavior in order to issue a Heartbeat event
        to the ACS using the Inform method call.

        If this object is supported then the CPE MUST support the requirements
        of {{bibref|TR-069|Annex O}}.
      </description>

      <parameter name="Enable" access="readWrite">
        <description>
          When {{true}}, Heartbeat events are enabled to be sent to the ACS
          based on the values of the {{param|ReportingInterval}} and
          {{param|InitiationTime}} parameters.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="ReportingInterval" access="readWrite">
        <description>
          The duration in {{units}} of the interval for which the CPE MUST
          attempt to connect with the ACS and call the Inform method if
          {{param|Enable}} is {{true}}.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="30"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="InitiationTime" access="readWrite">
        <description>
          An absolute time reference in UTC to determine when the CPE will
          initiate the Heartbeat event Inform method calls. Each Inform call
          MUST occur at this reference time plus or minus an integer multiple
          of the {{param|ReportingInterval}}.

          {{param}} is used only to set the ''phase'' of the Heartbeat event
          Informs. The actual value of {{param}} can be arbitrarily far into
          the past or future.

          For example, if {{param|ReportingInterval}} is 60 (one minute) and if
          {{param}} is set to UTC midnight on some day (in the past, present,
          or future) then Heartbeat Informs will occur every minute at the next
          UTC midnight. These MUST begin on the very next midnight, even if
          {{param}} refers to a day in the future.

          The Unknown Time value defined in {{bibref|TR-106|section 3.2}}
          indicates that no particular time reference is specified. The CPE
          MUST locally choose a random time reference.

          If absolute time is not available to the CPE, its Heartbeat Inform
          behavior MUST be the same as if the {{param}} parameter was set to
          the Unknown Time value.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.BulkData." access="readOnly" minEntries="1"
        maxEntries="1">

      <parameter base="Protocols" access="readOnly">
        <syntax>
          <list/>
          <string>
            <enumeration value="Streaming">
              <description>
                IPDR Streaming Protocol {{bibref|IPDR-SP}}
              </description>
            </enumeration>
            <enumeration value="File">
              <description>
                IPDR File Transfer Protocol {{bibref|IPDR-FTP}}
              </description>
            </enumeration>
            <enumeration value="HTTP"/>
            <enumeration value="MQTT"/>
          </string>
        </syntax>
      </parameter>

      <parameter base="EncodingTypes" access="readOnly">
        <syntax>
          <list/>
          <string>
            <enumeration value="XML">
              <description>
                Used with the IPDR Streaming and File Protocols.
                {{bibref|IPDR-XML}}
              </description>
            </enumeration>
            <enumeration value="XDR">
              <description>
                Used with the IPDR Streaming and File Protocols.
                {{bibref|IPDR-XDR}}
              </description>
            </enumeration>
            <enumeration value="CSV"/>
            <enumeration value="JSON"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object base="Device.BulkData.Profile.{i}." access="readWrite"
        numEntriesParameter="ProfileNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded">
      <parameter name="StreamingHost" access="readWrite">
        <description>
          This is the host name or IP Address of the IPDR Collector to be used
          by the CPE to stream bulk data records if this collection profile is
          configured for the IPDR Streaming Protocol {{bibref|IPDR-SP}} (the
          {{param|Protocol}} parameter has a value of
          {{enum|Streaming|#.Protocols}}).
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="StreamingPort" access="readWrite">
        <description>
          This is the port number of the IPDR Collector to be used by the CPE
          to stream bulk data records if this collection profile is configured
          for the IPDR Streaming Protocol {{bibref|IPDR-SP}} (the
          {{param|Protocol}} parameter has a value of
          {{enum|Streaming|#.Protocols}}).
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
          <default type="object" value="4737"/>
        </syntax>
      </parameter>

      <parameter name="StreamingSessionID" access="readWrite">
        <description>
          This is the unique identification of an IPDR Session to be used when
          this collection profile is configured for the IPDR Streaming Protocol
          {{bibref|IPDR-SP}} (the {{param|Protocol}} parameter has a value of
          {{enum|Streaming|#.Protocols}}).

          A Controller MUST NOT configure multiple IPDR Streaming Protocol
          collection profiles with the same {{param}}. Doing so MUST cause the
          CPE to fail the SetParameterValues.

          Within the IPDR Streaming Protocol specification the Session ID has a
          type of a single 'char', but we are restricting the range even
          further (ASCII values of '0' - '9' and 'A' - 'Z'.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="48" maxInclusive="57"/>
            <range minInclusive="65" maxInclusive="90"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="FileTransferURL" access="readWrite">
        <description>
          This is the {{datatype}} within the CPE that is used by an IPDR
          Collector to retrieve the IPDRDocs when this collection profile is
          configured for the IPDR File Transfer Protocol {{bibref|IPDR-FTP}}
          (the {{param|Protocol}} parameter has a value of
          {{enum|File|#.Protocols}}).
        </description>
        <syntax>
          <dataType ref="URL"/>
        </syntax>
      </parameter>

      <parameter name="FileTransferUsername" access="readWrite">
        <description>
          Username used for authentication of the {{param|FileTransferURL}}.

          This is the {{param}} that the IPDR Collector uses to access the CPE
          when this collection profile is configured for the IPDR File Transfer
          Protocol {{bibref|IPDR-FTP}} (the {{param|Protocol}} parameter has a
          value of {{enum|File|#.Protocols}}).
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="FileTransferPassword" access="readWrite">
        <description>
          Password used for authentication of the {{param|FileTransferURL}}.

          This is the {{param}} that the IPDR Collector uses to access the CPE
          when this collection profile is configured for the IPDR File Transfer
          Protocol {{bibref|IPDR-FTP}} (the {{param|Protocol}} parameter has a
          value of {{enum|File|#.Protocols}}).
        </description>
        <syntax hidden="true">
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ControlFileFormat" access="readWrite">
        <description>
          If this collection profile is configured for the IPDR File Transfer
          Protocol {{bibref|IPDR-FTP}} (the {{param|Protocol}} parameter has a
          value of {{enum|File|#.Protocols}}) then the control file names will
          be of the following format:

          :
            &lt;ControlFilePrefix&gt;_&lt;ControlFilePolicy&gt;.&lt;ControlFileSuffix&gt;

          Where the following rules apply:

          * ControlFilePrefix MUST NOT contain an underscore '_' or any other
            character not suitable for a file name.

          * ControlFilePolicy MUST contain one or more 'N' characters, where
            the number of 'N' characters denotes the number of digits in the
            sequence number, including leading zeros as necessary to match the
            number of 'N' characters.

          * ControlFileSuffix is a file extension.

          For example, BulkData_NNNN.log where "BulkData" would be the prefix,
          "NNNN" would be the policy, and "log" would be the suffix. Files
          adhering to this file format would look like: BulkData_0000.log,
          BulkData_0001.log, etc.
        </description>
        <syntax>
          <string>
            <size maxLength="128"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object base="Device.SoftwareModules.ExecEnv.{i}." access="readOnly"
        minEntries="0" maxEntries="unbounded">
      <parameter base="Enable" access="readWrite">
        <description action="append">
          If a ChangeDUState is attempted on a {{object|#.DeploymentUnit}} that
          is to be applied against a disabled {{object}}, that ChangeDUState
          operation fails and the associated DUStateChangeComplete RPC will
          contain a FaultStruct for that operation.

          If a SetParameterValues is attempted against the
          {{param|#.ExecutionUnit.{i}.RequestedState}} for an
          {{object|#.ExecutionUnit}} that is associated with a disabled
          {{object}} a CWMP Fault will be issued in response.

          Disabling an Execution Environment could place the device in a
          non-manageable state. For example, if the operating system itself was
          modeled as an {{object}} and the ACS disabled it, the CWMP management
          agent might be terminated leaving the device unmanageable.
        </description>
      </parameter>

      <parameter name="Reset" access="readWrite"
          dmr:previousParameter="Status">
        <description>
          Setting this parameter to {{true}} causes this {{object}} to revert
          back to the state it was in when the device last issued a "0
          BOOTSTRAP" Inform event. The following requirements dictate what MUST
          happen for the reset to be complete:

          # All Deployment Units that were installed after the last "0
            BOOTSTRAP" Inform event MUST be removed

          # All persistent storage, configuration files, and log files that
            were associated with the removed Deployment Units MUST be removed

          # Any Deployment Unit that is still installed against the Execution
            Environment MUST be restored to the version present when the last
            "0 BOOTSTRAP" Inform event was issued

          # Any Deployment Unit that was present when the last "0 BOOTSTRAP"
            Inform event was issued, but was subsequently uninstalled and is
            now not present, MUST be installed with the version that was
            present when the last "0 BOOTSTRAP" Inform event was issued

          # The Execution Environment MUST be restored to the version and
            configuration present when the last "0 BOOTSTRAP" Inform event was
            issued

          # The Execution Environment MUST be restarted after all other
            restoration requirements have been met
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="RequestedRunLevel" access="readWrite"
          dmr:previousParameter="InitialRunLevel">
        <description>
          Provides a mechanism to remotely manipulate the run level of this
          {{object}}, meaning that altering this parameter's value will change
          the value of the {{param|CurrentRunLevel}}.

          Run levels dictate which Execution Units will be started. Execution
          Units will be started if {{param|CurrentRunLevel}} is greater than or
          equal to {{param|#.ExecutionUnit.{i}.RunLevel}} and
          {{param|#.ExecutionUnit.{i}.AutoStart}} is {{true}}.

          Setting this value when {{param|CurrentRunLevel}} is -1 has no impact
          to the Run Level of this {{object}}.
        </description>
        <syntax command="true">
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
        </syntax>
      </parameter>

      <parameter base="CurrentRunLevel" access="readOnly">
        <description action="replace">
          The run level that this {{object}} is currently operating in. This
          value is altered by changing the {{param|RequestedRunLevel}}
          parameter.

          Upon startup (whether that is caused by a CPE Boot or the Execution
          Environment starting) {{param}} will be equal to
          {{param|InitialRunLevel}}, unless Run Levels are not supported by
          this {{object}} in which case {{param}} will be -1.

          Run levels dictate which Execution Units will be started. Execution
          Units will be started if {{param}} is greater than or equal to
          {{param|#.ExecutionUnit.{i}.RunLevel}} and
          {{param|#.ExecutionUnit.{i}.AutoStart}} is {{true}}.

          If {{param}} is -1 then Run Levels are not supported by this
          {{object}} and setting {{param|InitialRunLevel}} or
          {{param|RequestedRunLevel}} will not impact the Run Level of this
          {{object}}.
        </description>
      </parameter>
    </object>

    <object base="Device.SoftwareModules.DeploymentUnit.{i}."
        access="readOnly" minEntries="0" maxEntries="unbounded">
      <parameter base="URL" access="readOnly">
        <description action="replace">
          Contains the {{datatype}} used by the most recent ChangeDUState RPC
          to either Install or Update this {{object}}.
        </description>
      </parameter>
    </object>

    <object base="Device.SoftwareModules.ExecutionUnit.{i}." access="readOnly"
        minEntries="0" maxEntries="unbounded">
      <parameter name="RequestedState" access="readWrite"
          dmr:previousParameter="Status">
        <description>
          Indicates the state transition that the ACS is requesting for this
          {{object}}. {{enum}}

          If this {{object}} is associated with an Execution Environment that
          is disabled and an attempt is made to alter this value, then a CWMP
          Fault MUST be generated.
        </description>
        <syntax command="true">
          <string>
            <enumeration value="Idle">
              <description>
                If this {{object}} is currently in {{enum|Starting|Status}} or
                {{enum|Active|Status}} the CPE will attempt to Stop the
                Execution Unit; otherwise this requested state is ignored.
              </description>
            </enumeration>
            <enumeration value="Active">
              <description>
                If this {{object}} is currently in {{enum|Idle|Status}} the CPE
                will attempt to Start the Execution Unit. If this {{object}} is
                in {{enum|Stopping|Status}} the request is rejected and a fault
                raised. Otherwise this requested state is ignored.
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>

      <parameter base="References" access="readOnly">
        <description action="append">
          See {{bibref|TR-069|Appendix VI.3.2}} for more description and some
          examples.

          NOTE: All other objects and parameters (i.e. not multi-instanced
          objects) that this {{object}} has caused to come into existence can
          be discovered via the {{object|##.DeviceInfo.SupportedDataModel}}
          table.
        </description>
      </parameter>

      <parameter name="SupportedDataModelList" access="readOnly"
          dmr:previousParameter="VendorConfigList">
        <description>
          Represents the CWMP-DT schema instances that have been introduced to
          this device because of the existence of this {{object}}.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong"
                targetParent="##.DeviceInfo.SupportedDataModel."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object base="Device.SoftwareModules.ExecutionUnit.{i}.Extensions."
        access="readOnly" minEntries="1" maxEntries="1">
      <description action="append">
        It is also possible for the Execution Unit to expose status and
        configuration parameters within Service objects or as embedded objects
        and parameters directly within the root data model, in which case the
        combination of {{param|#.References}} and
        {{param|#.SupportedDataModelList}} will be used to determine their
        locations.

        See {{bibref|TR-069|Appendix VI.3.2}} for more description and some
        examples.
      </description>
    </object>

    <object name="Device.DSL.Diagnostics.ADSLLineTest." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object is to provide diagnostic information for a CPE with an
        ADSL2 or ADSL2+ modem WAN interface, but MAY also be used for ADSL.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="ADSLLineDiagnosticsInput"/>
      <component ref="ADSLLineDiagnosticsOutput"/>
    </object>

    <object name="Device.PacketCaptureDiagnostics." access="readOnly"
        minEntries="1" maxEntries="1" version="2.13">
      <description>
        The PacketCaptureDiagnostics object. This diagnostic is used to record
        packet capture data on a valid (layer 2 or above) interface in libpcap
        or pcapng format.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>

      <component ref="PacketCaptureDiagnosticsInput"/>
      <component ref="PacketCaptureDiagnosticsOutput"/>
      <component ref="PacketCaptureDiagnosticsOutputNumberOfEntries"/>
    </object>

    <object name="Device.DSL.Diagnostics.SELTUER." access="readOnly"
        minEntries="1" maxEntries="1" version="2.13">
      <description>
        This object contains DSL Single Ended Line Test - Physical Medium
        Dependent (SELT-PMD) Uncalibrated Echo Response (UER) diagnostics
        parameters.

        This object is for the CPE, aka the Transmission Unit - Remote end
        (TU-R).

        Reference: ITU-T Recommendation {{bibref|G.996.2|Clause A.2, SELT-PMD
        management entity}}.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="SELTUERDiagnosticsInput"/>
      <component ref="SELTUERDiagnosticsOutput"/>
    </object>

    <object name="Device.DSL.Diagnostics.SELTQLN." access="readOnly"
        minEntries="1" maxEntries="1" version="2.13">
      <description>
        This object contains DSL Single Ended Line Test - Physical Medium
        Dependent (SELT-PMD) Quiet Line Noise (QLN) diagnostics parameters.

        This object is for the CPE, aka the Transmission Unit - Remote end
        (TU-R).

        Reference: ITU-T Recommendation {{bibref|G.996.2|Clause A.2, SELT-PMD
        management entity}}.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="SELTQLNDiagnosticsInput"/>
      <component ref="SELTQLNDiagnosticsOutput"/>
    </object>

    <object name="Device.DSL.Diagnostics.SELTP." access="readOnly"
        minEntries="1" maxEntries="1" version="2.13">
      <description>
        This object contains DSL Single-Ended Line Test - Processed (SELT-P)
        diagnostics parameters.

        This object is for the CPE, aka the Transmission Unit - Remote end
        (TU-R).

        Reference: ITU-T Recommendation {{bibref|G.996.2}}.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="SELTPDiagnosticsInput"/>
      <component ref="SELTPDiagnosticsOutput"/>
    </object>

    <object name="Device.ATM.Diagnostics.F5Loopback." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object provides access to an ATM-layer F5 OAM loopback test.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="ATMF5LoopbackDiagnosticsInput"/>
      <component ref="ATMF5LoopbackDiagnosticsOutput"/>
    </object>

    <object name="Device.HPNA.Diagnostics.PHYThroughput." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0">
      <description>
        HPNA PHY throughput diagnostics configuration and results.

        When diagnostics are requested, all HPNA nodes for which the
        {{param|##.Interface.{i}.AssociatedDevice.{i}.PHYDiagnosticsEnable}}
        parameter is set enter PHY diagnostics mode.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_FailToEnableCert" access="readOnly"/>
            <enumeration value="Error_CertCmdTimeout" access="readOnly"/>
            <enumeration value="Error_UnknownErr" access="readOnly"/>
            <enumeration value="Error_UnsupportedOpcode" access="readOnly"/>
            <enumeration value="Error_InvalidParam" access="readOnly"/>
            <enumeration value="Error_UnsupportedCmdSegment" access="readOnly"/>
            <enumeration value="Error_UnsupportedDataGen" access="readOnly"/>
            <enumeration value="Error_InvalidSequence" access="readOnly"/>
            <enumeration value="Error_InvalidFrame" access="readOnly"/>
            <enumeration value="Eror_InvalidOpcode" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="HPNAPHYThroughputDiagnosticsInput"/>
      <component ref="HPNAPHYThroughputDiagnosticsOutputNumberOfEntries"/>
      <component ref="HPNAPHYThroughputDiagnosticsOutput"/>
    </object>

    <object name="Device.HPNA.Diagnostics.PerformanceMonitoring."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        HPNA performance monitoring configuration and results.

        Performance monitoring results are sampled from all nodes in the HPNA
        network. All packet related counters are sampled synchronized at all
        nodes in the HPNA network in order to derive packet loss calculations
        in the HPNA network.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_SampleIntervalTooSmall"
                access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="HPNAPerformanceMonitoringDiagnosticsInput"/>
      <component ref="HPNAPerformanceMonitoringDiagnosticsOutput"/>
      <component
          ref="HPNAPerformanceMonitoringDiagnosticsOutputNumberOfEntries"/>
    </object>

    <object name="Device.Ghn.Diagnostics.PHYThroughput." access="readOnly"
        minEntries="1" maxEntries="1" version="2.8">
      <description>
        G.hn PHY throughput diagnostics configuration and results.

        When diagnostics are requested, all G.hn nodes for which the
        {{param|##.Interface.{i}.PHYThroughputDiagnosticsEnable}} parameter is
        set enter PHY diagnostics mode.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
          </dataType>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Ghn.Diagnostics.PerformanceMonitoring."
        access="readOnly" minEntries="1" maxEntries="1" version="2.8">
      <description>
        G.hn Performance Monitoring diagnostics configuration and results.

        When diagnostics are requested, all G.hn nodes for which the
        {{param|##.Interface.{i}.PerformanceMonitoringDiagnosticsEnable}}
        parameter is set enter PHY diagnostics mode.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="GhnPerformanceMonitoringDiagnosticsInput"/>
      <component ref="GhnPerformanceMonitoringDiagnosticsOutput"/>
      <component
          ref="GhnPerformanceMonitoringDiagnosticsOutputNumberOfEntries"/>
    </object>

    <object name="Device.UPA.Diagnostics.InterfaceMeasurement."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object provides access to either a Signal-to-Noise-Ratio (SNR)
        Port Measurement test or a Channel Frequency Response (CFR) Port
        Measurement test. The {{param|Type}} parameter is used to select which
        type of test to perform.

        CFR and SNR measurements are done between a two UPA devices (a local
        interface and a remote device belonging to the same network).
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_InvalidPort" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="UPAInterfaceMeasurementDiagnosticsInput"/>
      <component ref="UPAInterfaceMeasurementDiagnosticsOutput"/>
    </object>

    <object name="Device.Users.CheckCredentialsDiagnostics." access="readOnly"
        minEntries="1" maxEntries="1"
        dmr:previousObject="Device.Users.User.{i}." version="2.15">
      <description>
        This object is to provide diagnostic information to check whether
        {{param|Username}} and {{param|Password}} are valid for allowing access
        to the user interface on the device. If not valid, then an indication
        of why they are not valid is output.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Credentials_Good" access="readOnly"
                optional="true"/>
            <enumeration value="Credentials_Bad_Username_Not_Supported"
                access="readOnly" optional="true"/>
            <enumeration value="Credentials_Bad_Password_Incorrect"
                access="readOnly" optional="true"/>
            <enumeration value="Credentials_Missing" access="readOnly"
                optional="true"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="CheckCredentialsInput"/>
    </object>

    <object name="Device.IP.Diagnostics.IPPing." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0"
        dmr:previousObject="Device.IP.Diagnostics.">
      <description>
        This object provides access to an IP-layer ping test.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_NoRouteToHost" access="readOnly">
              <description>
                The CPE can not reach the requested Ping host address
              </description>
            </enumeration>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPPingDiagnosticsInput"/>
      <component ref="IPPingDiagnosticsOutput"/>
    </object>

    <object name="Device.IP.Diagnostics.TraceRoute." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0"
        dmr:previousObject="Device.IP.Diagnostics.IPPing.">
      <description>
        This object defines access to an IP-layer trace-route test for the
        specified IP interface.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_NoRouteToHost" access="readOnly">
              <description>
                The CPE can not reach the requested TraceRoute host address
              </description>
            </enumeration>
            <enumeration value="Error_MaxHopCountExceeded" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPTraceRouteDiagnosticsInput"/>
      <component ref="IPTraceRouteDiagnosticsOutputNumberOfEntries"/>
      <component ref="IPTraceRouteDiagnosticsOutput"/>
    </object>

    <object name="Device.IP.Diagnostics.DownloadDiagnostics."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0"
        dmr:previousObject="Device.IP.Diagnostics.TraceRoute.">
      <description>
        This object defines the diagnostics configuration for a HTTP and FTP
        DownloadDiagnostics Test.

        Files received in the DownloadDiagnostics do not require file storage
        on the CPE device.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Completed" access="readOnly"
                status="obsoleted">
              <description>
                {{deprecated|2.13|because it's a typo for {{enum|Complete}}}}

                {{obsoleted|2.16}}
              </description>
            </enumeration>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_NoRouteToHost" access="readOnly"/>
            <enumeration value="Error_InitConnectionFailed" access="readOnly"/>
            <enumeration value="Error_NoResponse" access="readOnly"/>
            <enumeration value="Error_TransferFailed" access="readOnly"/>
            <enumeration value="Error_PasswordRequestFailed" access="readOnly"/>
            <enumeration value="Error_LoginFailed" access="readOnly"/>
            <enumeration value="Error_NoTransferMode" access="readOnly"/>
            <enumeration value="Error_NoPASV" access="readOnly"/>
            <enumeration value="Error_IncorrectSize" access="readOnly"/>
            <enumeration value="Error_Timeout" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPDownloadDiagnosticsInput"/>
      <component ref="IPDownloadDiagnosticsCapabilities"
          dmr:previousParameter="DownloadURL"/>
      <component ref="IPDownloadDiagnosticsOutput"
          dmr:previousParameter="NumberOfConnections"/>
      <component ref="IPDownloadDiagnosticsInput2"
          dmr:previousParameter="TCPOpenResponseTime"/>
      <component ref="IPDownloadDiagnosticsOutputNumberOfEntries"/>
    </object>

    <object name="Device.IP.Diagnostics.UploadDiagnostics." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0"
        dmr:previousObject="Device.IP.Diagnostics.DownloadDiagnostics.">
      <description>
        This object defines the diagnostics configuration for a HTTP or FTP
        UploadDiagnostics test.

        Files sent by the UploadDiagnostics do not require file storage on the
        CPE device, and MAY be an arbitrary stream of bytes.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Completed" access="readOnly"
                status="obsoleted">
              <description>
                {{deprecated|2.13|because it's a typo for {{enum|Complete}}}}

                {{obsoleted|2.16}}
              </description>
            </enumeration>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_NoRouteToHost" access="readOnly"/>
            <enumeration value="Error_InitConnectionFailed" access="readOnly"/>
            <enumeration value="Error_NoResponse" access="readOnly"/>
            <enumeration value="Error_PasswordRequestFailed" access="readOnly"/>
            <enumeration value="Error_LoginFailed" access="readOnly"/>
            <enumeration value="Error_NoTransferMode" access="readOnly"/>
            <enumeration value="Error_NoPASV" access="readOnly"/>
            <enumeration value="Error_NoCWD" access="readOnly"/>
            <enumeration value="Error_NoSTOR" access="readOnly"/>
            <enumeration value="Error_NoTransferComplete" access="readOnly"/>
            <enumeration value="Error_Timeout" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPUploadDiagnosticsInput"/>
      <component ref="IPUploadDiagnosticsCapabilities"
          dmr:previousParameter="UploadURL"/>
      <component ref="IPUploadDiagnosticsOutput"
          dmr:previousParameter="NumberOfConnections"/>
      <component ref="IPUploadDiagnosticsInput2"
          dmr:previousParameter="TCPOpenResponseTime"/>
      <component ref="IPUploadDiagnosticsOutputNumberOfEntries"/>
    </object>

    <object name="Device.IP.Diagnostics.UDPEchoDiagnostics." access="readOnly"
        minEntries="1" maxEntries="1" version="2.9">
      <description>
        This object defines the diagnostics configuration for a UDP Echo test
        {{bibref|TR-143|Appendix A.1}} defined in {{bibref|RFC862}} or a UDP
        Echo Plus test defined in {{bibref|TR-143|Appendix A.1}}.
      </description>

      <parameter name="DiagnosticsState" access="readWrite"
          activeNotify="canDeny">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Completed" access="readOnly"
                status="obsoleted">
              <description>
                {{deprecated|2.13|because it's a typo for {{enum|Complete}}}}

                {{obsoleted|2.16}}
              </description>
            </enumeration>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPUDPEchoDiagnosticsInput"/>
      <component ref="IPUDPEchoDiagnosticsOutput"/>
      <component ref="IPUDPEchoDiagnosticsInput2"
          dmr:previousParameter="MaximumResponseTime"/>
      <component ref="IPUDPEchoDiagnosticsCapabilities"
          dmr:previousParameter="EnableIndividualPacketResults"/>
      <component ref="IPUDPEchoDiagnosticsOutputNumberOfEntries"/>
   </object>

    <object name="Device.IP.Diagnostics.IPLayerCapacityMetrics."
        access="readOnly" minEntries="1" maxEntries="1"
        dmr:previousObject="Device.IP.Diagnostics.UDPEchoDiagnostics."
        version="2.14">
      <description>
        This object defines the diagnostics configuration for a IP Layer
        Capacity test. IP Layer Capacity measurement is specified in
        {{bibref|TR-471}}.

        Files received in the IP Layer Capacity test do not require file
        storage on the CPE device.
      </description>

      <parameter name="DiagnosticsState" access="readWrite">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_NoRouteToHost" access="readOnly"/>
            <enumeration value="Error_InitConnectionFailed" access="readOnly"/>
            <enumeration value="Error_NoResponse" access="readOnly"/>
            <enumeration value="Error_PasswordRequestFailed" access="readOnly"/>
            <enumeration value="Error_LoginFailed" access="readOnly"/>
            <enumeration value="Error_RejectedByRemote" access="readOnly"/>
            <enumeration value="Error_IncorrectSize" access="readOnly"/>
            <enumeration value="Error_Timeout" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPLayerCapacityCapabilities"/>
      <component ref="IPLayerCapacityInput"
          dmr:previousParameter="SupportedTestProtocols"/>
      <component ref="IPLayerCapacityOutputNumberOfEntries"/>
      <component ref="IPLayerCapacityOutput"
          dmr:previousParameter="HSpeedThresh"/>
    </object>

    <object name="Device.IP.Diagnostics.ServerSelectionDiagnostics."
        access="readOnly" minEntries="1" maxEntries="1" version="2.9">
      <description>
        This object provides access to a diagnostics test that performs either
        an ICMP Ping or UDP Echo ping against multiple hosts determining which
        one has the smallest average response time. There MUST be a ping
        response to the transmitted ping, or timeout, before the next ping is
        sent out.
      </description>

      <parameter name="DiagnosticsState" access="readWrite"
          activeNotify="canDeny">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Completed" access="readOnly"
                status="obsoleted">
              <description>
                {{deprecated|2.13|because it's a typo for {{enum|Complete}}}}

                {{obsoleted|2.16}}
              </description>
            </enumeration>
            <enumeration value="Error_CannotResolveHostName" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="IPServerSelectionDiagnosticsInput"/>
      <component ref="IPServerSelectionDiagnosticsOutput"/>
    </object>

    <object name="Device.DNS.Diagnostics.NSLookupDiagnostics."
        access="readOnly" minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object defines access to an IP-layer NS Lookup test for the
        specified IP interface.

        When initiated, the NS Lookup test will contact {{param|DNSServer}} and
        look up {{param|HostName}} {{param|NumberOfRepetitions}} times.

        There will be a {{object|Result}} instance for each time the device
        performs a DNS lookup, which is determined by the value of
        {{param|NumberOfRepetitions}}.

        Any previous {{object|Result}} instances are removed when a new test is
        initiated.
      </description>

      <parameter name="DiagnosticsState" access="readWrite"
          activeNotify="canDeny">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error_DNSServerNotResolved" access="readOnly">
              <description>Unable to resolve DNSServer Name</description>
            </enumeration>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="DNSLookupDiagnosticsInput"/>
      <component ref="DNSLookupDiagnosticsOutputNumberOfEntries"/>
      <component ref="DNSLookupDiagnosticsOutput"/>
    </object>

    <object name="Device.SelfTestDiagnostics." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0"
        dmr:previousObject="Device.DLNA.">
      <description>
        This diagnostics test is vendor-specific and MAY include testing
        hardware, software, and/or firmware.
      </description>

      <parameter name="DiagnosticsState" access="readWrite"
          activeNotify="canDeny">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error_Internal" access="readOnly"/>
            <enumeration value="Error_Other" access="readOnly"/>
          </dataType>
        </syntax>
      </parameter>
      <component ref="SelfTestDiagnosticsOutput"/>
    </object>
    <!-- TR-069 command parameters -->

    <object base="Device.DHCPv6.Client.{i}." access="readWrite" minEntries="1"
        maxEntries="unbounded">

      <parameter name="Renew" access="readWrite"
          dmr:previousParameter="RapidCommit" version="2.2">
        <description>
          When set to {{true}}, the {{object}} will renew its DHCPv6-supplied
          information (i.e. the CPE will do a renew or information request as
          needed, updating both stateful and stateless parameter values
          discovered by this Client instance).
        </description>
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.FAP.GPS." access="readOnly" minEntries="1"
        maxEntries="1">

      <parameter name="GPSReset" access="readWrite"
          dmr:previousParameter="NumberOfSatellites" version="2.4">
        <description>
          Setting this to {{true}} will cause a reset on the GPS Hardware.
          Setting this to {{false}} has no effect.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}."
        access="readOnly" minEntries="0" maxEntries="unbounded">

      <parameter name="Reset" access="readWrite"
          dmr:previousParameter="Status">
        <description>
          When set to {{true}}, resets the temperature sensor.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.UserInterface." access="readOnly" minEntries="1"
        maxEntries="1">

      <parameter name="PasswordReset" access="readWrite"
          dmr:previousParameter="PasswordUserSelectable">
        <description>
          Present only if the CPE provides a password-protected LAN-side user
          interface and supports LAN-side Auto-Configuration.

          When set to true, resets {{param|#.LANConfigSecurity.ConfigPassword}}
          to its factory value.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>

      <parameter base="AutoUpdateServer" access="readWrite">
        <description action="append">
          This MUST NOT be used by the CPE if the
          {{param|#.ManagementServer.UpgradesManaged}} parameter is {{true}}.
        </description>
      </parameter>

      <parameter base="UserUpdateServer" access="readWrite">
        <description action="append">
          This MUST NOT be used by the CPE if the
          {{param|#.ManagementServer.UpgradesManaged}} parameter is {{true}}.
        </description>
      </parameter>
    </object>

    <object base="Device.USB.USBHosts.Host.{i}." access="readOnly"
        minEntries="0" maxEntries="unbounded">

      <parameter name="Reset" access="readWrite" dmr:previousParameter="Type">
        <description>
          When set to {{true}}, reset the Host Controller and apply the reset
          signaling (see {{bibref|USB2.0|Chapter 7.1.7.5}}) to all of the Host
          Controller Hub downstream ports.

          The value is not saved in the device's state and setting it to
          {{false}} has no effect.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.PPP.Interface.{i}." access="readWrite" minEntries="0"
        maxEntries="unbounded">

      <parameter name="Reset" access="readWrite"
          dmr:previousParameter="LowerLayers">
        <description>
          When set to {{true}}, the device MUST tear down the existing PPP
          connection represented by this object and establish a new one.

          The device MUST initiate the reset after completion of the current
          CWMP session. The device MAY delay resetting the connection in order
          to avoid interruption of a user service such as an ongoing voice
          call.

          Reset on a disabled interface is a no-op (not an error).
        </description>
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.IP.Interface.{i}." access="readWrite" minEntries="0"
        maxEntries="unbounded">

      <parameter name="Reset" access="readWrite"
          dmr:previousParameter="Router">
        <description>
          When set to {{true}}, the device MUST tear down the existing IP
          connection represented by this object and establish a new one.

          The device MUST initiate the reset after completion of the current
          CWMP session. The device MAY delay resetting the connection in order
          to avoid interruption of a user service such as an ongoing voice
          call.

          Reset on a disabled interface is a no-op (not an error).
        </description>
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.DHCPv4.Client.{i}." access="readWrite" minEntries="1"
        maxEntries="unbounded">

      <parameter name="Renew" access="readWrite"
          dmr:previousParameter="DHCPStatus">
        <description>
          When set to {{true}}, the DHCP client will renew its DHCP lease.
        </description>
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.IEEE8021x.Supplicant.{i}." access="readWrite"
        minEntries="1" maxEntries="unbounded">

      <parameter name="Reset" access="readWrite"
          dmr:previousParameter="AuthenticationSuccessPolicy">
        <description>
          When set to {{true}}, the device MUST reset the session by performing
          an initial authentication attempt as defined in
          {{bibref|802.1x-2004|9.6.1.3}}, Initialize Port by sending out the
          EAP start message.

          The device MUST initiate the reset after completion of the current
          CWMP session. The device MAY delay resetting the resource in order to
          avoid interruption of a user service such as an ongoing voice call.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="Disconnect" access="readWrite">
        <description>
          When set to {{true}}, the device MUST disconnect (forced
          unauthentication) the resource.

          The device MUST initiate the disconnect after completion of the
          current CWMP session. The device MAY delay re-authentication of the
          resource in order to avoid interruption of a user service such as an
          ongoing voice call.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

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

      <parameter name="Reset" access="readWrite" dmr:previousParameter="Name">
        <description>
          When set to {{true}}, resets the SmartCard Reader and the associated
          SmartCard.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.PeriodicStatistics.SampleSet.{i}." access="readWrite"
        minEntries="0" maxEntries="unbounded">

      <parameter name="Status" access="readOnly">
        <description>
          Indicates availability of Sample statistics. {{enum}}

          The {{enum|Trigger}} value is only used for triggering the ACS to
          fetch the collected data and can only be used when
          {{param|FetchSamples}} is in the range [1:{{param|ReportSamples}}].

          The transition from {{enum|Enabled}} to {{enum|Trigger}} to
          {{enum|Enabled}} MUST be instantaneous and so will result in only a
          single value change for notification purposes.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled">
              <description>Collection is disabled.</description>
            </enumeration>
            <enumeration value="Enabled">
              <description>Collection is enabled.</description>
            </enumeration>
            <enumeration value="Trigger">
              <description>
                Collection is enabled and the ACS SHOULD now fetch the
                collected data.
              </description>
            </enumeration>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <parameter name="TimeReference" access="readWrite">
        <description>
          An absolute time reference in UTC to determine when sample intervals
          will complete. Each sample interval MUST complete at this reference
          time plus or minus an integer multiple of {{param|SampleInterval}}.

          {{param}} is used only to set the "phase" of the sample and fetch
          intervals. The actual value of {{param}} can be arbitrarily far into
          the past or future.

          This time reference also determines when the {{param|Status}}
          {{enum|Enabled|Status}} to {{enum|Trigger|Status}} to
          {{enum|Enabled|Status}} transitions that are controlled by
          {{param|FetchSamples}} will occur. If collection of periodic
          statistics is enabled and {{param|FetchSamples}} is in the range
          [1:{{param|ReportSamples}}] then each such {{param|Status}}
          transition MUST occur at this reference time plus or minus an integer
          multiple of {{param|FetchSamples}} * {{param|SampleInterval}} (the
          fetch interval).

          If {{param}} is changed while collection of periodic statistics is
          enabled, any stored samples are discarded, and the first sample
          interval begins immediately.

          The Unknown Time value defined in {{bibref|TR-106}} indicates that no
          particular time reference is specified. That is, the CPE MAY locally
          choose the time reference, and is required only to adhere to the
          specified sample and fetch intervals.

          If absolute time is not available to the CPE, its sample and fetch
          interval behavior MUST be the same as if the {{param}} parameter was
          set to the Unknown Time value.

          For example, if {{param|SampleInterval}} is 3600 (an hour) and if
          {{param}} is set to UTC midnight on some day (in the past, present,
          or future) then sample intervals will complete on each UTC hour
          (00:00, 01:00, 02:00 etc).

          If, in addition, {{param|FetchSamples}} is 24, then the fetch
          interval is 86400 (a day) and {{param|Status}}
          {{enum|Enabled|Status}} to {{enum|Trigger|Status}} to
          {{enum|Enabled|Status}} transitions will occur every day at UTC
          midnight.

          Note that, if {{param}} is set to a time other than the Unknown Time,
          the first sample interval (which has to begin immediately) will
          almost certainly be shorter than {{param|SampleInterval}}). This is
          why {{param}} is defined in terms of when sample intervals complete
          rather than start.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="0001-01-01T00:00:00Z"/>
        </syntax>
      </parameter>

      <parameter name="FetchSamples" access="readWrite">
        <description>
          The number of sample intervals to be collected before transitioning
          {{param|Status}} from {{enum|Enabled|Status}} to
          {{enum|Trigger|Status}} to {{enum|Enabled|Status}}.

          If this SampleSet is enabled and {{param}} is in the range
          [1:{{param|ReportSamples}}] then {{param|Status}} MUST transition
          from {{enum|Enabled|Status}} to {{enum|Trigger|Status}} to
          {{enum|Enabled|Status}} on completion of every {{param}} sample
          intervals. Otherwise, the transition MUST NOT occur.

          For example, if {{param|ReportSamples}} is 25 and {{param}} is 24,
          then the CPE will store 25 values for each monitored parameter and
          the above {{param|Status}} transition will occur as the CPE stores
          each 24th of 25 sample intervals, which means that the ACS could
          delay for up to two sample intervals before reading the stored values
          and would still not miss any samples (see also
          {{template|PERIODICSTATISTICS-FORCESAMPLE}}).

          To disable this trigger mechanism and still collect sampled
          statistics, {{param}} can be set to either 0 or a value greater than
          {{param|ReportSamples}}.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="ForceSample" access="readWrite"
          dmr:previousParameter="FetchSamples">
        <description>
          When set to {{true}}, forces statistics for the current sample to be
          calculated and updated in the data model. Setting it to {{false}} has
          no effect. {{hidden}}

          If this is the first time that {{param}} has been set to {{true}}
          during the current sample interval, this MUST cause a new value to be
          added to each of the periodic statistics comma-separated list
          parameters, and the {{param|ReportEndTime}} and all
          {{param|SampleSeconds}} parameters MUST be updated accordingly.

          If this is not the first time that {{param}} has been set to {{true}}
          during the current sample interval, then the new values that were
          added as described in the previous paragraph, and the
          {{param|ReportEndTime}} and all {{param|SampleSeconds}} parameters,
          MUST be updated accordingly.

          Note that {{param}} just provides a "sneak preview" of the current
          sample. It does not create a new sample and it does not interfere
          with the sample interval schedule.

          At the end of each sample interval, if {{param}} was set to {{true}}
          during the sample interval then the new values that were added as
          described above, and the {{param|ReportEndTime}} and all
          {{param|SampleSeconds}} parameters, will be updated accordingly. In
          other words, the partial sample data that was created when {{param}}
          was set to {{true}} will be updated one last time at the end of the
          sample interval.
        </description>
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.MQTT.Client.{i}." access="readWrite" minEntries="0"
        maxEntries="unbounded">

      <parameter name="ForceReconnect" access="readWrite"
          dmr:previousParameter="KeepAliveTime" version="2.10">
        <description>
          Disconnects the MQTT client from the MQTT broker and reconnects it
          again (toggle connection). It is only effective if the MQTT client is
          currently connected to the MQTT broker (Parameter {{param|Status|}}
          is {{enum|Connected|Status}}).

          If the MQTT client is in a different state, the parameter has no
          effect.

          This action parameter may be used to immediately apply changes in the
          MQTT connection settings.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.MQTT.Broker.{i}.Bridge.{i}." access="readWrite"
        minEntries="0" maxEntries="unbounded">

      <parameter name="ForceReconnect" access="readWrite"
          dmr:previousParameter="KeepAliveTime" version="2.10">
        <description>
          Disconnects the MQTT bridge to the remote MQTT broker and reconnects
          it again (toggle connection). It is only effective if the MQTT bridge
          is currently connected to the remote MQTT broker (Parameter
          {{param|Status|}} is {{enum|Connected|Status}}).

          If the MQTT bridge is in a different state, the parameter has no
          effect.

          This action parameter may be used to immediately apply changes in the
          MQTT connection settings.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.Ethernet.WoL." access="readOnly" minEntries="1"
        maxEntries="1">

      <parameter name="SendMagicPacket" access="readWrite">
        <description>
          When set to {{true}}, the CPE must send a magic packet over its
          active Ethernet interfaces.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
      <component ref="SendMagicPacketInput"/>
    </object>

    <object base="Device.Routing.Babel." access="readOnly" minEntries="1"
        maxEntries="1">
      <parameter name="StatsReset" access="readWrite" version="2.15">
        <description>
          When set to {{true}}, all Babel statistics counters are reset to
          zero. Statistics are provided in
          {{object|InterfaceSetting.{i}.Stats.}}.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object base="Device.Routing.Babel.MACKeySet.{i}.MACKey.{i}."
        access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter name="MACTestState" access="readWrite" version="2.15">
        <description>
          This parameter allows the MAC key and MAC algorithm to be tested to
          see if they produce an expected outcome. The command calculates a MAC
          for {{param|InputString}} using the {{param|KeyValue}} and the
          algorithm indicated by {{param|MACKeyAlgorithm}} and compares that to
          the value of {{param|InputMAC}}. If the values match, the output
          {{param|Match}} is {{true}}.

          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="DiagnosticsState">
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Canceled" optional="true"/>
            <enumeration value="Complete" access="readOnly"/>
            <enumeration value="Error" access="readOnly" optional="true"/>
          </dataType>
        </syntax>
      </parameter>
      <parameter name="InputString" access="readWrite" version="2.15">
        <description>
          Setting {{param|MACTestState}} to {{enum|Requested|MACTestState}}
          calculates a MAC of {{param}} using the {{param|KeyValue}} and the
          algorithm indicated by {{param|MACKeyAlgorithm}}.
        </description>
        <syntax>
          <hexBinary/>
        </syntax>
      </parameter>
      <parameter name="InputMAC" access="readWrite" version="2.15">
        <description>
          Whenever a MAC is calculated from {{param|InputString}} that MAC is
          then compared to {{param}}.
        </description>
        <syntax>
          <hexBinary/>
        </syntax>
      </parameter>
      <parameter name="Match" access="readOnly" version="2.15">
        <description>
          {{param}} is {{true}} if the calculated MAC and {{param|InputMAC}}
          are the same.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.USPAgent." access="readOnly" minEntries="1"
        maxEntries="1" version="2.15">
      <description>
        This object contains general information about the USP Agent itself.
        For information related to the Device that hosts the Agent, please
        reference the {{object|#.DeviceInfo}} object.
      </description>

      <component ref="USPLocalAgent" version="2.15"/>

      <parameter name="AddCertificate" access="readWrite">
        <description>
          Provides a mechanism to allow an ACS to add a new certificate to
          {{object|Certificate.{i}}}. This does not automatically produce a
          trust relationship with the host identified by the Certificate. To
          produce a trust relationship, an entry is required to exist in
          {{param|Controller.{i}.Credential}} or
          {{param|ControllerTrust.Credential.{i}.Credential}} that references
          the new {{object|Certificate.{i}}} entry. The Agent will use the
          Serial Number and Issuer fields from the content provided in this
          parameter to populate the {{param|Certificate.{i}.SerialNumber}} and
          {{param|Certificate.{i}.Issuer}} parameters. If
          {{object|Certificate}} already has an instance with the same
          {{param|Certificate.{i}.SerialNumber}} and
          {{param|Certificate.{i}.Issuer}} parameters, this command will fail.
          To replace an instance with the same
          {{param|Certificate.{i}.SerialNumber}} and
          {{param|Certificate.{i}.Issuer}}, the existing instance must first be
          deleted.

          The value of this parameter is the X.509 certificate in
          Privacy-enhanced Electronic Mail (PEM) {{bibref|RFC7468}} format.
        </description>
        <syntax command="true">
          <string>
            <size maxLength="65535"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object base="Device.USPAgent.Controller.{i}." access="readWrite"
        minEntries="0" maxEntries="unbounded"
        numEntriesParameter="ControllerNumberOfEntries"
        enableParameter="Enable">

      <parameter name="SendOnBoardRequest" access="readWrite">
        <description>
          When set to {{true}}, requests the Agent to send a USP
          ''OnBoardRequest'' notification to this Controller.
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <component ref="WiFiCWMP"/>

    <component ref="ETSIM2M"/>

    <component ref="STOMP" version="2.15"/>

    <profile name="PacketCaptureDiagnostics:1" dmr:previousProfile=""
        version="2.13">
      <object ref="Device.PacketCaptureDiagnostics." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Duration" requirement="readWrite"/>
        <parameter ref="FileTarget" requirement="readWrite"/>
      </object>
      <object ref="Device.PacketCaptureDiagnostics.PacketCaptureResult.{i}."
          requirement="present">
        <parameter ref="FileLocation" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="Download:1" version="2.0" dmr:previousProfile="">
      <object ref="Device.IP.Diagnostics." requirement="present">
        <parameter ref="IPv4DownloadDiagnosticsSupported"
            requirement="readOnly"/>
        <parameter ref="IPv6DownloadDiagnosticsSupported"
            requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Diagnostics.DownloadDiagnostics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="DownloadURL" requirement="readWrite"/>
        <parameter ref="DownloadTransports" requirement="readOnly"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="EthernetPriority" requirement="readWrite"/>
        <parameter ref="ROMTime" requirement="readOnly"/>
        <parameter ref="BOMTime" requirement="readOnly"/>
        <parameter ref="EOMTime" requirement="readOnly"/>
        <parameter ref="TestBytesReceived" requirement="readOnly"/>
        <parameter ref="TotalBytesReceived" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DownloadTCP:1" version="2.0">
      <object ref="Device.IP.Diagnostics.DownloadDiagnostics."
          requirement="present">
        <parameter ref="TCPOpenRequestTime" requirement="readOnly"/>
        <parameter ref="TCPOpenResponseTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="Upload:1" version="2.0">
      <object ref="Device.IP.Diagnostics." requirement="present">
        <parameter ref="IPv4UploadDiagnosticsSupported" requirement="readOnly"/>
        <parameter ref="IPv6UploadDiagnosticsSupported" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Diagnostics.UploadDiagnostics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="UploadURL" requirement="readWrite"/>
        <parameter ref="UploadTransports" requirement="readOnly"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="EthernetPriority" requirement="readWrite"/>
        <parameter ref="ROMTime" requirement="readOnly"/>
        <parameter ref="BOMTime" requirement="readOnly"/>
        <parameter ref="EOMTime" requirement="readOnly"/>
        <parameter ref="TestFileLength" requirement="readOnly"/>
        <parameter ref="TotalBytesSent" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="UploadTCP:1" version="2.0">
      <object ref="Device.IP.Diagnostics.UploadDiagnostics."
          requirement="present">
        <parameter ref="TCPOpenRequestTime" requirement="readOnly"/>
        <parameter ref="TCPOpenResponseTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="SelfTestDiag:1" version="2.0"
        dmr:previousProfile="UPnPDiscAdv:2">
      <object ref="Device.SelfTestDiagnostics." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Results" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="NSLookupDiag:1" version="2.0">
      <object ref="Device.DNS.Diagnostics.NSLookupDiagnostics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="HostName" requirement="readWrite"/>
        <parameter ref="DNSServer" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="NumberOfRepetitions" requirement="readWrite"/>
        <parameter ref="SuccessCount" requirement="readOnly"/>
        <parameter ref="ResultNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}."
          requirement="present">
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="AnswerType" requirement="readOnly"/>
        <parameter ref="HostNameReturned" requirement="readOnly"/>
        <parameter ref="IPAddresses" requirement="readOnly"/>
        <parameter ref="DNSServerIP" requirement="readOnly"/>
        <parameter ref="ResponseTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPLayerCapacity:1" dmr:previousProfile="" version="2.14"
        status="deprecated">
      <object ref="Device.IP.Diagnostics." requirement="present">
        <parameter ref="IPLayerCapacitySupported" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Diagnostics.IPLayerCapacityMetrics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="IPLayerMaxConnections" requirement="readOnly"/>
        <parameter ref="IPLayerMaxIncrementalResult" requirement="readOnly"/>
        <parameter ref="IPLayerCapSupportedMetrics" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Role" requirement="readWrite"/>
        <parameter ref="Host" requirement="readOnly"/>
        <parameter ref="Port" requirement="readOnly"/>
        <parameter ref="JumboFramesPermitted" requirement="readOnly"/>
        <parameter ref="NumberOfConnections" requirement="readOnly"/>
        <parameter ref="EthernetPriority" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="ProtocolVersion" requirement="readWrite"/>
        <parameter ref="UDPPayloadMin" requirement="readWrite"/>
        <parameter ref="UDPPayloadMax" requirement="readWrite"/>
        <parameter ref="PortMin" requirement="readWrite"/>
        <parameter ref="PortMax" requirement="readWrite"/>
        <parameter ref="TestType" requirement="readWrite"/>
        <parameter ref="PreambleDuration" requirement="readWrite"/>
        <parameter ref="StartSendingRate" requirement="readWrite"/>
        <parameter ref="NumberTestSubIntervals" requirement="readWrite"/>
        <parameter ref="TestSubInterval" requirement="readWrite"/>
        <parameter ref="StatusFeedbackInterval" requirement="readWrite"/>
        <parameter ref="TimeoutNoTraffic" requirement="readWrite"
            status="deprecated"/>
        <parameter ref="Tmax" requirement="readOnly"/>
        <parameter ref="TmaxRTT" requirement="readWrite"/>
        <parameter ref="TimestampResolution" requirement="readWrite"/>
        <parameter ref="LowerThresh" requirement="readWrite"/>
        <parameter ref="UpperThresh" requirement="readWrite"/>
        <parameter ref="HighSpeedDelta" requirement="readWrite"/>
        <parameter ref="SlowAdjThresh" requirement="readWrite"/>
        <parameter ref="HSpeedThresh" requirement="readWrite"/>
        <parameter ref="BOMTime" requirement="readOnly"/>
        <parameter ref="EOMTime" requirement="readOnly"/>
        <parameter ref="TestInterval" requirement="readOnly"/>
        <parameter ref="MaxIPLayerCapacity" requirement="readOnly"/>
        <parameter ref="TimeOfMax" requirement="readOnly"/>
        <parameter ref="LossRatioAtMax" requirement="readOnly"/>
        <parameter ref="RTTRangeAtMax" requirement="readOnly"/>
        <parameter ref="PDVRangeAtMax" requirement="readOnly"/>
        <parameter ref="MinOnewayDelayAtMax" requirement="readOnly"/>
        <parameter ref="ReorderedRatioAtMax" requirement="readOnly"/>
        <parameter ref="IncrementalResultNumberOfEntries"
            requirement="readOnly"/>
      </object>
      <object
          ref="Device.IP.Diagnostics.IPLayerCapacityMetrics.IncrementalResult.{i}."
          requirement="present">
        <parameter ref="IPLayerCapacity" requirement="readOnly"/>
        <parameter ref="TimeOfSubInterval" requirement="readOnly"/>
        <parameter ref="LossRatio" requirement="readOnly"/>
        <parameter ref="RTTRange" requirement="readOnly"/>
        <parameter ref="PDVRange" requirement="readOnly"/>
        <parameter ref="MinOnewayDelay" requirement="readOnly"/>
        <parameter ref="ReorderedRatio" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPLayerCapacityTest:1"
        dmr:previousProfile="IPLayerCapacity:1" version="2.15">
      <object ref="Device.IP.Diagnostics." requirement="present">
        <parameter ref="IPLayerCapacitySupported" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Diagnostics.IPLayerCapacityMetrics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="IPLayerCapSupportedSoftwareVersion"
            requirement="readOnly"/>
        <parameter ref="IPLayerCapSupportedControlProtocolVersion"
            requirement="readOnly"/>
        <parameter ref="IPLayerCapSupportedMetrics" requirement="readOnly"/>
        <parameter ref="Role" requirement="readWrite"/>
        <parameter ref="Host" requirement="readOnly"/>
        <parameter ref="JumboFramesPermitted" requirement="readOnly"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="TestType" requirement="readWrite"/>
        <parameter ref="IPDVEnable" requirement="readWrite"/>
        <parameter ref="TestSubInterval" requirement="readWrite"/>
        <parameter ref="StatusFeedbackInterval" requirement="readWrite"/>
        <parameter ref="SeqErrThresh" requirement="readWrite"/>
        <parameter ref="ReordDupIgnoreEnable" requirement="readOnly"/>
        <parameter ref="LowerThresh" requirement="readWrite"/>
        <parameter ref="UpperThresh" requirement="readWrite"/>
        <parameter ref="HighSpeedDelta" requirement="readWrite"/>
        <parameter ref="SlowAdjThresh" requirement="readWrite"/>
        <parameter ref="MaxIPLayerCapacity" requirement="readOnly"/>
        <parameter ref="TimeOfMax" requirement="readOnly"/>
        <parameter ref="MaxETHCapacityNoFCS" requirement="readOnly"/>
        <parameter ref="MaxETHCapacityWithFCS" requirement="readOnly"/>
        <parameter ref="MaxETHCapacityWithFCSVLAN" requirement="readOnly"/>
        <parameter ref="LossRatioAtMax" requirement="readOnly"/>
        <parameter ref="RTTRangeAtMax" requirement="readOnly"/>
        <parameter ref="PDVRangeAtMax" requirement="readOnly"/>
        <parameter ref="IPLayerCapacitySummary" requirement="readOnly"/>
        <parameter ref="LossRatioSummary" requirement="readOnly"/>
        <parameter ref="MinRTTSummary" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="AutonXferComplPolicy:1" version="2.0"
        dmr:previousProfile="TempStatusAdv:2">
      <object ref="Device.ManagementServer.AutonomousTransferCompletePolicy."
          requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="TransferTypeFilter" requirement="readWrite"/>
        <parameter ref="FileTypeFilter" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="DownloadAnnounce:1" version="2.0"
        dmr:previousProfile="PeriodicStatsAdv:1">
      <object ref="Device.ManagementServer.DownloadAvailability."
          requirement="present"/>
      <object ref="Device.ManagementServer.DownloadAvailability.Announcement."
          requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="GroupNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="URL" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="DownloadQuery:1" version="2.0">
      <object ref="Device.ManagementServer.DownloadAvailability."
          requirement="present"/>
      <object ref="Device.ManagementServer.DownloadAvailability.Query."
          requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="URL" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="Baseline:1" extends="_Baseline:1" status="deleted"
        version="2.0">
      <object ref="Device.ManagementServer." requirement="present">
        <parameter ref="URL" requirement="readWrite"/>
        <parameter ref="Username" requirement="readWrite"/>
        <parameter ref="Password" requirement="readWrite"/>
        <parameter ref="PeriodicInformEnable" requirement="readWrite"/>
        <parameter ref="PeriodicInformInterval" requirement="readWrite"/>
        <parameter ref="PeriodicInformTime" requirement="readWrite"/>
        <parameter ref="ParameterKey" requirement="readOnly"/>
        <parameter ref="ConnectionRequestURL" requirement="readOnly"/>
        <parameter ref="ConnectionRequestUsername" requirement="readWrite"/>
        <parameter ref="ConnectionRequestPassword" requirement="readWrite"/>
        <parameter ref="UpgradesManaged" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="Baseline:2" base="Baseline:1" extends="_Baseline:2"
        version="2.2" status="deleted"/>

    <profile name="Baseline:3" base="Baseline:2" extends="_Baseline:3"
        version="2.4" status="deleted"/>

    <!-- this is defined from scratch in order to omit Device.LANConfigSecurity -->
    <profile name="Baseline:4" extends="_Baseline:4" version="2.15">
      <object ref="Device.ManagementServer." requirement="present">
        <parameter ref="URL" requirement="readWrite"/>
        <parameter ref="Username" requirement="readWrite"/>
        <parameter ref="Password" requirement="readWrite"/>
        <parameter ref="PeriodicInformEnable" requirement="readWrite"/>
        <parameter ref="PeriodicInformInterval" requirement="readWrite"/>
        <parameter ref="PeriodicInformTime" requirement="readWrite"/>
        <parameter ref="ParameterKey" requirement="readOnly"/>
        <parameter ref="ConnectionRequestURL" requirement="readOnly"/>
        <parameter ref="ConnectionRequestUsername" requirement="readWrite"/>
        <parameter ref="ConnectionRequestPassword" requirement="readWrite"/>
        <parameter ref="UpgradesManaged" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="DeviceAssociation:1" version="2.0"
        dmr:previousProfile="GatewayInfo:1">
      <description>
        This profile implies support for all of the Gateway requirements
        defined in {{bibref|TR-069|Annex F}}.
      </description>
      <object ref="Device.ManagementServer." requirement="notSpecified">
        <parameter ref="ManageableDeviceNumberOfEntries"
            requirement="readOnly"/>
      </object>
      <object ref="Device.ManagementServer.ManageableDevice.{i}."
          requirement="present">
        <parameter ref="ManufacturerOUI" requirement="readOnly"/>
        <parameter ref="SerialNumber" requirement="readOnly"/>
        <parameter ref="ProductClass" requirement="readOnly"/>
        <parameter ref="Host" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPPingDetailed:1"
        dmr:previousProfile="IEEE8021xAuthentication:2" version="2.7">
      <object ref="Device.IP.Diagnostics.IPPing." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Host" requirement="readWrite"/>
        <parameter ref="NumberOfRepetitions" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="DataBlockSize" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="SuccessCount" requirement="readOnly"/>
        <parameter ref="FailureCount" requirement="readOnly"/>
        <parameter ref="AverageResponseTimeDetailed" requirement="readOnly"/>
        <parameter ref="MinimumResponseTimeDetailed" requirement="readOnly"/>
        <parameter ref="MaximumResponseTimeDetailed" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPPing:1" version="2.0">
      <object ref="Device.IP.Diagnostics.IPPing." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Host" requirement="readWrite"/>
        <parameter ref="NumberOfRepetitions" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="DataBlockSize" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="SuccessCount" requirement="readOnly"/>
        <parameter ref="FailureCount" requirement="readOnly"/>
        <parameter ref="AverageResponseTime" requirement="readOnly"/>
        <parameter ref="MinimumResponseTime" requirement="readOnly"/>
        <parameter ref="MaximumResponseTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="TraceRoute:1" version="2.0">
      <object ref="Device.IP.Diagnostics.TraceRoute." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Host" requirement="readWrite"/>
        <parameter ref="NumberOfTries" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="DataBlockSize" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="MaxHopCount" requirement="readWrite"/>
        <parameter ref="ResponseTime" requirement="readOnly"/>
        <parameter ref="RouteHopsNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Diagnostics.TraceRoute.RouteHops.{i}."
          requirement="present">
        <parameter ref="Host" requirement="readOnly"/>
        <parameter ref="HostAddress" requirement="readOnly"/>
        <parameter ref="ErrorCode" requirement="readOnly"/>
        <parameter ref="RTTimes" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="ATMLoopback:1" version="2.0">
      <object ref="Device.ATM.Diagnostics.F5Loopback." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="NumberOfRepetitions" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="SuccessCount" requirement="readOnly"/>
        <parameter ref="FailureCount" requirement="readOnly"/>
        <parameter ref="AverageResponseTime" requirement="readOnly"/>
        <parameter ref="MinimumResponseTime" requirement="readOnly"/>
        <parameter ref="MaximumResponseTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DSLDiagnostics:1" version="2.0">
      <description>
        Note: This profile is valid for G.992.1 modems.
      </description>
      <object ref="Device.DSL.Diagnostics.ADSLLineTest." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="ACTPSDds" requirement="readOnly"/>
        <parameter ref="ACTPSDus" requirement="readOnly"/>
        <parameter ref="ACTATPds" requirement="readOnly"/>
        <parameter ref="ACTATPus" requirement="readOnly"/>
        <parameter ref="HLINSCds" requirement="readOnly"/>
        <parameter ref="HLINpsds" requirement="readOnly"/>
        <parameter ref="QLNpsds" requirement="readOnly"/>
        <parameter ref="SNRpsds" requirement="readOnly"/>
        <parameter ref="BITSpsds" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="ADSL2Diagnostics:1" version="2.0">
      <description>
        Note: This profile is valid for G.992.3 and G.992.5 modems.
      </description>
      <object ref="Device.DSL.Diagnostics.ADSLLineTest." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="ACTPSDds" requirement="readOnly"/>
        <parameter ref="ACTPSDus" requirement="readOnly"/>
        <parameter ref="ACTATPds" requirement="readOnly"/>
        <parameter ref="ACTATPus" requirement="readOnly"/>
        <parameter ref="HLINSCds" requirement="readOnly"/>
        <parameter ref="HLINSCus" requirement="readOnly"/>
        <parameter ref="HLINpsds" requirement="readOnly"/>
        <parameter ref="HLINpsus" requirement="readOnly"/>
        <parameter ref="HLOGpsds" requirement="readOnly"/>
        <parameter ref="HLOGpsus" requirement="readOnly"/>
        <parameter ref="HLOGMTds" requirement="readOnly"/>
        <parameter ref="HLOGMTus" requirement="readOnly"/>
        <parameter ref="QLNpsds" requirement="readOnly"/>
        <parameter ref="QLNpsus" requirement="readOnly"/>
        <parameter ref="QLNMTds" requirement="readOnly"/>
        <parameter ref="QLNMTus" requirement="readOnly"/>
        <parameter ref="SNRpsds" requirement="readOnly"/>
        <parameter ref="SNRpsus" requirement="readOnly"/>
        <parameter ref="SNRMTds" requirement="readOnly"/>
        <parameter ref="SNRMTus" requirement="readOnly"/>
        <parameter ref="LATNpbds" requirement="readOnly"/>
        <parameter ref="LATNpbus" requirement="readOnly"/>
        <parameter ref="SATNds" requirement="readOnly"/>
        <parameter ref="SATNus" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="VDSL2Diagnostics:1" version="2.0">
      <description>
        Note: This profile is valid for G.993.2 modems.
      </description>
      <object ref="Device.DSL.Diagnostics.ADSLLineTest." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="ACTPSDds" requirement="readOnly"/>
        <parameter ref="ACTPSDus" requirement="readOnly"/>
        <parameter ref="ACTATPds" requirement="readOnly"/>
        <parameter ref="ACTATPus" requirement="readOnly"/>
        <parameter ref="HLINSCds" requirement="readOnly"/>
        <parameter ref="HLINSCus" requirement="readOnly"/>
        <parameter ref="HLINGds" requirement="readOnly"/>
        <parameter ref="HLINGus" requirement="readOnly"/>
        <parameter ref="HLINpsds" requirement="readOnly"/>
        <parameter ref="HLINpsus" requirement="readOnly"/>
        <parameter ref="HLOGGds" requirement="readOnly"/>
        <parameter ref="HLOGGus" requirement="readOnly"/>
        <parameter ref="HLOGpsds" requirement="readOnly"/>
        <parameter ref="HLOGpsus" requirement="readOnly"/>
        <parameter ref="HLOGMTds" requirement="readOnly"/>
        <parameter ref="HLOGMTus" requirement="readOnly"/>
        <parameter ref="QLNGds" requirement="readOnly"/>
        <parameter ref="QLNGus" requirement="readOnly"/>
        <parameter ref="QLNpsds" requirement="readOnly"/>
        <parameter ref="QLNpsus" requirement="readOnly"/>
        <parameter ref="QLNMTds" requirement="readOnly"/>
        <parameter ref="QLNMTus" requirement="readOnly"/>
        <parameter ref="SNRGds" requirement="readOnly"/>
        <parameter ref="SNRGus" requirement="readOnly"/>
        <parameter ref="SNRpsds" requirement="readOnly"/>
        <parameter ref="SNRpsus" requirement="readOnly"/>
        <parameter ref="SNRMTds" requirement="readOnly"/>
        <parameter ref="SNRMTus" requirement="readOnly"/>
        <parameter ref="LATNpbds" requirement="readOnly"/>
        <parameter ref="LATNpbus" requirement="readOnly"/>
        <parameter ref="SATNds" requirement="readOnly"/>
        <parameter ref="SATNus" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="SELTDiagnostics:1" version="2.13">
      <object ref="Device.DSL.Diagnostics.SELTUER." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="UERMaxMeasurementDuration" requirement="readWrite"/>
        <parameter ref="UER" requirement="readOnly"/>
        <parameter ref="UERScaleFactor" requirement="readOnly"/>
        <parameter ref="UERGroupSize" requirement="readOnly"/>
        <parameter ref="UERVar" requirement="readOnly"/>
      </object>
      <object ref="Device.DSL.Diagnostics.SELTQLN." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="QLNMaxMeasurementDuration" requirement="readWrite"/>
        <parameter ref="QLN" requirement="readOnly"/>
        <parameter ref="QLNGroupSize" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="HPNADiagnostics:1" version="2.0"
        dmr:previousProfile="HPNA:1">
      <object ref="Device.HPNA.Diagnostics.PerformanceMonitoring."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="SampleInterval" requirement="readOnly"/>
      </object>
      <object ref="Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes."
          requirement="present">
        <parameter ref="CurrentStart" requirement="readOnly"/>
        <parameter ref="CurrentEnd" requirement="readOnly"/>
        <parameter ref="NodeNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}."
          requirement="present">
        <parameter ref="MACAddress" requirement="readOnly"/>
        <parameter ref="BytesSent" requirement="readOnly"/>
        <parameter ref="BytesReceived" requirement="readOnly"/>
        <parameter ref="PacketsSent" requirement="readOnly"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
        <parameter ref="BroadcastPacketsSent" requirement="readOnly"/>
        <parameter ref="BroadcastPacketsReceived" requirement="readOnly"/>
        <parameter ref="MulticastPacketsSent" requirement="readOnly"/>
        <parameter ref="MulticastPacketsReceived" requirement="readOnly"/>
        <parameter ref="PacketsCrcErrored" requirement="readOnly"/>
        <parameter ref="PacketsCrcErroredHost" requirement="readOnly"/>
        <parameter ref="PacketsShortErrored" requirement="readOnly"/>
        <parameter ref="PacketsShortErroredHost" requirement="readOnly"/>
        <parameter ref="RxPacketsDropped" requirement="readOnly"/>
        <parameter ref="TxPacketsDropped" requirement="readOnly"/>
        <parameter ref="ControlRequestLocal" requirement="readOnly"/>
        <parameter ref="ControlReplyLocal" requirement="readOnly"/>
        <parameter ref="ControlRequestRemote" requirement="readOnly"/>
      </object>
      <object ref="Device.HPNA.Diagnostics.PerformanceMonitoring.Channels."
          requirement="present">
        <parameter ref="TimeStamp" requirement="readOnly"/>
        <parameter ref="ChannelNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}."
          requirement="present">
        <parameter ref="HPNASrcMACAddress" requirement="readOnly"/>
        <parameter ref="HPNADestMACAddress" requirement="readOnly"/>
        <parameter ref="HostSrcMACAddress" requirement="readOnly"/>
        <parameter ref="HostDestMACAddress" requirement="readOnly"/>
        <parameter ref="PHYRate" requirement="readOnly"/>
        <parameter ref="BaudRate" requirement="readOnly"/>
        <parameter ref="SNR" requirement="readOnly"/>
        <parameter ref="PacketsSent" requirement="readOnly"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
      </object>
      <object ref="Device.HPNA.Diagnostics.PHYThroughput."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="NumPacketsInBurst" requirement="readWrite"/>
        <parameter ref="BurstInterval" requirement="readWrite"/>
        <parameter ref="TestPacketPayloadLength" requirement="readWrite"/>
        <parameter ref="PayloadEncoding" requirement="readWrite"/>
        <parameter ref="PayloadDataGen" requirement="readWrite"/>
        <parameter ref="PayloadType" requirement="readWrite"/>
        <parameter ref="PriorityLevel" requirement="readWrite"/>
        <parameter ref="ResultNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.HPNA.Diagnostics.PHYThroughput.Result.{i}."
          requirement="present">
        <parameter ref="SrcMACAddress" requirement="readOnly"/>
        <parameter ref="DestMACAddress" requirement="readOnly"/>
        <parameter ref="PHYRate" requirement="readOnly"/>
        <parameter ref="BaudRate" requirement="readOnly"/>
        <parameter ref="SNR" requirement="readOnly"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="UPADiagnostics:1" version="2.0" dmr:previousProfile="UPA:1">
      <object ref="Device.UPA.Diagnostics.InterfaceMeasurement."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Type" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Port" requirement="readWrite"/>
        <parameter ref="Measurements" requirement="readOnly"/>
        <parameter ref="RxGain" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="UDPConnReq:1" version="2.0"
        dmr:previousProfile="DeviceAssociation:1">
      <description>
        This profile only applies to Internet Gateway Devices that are acting
        as CPE behind a NAT gateway as described in {{bibref|TR-069|Annex G}},
        and implies support for all of the CPE requirements defined within
        Annex G.
      </description>
      <object ref="Device.ManagementServer." requirement="notSpecified">
        <parameter ref="UDPConnectionRequestAddress" requirement="readOnly"/>
        <parameter ref="STUNEnable" requirement="readWrite"/>
        <parameter ref="STUNServerAddress" requirement="readWrite"/>
        <parameter ref="STUNServerPort" requirement="readWrite"/>
        <parameter ref="STUNUsername" requirement="readWrite"/>
        <parameter ref="STUNPassword" requirement="readWrite"/>
        <parameter ref="STUNMaximumKeepAlivePeriod" requirement="readWrite"/>
        <parameter ref="STUNMinimumKeepAlivePeriod" requirement="readWrite"/>
        <parameter ref="NATDetected" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DUStateChngComplPolicy:1"
        dmr:previousProfile="VendorLogFiles:1" version="2.1">
      <object ref="Device.ManagementServer.DUStateChangeComplPolicy."
          requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="OperationTypeFilter" requirement="readWrite"/>
        <parameter ref="ResultTypeFilter" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="StandbyPolicy:1" dmr:previousProfile="ETSIM2MSCLBaseline:1"
        version="2.7">
      <description>
        Note that support for this profile implies support for the requirements
        of {{bibref|TR-069|Annex L}}.
      </description>
      <object ref="Device.ManagementServer.StandbyPolicy."
          requirement="present">
        <parameter ref="CRUnawarenessMaxDuration" requirement="readWrite"/>
        <parameter ref="MaxMissedPeriodic" requirement="readWrite"/>
        <parameter ref="NotifyMissedScheduled" requirement="readWrite"/>
        <parameter ref="NetworkAwarenessCapable" requirement="readOnly"/>
        <parameter ref="SelfTimerCapable" requirement="readOnly"/>
        <parameter ref="CRAwarenessRequested" requirement="readWrite"/>
        <parameter ref="PeriodicAwarenessRequested" requirement="readWrite"/>
        <parameter ref="ScheduledAwarenessRequested" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="XMPPConnReq:1" extends="XMPPBasic:1"
        dmr:previousProfile="XMPPBasic:1" version="2.7">
      <object ref="Device.ManagementServer." requirement="present">
        <parameter ref="SupportedConnReqMethods" requirement="readOnly"/>
        <parameter ref="ConnReqXMPPConnection" requirement="readWrite"/>
        <parameter ref="ConnReqAllowedJabberIDs" requirement="readWrite"/>
        <parameter ref="ConnReqJabberID" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="InformParameters:1" dmr:previousProfile="XMPPReconnect:1"
        version="2.8">
      <object ref="Device.ManagementServer." requirement="present">
        <parameter ref="InformParameterNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.ManagementServer.InformParameter.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="ParameterName" requirement="readWrite"/>
        <parameter ref="EventList" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="UDPEchoDiag:1" version="2.9">
      <object ref="Device.IP.Diagnostics.UDPEchoDiagnostics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Host" requirement="readWrite"/>
        <parameter ref="NumberOfRepetitions" requirement="readWrite"/>
        <parameter ref="EnableIndividualPacketResults" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="DataBlockSize" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="InterTransmissionTime" requirement="readWrite"/>
        <parameter ref="SuccessCount" requirement="readOnly"/>
        <parameter ref="FailureCount" requirement="readOnly"/>
        <parameter ref="AverageResponseTime" requirement="readOnly"/>
        <parameter ref="MinimumResponseTime" requirement="readOnly"/>
        <parameter ref="MaximumResponseTime" requirement="readOnly"/>
        <parameter ref="IndividualPacketResultNumberOfEntries"
            requirement="readOnly"/>
      </object>
      <object
          ref="Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}."
          requirement="present">
        <parameter ref="PacketSuccess" requirement="readOnly"/>
        <parameter ref="PacketSendTime" requirement="readOnly"/>
        <parameter ref="PacketReceiveTime" requirement="readOnly"/>
        <parameter ref="TestGenSN" requirement="readOnly"/>
        <parameter ref="TestRespSN" requirement="readOnly"/>
        <parameter ref="TestRespRcvTimeStamp" requirement="readOnly"/>
        <parameter ref="TestRespReplyTimeStamp" requirement="readOnly"/>
        <parameter ref="TestRespReplyFailureCount" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="ServerSelectionDiag:1" version="2.9">
      <object ref="Device.IP.Diagnostics.ServerSelectionDiagnostics."
          requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="HostList" requirement="readWrite"/>
        <parameter ref="NumberOfRepetitions" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
        <parameter ref="FastestHost" requirement="readOnly"/>
        <parameter ref="AverageResponseTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="GatewayInfo:1" version="2.0">
      <object ref="Device.GatewayInfo." requirement="present">
        <parameter ref="ManufacturerOUI" requirement="readOnly"/>
        <parameter ref="ProductClass" requirement="readOnly"/>
        <parameter ref="SerialNumber" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="SupportedDataModel:1" version="2.0"
        dmr:previousProfile="UDPEchoPlus:1">
      <object ref="Device.DeviceInfo." requirement="present">
        <parameter ref="SupportedDataModelNumberOfEntries"
            requirement="readOnly"/>
      </object>
      <object ref="Device.DeviceInfo.SupportedDataModel.{i}."
          requirement="present">
        <parameter ref="URL" requirement="readOnly"/>
        <parameter ref="URN" requirement="readOnly"/>
        <parameter ref="Features" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="SupportedDataModel:2" base="SupportedDataModel:1"
        version="2.6">
      <object ref="Device.DeviceInfo.SupportedDataModel.{i}."
          requirement="present">
        <parameter ref="UUID" requirement="readOnly"/>
      </object>
    </profile>


    <profile name="SM_ExecEnvs:1" version="2.1">
      <object ref="Device.SoftwareModules." requirement="present">
        <parameter ref="ExecEnvNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.ExecEnv.{i}." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Type" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Version" requirement="readOnly"/>
        <parameter ref="AllocatedDiskSpace" requirement="readOnly"/>
        <parameter ref="AvailableDiskSpace" requirement="readOnly"/>
        <parameter ref="AllocatedMemory" requirement="readOnly"/>
        <parameter ref="AvailableMemory" requirement="readOnly"/>
        <parameter ref="ActiveExecutionUnits" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="SM_DeployAndExecUnits:1" version="2.1">
      <object ref="Device.SoftwareModules." requirement="present">
        <parameter ref="DeploymentUnitNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ExecutionUnitNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.DeploymentUnit.{i}."
          requirement="present">
        <parameter ref="UUID" requirement="readOnly"/>
        <parameter ref="DUID" requirement="readOnly"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Resolved" requirement="readOnly"/>
        <parameter ref="URL" requirement="readOnly"/>
        <parameter ref="Description" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Version" requirement="readOnly"/>
        <parameter ref="VendorLogList" requirement="readOnly"/>
        <parameter ref="VendorConfigList" requirement="readOnly"/>
        <parameter ref="ExecutionUnitList" requirement="readOnly"/>
        <parameter ref="ExecutionEnvRef" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.ExecutionUnit.{i}."
          requirement="present">
        <parameter ref="EUID" requirement="readOnly"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="ExecEnvLabel" requirement="readOnly"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="RequestedState" requirement="readWrite"/>
        <parameter ref="ExecutionFaultCode" requirement="readOnly"/>
        <parameter ref="ExecutionFaultMessage" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Version" requirement="readOnly"/>
        <parameter ref="Description" requirement="readOnly"/>
        <parameter ref="References" requirement="readOnly"/>
        <parameter ref="AssociatedProcessList" requirement="readOnly"/>
        <parameter ref="VendorLogList" requirement="readOnly"/>
        <parameter ref="VendorConfigList" requirement="readOnly"/>
        <parameter ref="SupportedDataModelList" requirement="readOnly"/>
        <parameter ref="ExecutionEnvRef" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.ExecutionUnit.{i}.Extensions."
          requirement="present"/>
    </profile>

    <profile name="SM_Baseline:1" version="2.1">
      <object ref="Device.SoftwareModules." requirement="present">
        <parameter ref="ExecEnvNumberOfEntries" requirement="readOnly"/>
        <parameter ref="DeploymentUnitNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ExecutionUnitNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.ExecEnv.{i}." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Type" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Version" requirement="readOnly"/>
        <parameter ref="ActiveExecutionUnits" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.DeploymentUnit.{i}."
          requirement="present">
        <parameter ref="UUID" requirement="readOnly"/>
        <parameter ref="DUID" requirement="readOnly"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Resolved" requirement="readOnly"/>
        <parameter ref="URL" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Version" requirement="readOnly"/>
        <parameter ref="ExecutionUnitList" requirement="readOnly"/>
        <parameter ref="ExecutionEnvRef" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.ExecutionUnit.{i}."
          requirement="present">
        <parameter ref="EUID" requirement="readOnly"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="ExecEnvLabel" requirement="readOnly"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="RequestedState" requirement="readWrite"/>
        <parameter ref="ExecutionFaultCode" requirement="readOnly"/>
        <parameter ref="ExecutionFaultMessage" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Version" requirement="readOnly"/>
        <parameter ref="References" requirement="readOnly"/>
        <parameter ref="SupportedDataModelList" requirement="readOnly"/>
      </object>
      <object ref="Device.SoftwareModules.ExecutionUnit.{i}.Extensions."
          requirement="present"/>
    </profile>

    <!-- Profiles with command parameter impacts -->

    <profile name="TempStatusAdv:1" extends="TempStatus:1" version="2.0"
        dmr:previousProfile="TempStatus:1">
      <object ref="Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}."
          requirement="present">
        <parameter ref="Reset" requirement="readWrite"/>
        <parameter ref="LowAlarmValue" requirement="readWrite"/>
        <parameter ref="LowAlarmTime" requirement="readOnly"/>
        <parameter ref="HighAlarmValue" requirement="readWrite"/>
        <parameter ref="HighAlarmTime" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="TempStatusAdv:2" base="TempStatusAdv:1"
        dmr:previousProfile="TempStatusAdv:1" version="2.1">
      <object ref="Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}."
          requirement="present">
        <parameter ref="PollingInterval" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="USBHostsAdv:1" extends="USBHostsBasic:1" version="2.0"
        dmr:previousProfile="USBHostsBasic:1">
      <object ref="Device.USB.USBHosts.Host.{i}." requirement="present">
        <parameter ref="Reset" requirement="readWrite"/>
        <parameter ref="PowerManagementEnable" requirement="readWrite"/>
      </object>
      <object ref="Device.USB.USBHosts.Host.{i}.Device.{i}."
          requirement="present">
        <parameter ref="IsSuspended" requirement="readOnly"/>
        <parameter ref="IsSelfPowered" requirement="readOnly"/>
        <parameter ref="ConfigurationNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}."
          requirement="present">
        <parameter ref="ConfigurationNumber" requirement="readOnly"/>
        <parameter ref="InterfaceNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}."
          requirement="present">
        <parameter ref="InterfaceNumber" requirement="readOnly"/>
        <parameter ref="InterfaceClass" requirement="readOnly"/>
        <parameter ref="InterfaceSubClass" requirement="readOnly"/>
        <parameter ref="InterfaceProtocol" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="PeriodicStatsAdv:1" extends="PeriodicStatsBase:1"
        version="2.0" dmr:previousProfile="PeriodicStatsBase:1">
      <object ref="Device.PeriodicStatistics.SampleSet.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="TimeReference" requirement="readWrite"/>
        <parameter ref="FetchSamples" requirement="readWrite"/>
        <parameter ref="ForceSample" requirement="readWrite"/>
      </object>
      <object ref="Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="SampleMode" requirement="readWrite"/>
        <parameter ref="CalculationMode" requirement="readWrite"/>
        <parameter ref="LowThreshold" requirement="readWrite"/>
        <parameter ref="HighThreshold" requirement="readWrite"/>
        <parameter ref="SampleSeconds" requirement="readOnly"/>
        <parameter ref="SuspectData" requirement="readOnly"/>
        <parameter ref="Values" requirement="readOnly"/>
        <parameter ref="Failures" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="PeriodicStatsAdv:2" base="PeriodicStatsAdv:1"
        version="2.16">
      <object ref="Device.PeriodicStatistics.SampleSet.{i}."
          requirement="createDelete">
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="TimeReference" requirement="readWrite"/>
        <parameter ref="FetchSamples" requirement="readWrite"/>
      </object>
   </profile>
    
    <profile name="IPInterface:1" version="2.0"
        dmr:previousProfile="IPv6Routing:1">
      <object ref="Device.IP." requirement="present">
        <parameter ref="InterfaceNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="LastChange" requirement="readOnly"/>
        <parameter ref="LowerLayers" requirement="readWrite"/>
        <parameter ref="Type" requirement="readOnly"/>
        <parameter ref="Reset" requirement="readWrite"/>
        <parameter ref="IPv4AddressNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}.IPv4Address.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="IPAddress" requirement="readWrite"/>
        <parameter ref="SubnetMask" requirement="readWrite"/>
        <parameter ref="AddressingType" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}.Stats." requirement="present">
        <parameter ref="BytesSent" requirement="readOnly"/>
        <parameter ref="BytesReceived" requirement="readOnly"/>
        <parameter ref="PacketsSent" requirement="readOnly"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
        <parameter ref="ErrorsSent" requirement="readOnly"/>
        <parameter ref="ErrorsReceived" requirement="readOnly"/>
        <parameter ref="UnicastPacketsSent" requirement="readOnly"/>
        <parameter ref="UnicastPacketsReceived" requirement="readOnly"/>
        <parameter ref="DiscardPacketsSent" requirement="readOnly"/>
        <parameter ref="DiscardPacketsReceived" requirement="readOnly"/>
        <parameter ref="MulticastPacketsSent" requirement="readOnly"/>
        <parameter ref="MulticastPacketsReceived" requirement="readOnly"/>
        <parameter ref="BroadcastPacketsSent" requirement="readOnly"/>
        <parameter ref="BroadcastPacketsReceived" requirement="readOnly"/>
        <parameter ref="UnknownProtoPacketsReceived" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPInterface:2" base="IPInterface:1"
        dmr:previousProfile="IPInterface:1" version="2.2">
      <description>
        This profile is IPv4 specific.
      </description>
      <object ref="Device.IP." requirement="present">
        <parameter ref="IPv4Enable" requirement="readWrite"/>
        <parameter ref="IPv4Status" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}." requirement="createDelete">
        <parameter ref="IPv4Enable" requirement="readWrite"/>
      </object>
      <object ref="Device.IP.Interface.{i}.IPv4Address.{i}."
          requirement="createDelete">
        <parameter ref="Status" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPv6Interface:1" dmr:previousProfile="IPInterface:2"
        version="2.2">
      <object ref="Device.IP." requirement="present">
        <parameter ref="IPv6Capable" requirement="readOnly"/>
        <parameter ref="IPv6Enable" requirement="readWrite"/>
        <parameter ref="IPv6Status" requirement="readOnly"/>
        <parameter ref="ULAPrefix" requirement="readWrite"/>
        <parameter ref="InterfaceNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="IPv6Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="LastChange" requirement="readOnly"/>
        <parameter ref="LowerLayers" requirement="readWrite"/>
        <parameter ref="Type" requirement="readOnly"/>
        <parameter ref="ULAEnable" requirement="readWrite"/>
        <parameter ref="Reset" requirement="readWrite"/>
        <parameter ref="IPv6AddressNumberOfEntries" requirement="readOnly"/>
        <parameter ref="IPv6PrefixNumberOfEntries" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="PPPInterface:1" version="2.0"
        dmr:previousProfile="IPv6Interface:1">
      <object ref="Device.PPP." requirement="present">
        <parameter ref="InterfaceNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.PPP.Interface.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="LastChange" requirement="readOnly"/>
        <parameter ref="LowerLayers" requirement="readWrite"/>
        <parameter ref="Reset" requirement="readWrite"/>
        <parameter ref="Username" requirement="readWrite"/>
        <parameter ref="Password" requirement="readWrite"/>
        <parameter ref="ConnectionTrigger" requirement="readWrite"/>
      </object>
      <object ref="Device.PPP.Interface.{i}.PPPoE." requirement="present">
        <parameter ref="SessionID" requirement="readOnly"/>
        <parameter ref="ACName" requirement="readWrite"/>
        <parameter ref="ServiceName" requirement="readWrite"/>
      </object>
      <object ref="Device.PPP.Interface.{i}.Stats." requirement="present">
        <parameter ref="BytesSent" requirement="readOnly"/>
        <parameter ref="BytesReceived" requirement="readOnly"/>
        <parameter ref="PacketsSent" requirement="readOnly"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
        <parameter ref="ErrorsSent" requirement="readOnly"/>
        <parameter ref="ErrorsReceived" requirement="readOnly"/>
        <parameter ref="UnicastPacketsSent" requirement="readOnly"/>
        <parameter ref="UnicastPacketsReceived" requirement="readOnly"/>
        <parameter ref="DiscardPacketsSent" requirement="readOnly"/>
        <parameter ref="DiscardPacketsReceived" requirement="readOnly"/>
        <parameter ref="MulticastPacketsSent" requirement="readOnly"/>
        <parameter ref="MulticastPacketsReceived" requirement="readOnly"/>
        <parameter ref="BroadcastPacketsSent" requirement="readOnly"/>
        <parameter ref="BroadcastPacketsReceived" requirement="readOnly"/>
        <parameter ref="UnknownProtoPacketsReceived" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="PPPInterface:2" base="PPPInterface:1"
        dmr:previousProfile="PPPInterface:1" version="2.2">
      <object ref="Device.PPP." requirement="present">
        <parameter ref="SupportedNCPs" requirement="readOnly"/>
      </object>
      <object ref="Device.PPP.Interface.{i}." requirement="createDelete">
        <parameter ref="IPv6CPEnable" requirement="readWrite">
          <description>
            REQUIRED only for IPv6 capable devices.
          </description>
        </parameter>
      </object>
      <object ref="Device.PPP.Interface.{i}.IPv6CP." requirement="present">
        <description>
          REQUIRED only for IPv6 capable devices.
        </description>
        <parameter ref="LocalInterfaceIdentifier" requirement="readOnly"/>
        <parameter ref="RemoteInterfaceIdentifier" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv4Client:1" version="2.0"
        dmr:previousProfile="IEEE8021xAuthentication:2">
      <object ref="Device.DHCPv4." requirement="present">
        <parameter ref="ClientNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv4.Client.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Renew" requirement="readWrite"/>
        <parameter ref="IPAddress" requirement="readOnly"/>
        <parameter ref="SubnetMask" requirement="readOnly"/>
        <parameter ref="IPRouters" requirement="readOnly"/>
        <parameter ref="DNSServers" requirement="readOnly"/>
        <parameter ref="LeaseTimeRemaining" requirement="readOnly"/>
        <parameter ref="DHCPServer" requirement="readOnly"/>
        <parameter ref="SentOptionNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ReqOptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv4.Client.{i}.SentOption.{i}."
          requirement="createDelete">
        <description>
          This table is REQUIRED to support sending of option 60 (Vendor Class
          Identifier) and option 77 (User Class Identifier) values.
        </description>
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Tag" requirement="readWrite"/>
        <parameter ref="Value" requirement="readWrite"/>
      </object>
      <object ref="Device.DHCPv4.Client.{i}.ReqOption.{i}."
          requirement="createDelete">
        <description>
          This table is REQUIRED to support requesting of option 60 (Vendor
          Class Identifier), option 61 (Client Identifier) and option 77 (User
          Class Identifier) values.
        </description>
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Order" requirement="readWrite"/>
        <parameter ref="Tag" requirement="readWrite"/>
        <parameter ref="Value" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv6Client:1"
        dmr:previousProfile="DHCPv4ServerClientInfo:1" version="2.2">
      <object ref="Device.DHCPv6." requirement="present">
        <parameter ref="ClientNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="DUID" requirement="readOnly"/>
        <parameter ref="RequestAddresses" requirement="readWrite"/>
        <parameter ref="RequestPrefixes" requirement="readWrite"/>
        <parameter ref="RapidCommit" requirement="readWrite"/>
        <parameter ref="Renew" requirement="readWrite"/>
        <parameter ref="SuggestedT1" requirement="readWrite"/>
        <parameter ref="SuggestedT2" requirement="readWrite"/>
        <parameter ref="SupportedOptions" requirement="readOnly"/>
        <parameter ref="RequestedOptions" requirement="readWrite"/>
        <parameter ref="SentOptionNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ReceivedOptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.SentOption.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Tag" requirement="readWrite"/>
        <parameter ref="Value" requirement="readWrite"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.ReceivedOption.{i}."
          requirement="present">
        <parameter ref="Tag" requirement="readOnly"/>
        <parameter ref="Value" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv6ClientServerIdentity:1" extends="DHCPv6Client:1"
        dmr:previousProfile="DHCPv6Client:1" version="2.2">
      <object ref="Device.DHCPv6.Client.{i}." requirement="createDelete">
        <parameter ref="ServerNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.Server.{i}." requirement="present">
        <parameter ref="SourceAddress" requirement="readOnly"/>
        <parameter ref="DUID" requirement="readOnly"/>
        <parameter ref="InformationRefreshTime" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.ReceivedOption.{i}."
          requirement="present">
        <parameter ref="Server" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="MQTTClientExtended:1" base="MQTTClientBase:1"
        dmr:previousProfile="MQTTClientSubscribe:1" version="2.10">
      <description>
        Adds client authentication, will handling and extends statistics
      </description>
      <object ref="Device.MQTT.Client.{i}." requirement="present">
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="ClientID" requirement="readWrite"/>
        <parameter ref="Username" requirement="readWrite"/>
        <parameter ref="Password" requirement="readWrite"/>
        <parameter ref="TransportProtocol" requirement="readWrite"/>
        <parameter ref="MessageRetryTime" requirement="readWrite"/>
        <parameter ref="ConnectRetryTime" requirement="readWrite"/>
        <parameter ref="ForceReconnect" requirement="readWrite"/>
        <parameter ref="WillEnable" requirement="readWrite"/>
        <parameter ref="WillTopic" requirement="readWrite"/>
        <parameter ref="WillValue" requirement="readWrite"/>
        <parameter ref="WillQoS" requirement="readWrite"/>
        <parameter ref="WillRetain" requirement="readWrite"/>
      </object>
      <object ref="Device.MQTT.Client.{i}.Stats." requirement="present">
        <parameter ref="LastPublishMessageSent" requirement="readOnly"/>
        <parameter ref="LastPublishMessageReceived" requirement="readOnly"/>
        <parameter ref="PublishSent" requirement="readOnly"/>
        <parameter ref="PublishReceived" requirement="readOnly"/>
        <parameter ref="SubscribeSent" requirement="readOnly"/>
        <parameter ref="UnSubscribeSent" requirement="readOnly"/>
        <parameter ref="PublishErrors" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="HPNAQoS:1" version="2.0" dmr:previousProfile="HPNA:1">
      <object ref="Device.HPNA.Interface.{i}.QoS." requirement="present">
        <parameter ref="FlowSpecNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}."
          requirement="createDelete">
        <parameter ref="FlowType" requirement="readWrite"/>
        <parameter ref="Priority" requirement="readWrite"/>
        <parameter ref="Latency" requirement="readWrite"/>
        <parameter ref="Jitter" requirement="readWrite"/>
        <parameter ref="PacketSize" requirement="readWrite"/>
        <parameter ref="MinRate" requirement="readWrite"/>
        <parameter ref="AvgRate" requirement="readWrite"/>
        <parameter ref="MaxRate" requirement="readWrite"/>
        <parameter ref="PER" requirement="readWrite"/>
        <parameter ref="Timeout" requirement="readWrite"/>
      </object>
      <object
          ref="Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}."
          requirement="present">
        <parameter ref="FlowSpec" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="HeartbeatPolicy:1" version="2.12">
      <description>
        Note that support for this profile implies support for the requirements
        of {{bibref|TR-069|Annex O}}.
      </description>
      <object ref="Device.ManagementServer.HeartbeatPolicy."
          requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="ReportingInterval" requirement="readWrite"/>
        <parameter ref="InitiationTime" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="BulkDataFileTransfer:1" extends="BulkDataColl:1"
        version="2.5">
      <object ref="Device.BulkData.Profile.{i}." requirement="createDelete">
        <parameter ref="FileTransferURL" requirement="readWrite"/>
        <parameter ref="FileTransferUsername" requirement="readWrite"/>
        <parameter ref="FileTransferPassword" requirement="readWrite"/>
        <parameter ref="ControlFileFormat" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="BulkDataStreaming:1" extends="BulkDataColl:1" version="2.5">
      <object ref="Device.BulkData.Profile.{i}." requirement="createDelete">
        <parameter ref="StreamingHost" requirement="readWrite"/>
        <parameter ref="StreamingPort" requirement="readWrite"/>
        <parameter ref="StreamingSessionID" requirement="readWrite"/>
      </object>
    </profile>
  </model>
</dm:document>
