<?xml version="1.0" encoding="UTF-8"?>
<!--
  Component Objects for CWMP
  
  Copyright (c) 2009-2017, Broadband Forum
  
  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.
  
  Summary:
    This document defines objects for use in CWMP managed devices.  The objects
    may exist at the top level of a hierarchy, or in some cases within an 
    existing object.  The objects are intended for use in all CWMP Root 
    objects. The objects define varying functionality, diagnostics, etc. that 
    are agnostic to the type of device.

  Issue History (Filename: Approval Date: Publication Date: Changes):
    * tr-157-1-0-0.xml: March 2009: 
      - corresponds to TR-157 Issue 1, Section 4 
        (Data Model Definition) and Section 5 (Profile Definition)
    * tr-157-1-1-0.xml: September 2009: 
      - corresponds to TR-157 Issue 1 Amendment 1, Section 4 
        (Data Model Definition) and Section 5 (Profile Definition)
    * tr-157-1-2-0.xml: May 2010: 
      - corresponds to TR-157 Issue 1 Amendment 2
    * tr-157-1-3-0.xml: December 2010: 
      - corresponds to TR-157 Issue 1 Amendment 3
    * tr-157-1-4-0.xml: September 2011: 
      - updates for Alias-Based Addressing and Proxy Management
    * tr-157-1-5-0.xml: December 2011: 
      - updates related to 3GPP LTE and 3GPP2 cdma2000 (TR-196 Issue 2)
    * tr-157-1-6-0.xml: May 2012: 
      - updates for Bulk Data Collection (TR-232)
    * tr-157-1-7-0.xml: November 2012: 
      - new components for UPnP and DnsSd Discovery updates to 
        InternetGatewayDevice.DeviceInfo.SupportedDataModel.{i}.URL and 
        Proxy objects for Discovery and Proxy References
    * tr-157-1-8-0.xml: November 2013: 
      - updates for XMPP, HTTP Compression, Lightweight Notifications,
        and the ManagementServer Standby Policy
    * tr-157-1-9-0.xml: 8 September 2014: 17 September 2014:
        - Added Inform Parameters table to ManagementServer 
        - Added HTIP Component to DeviceInfo containing HTIP related parameters
        - Updated the UPnP component for HTIP parameters
    
   
  Editors:
    * John Blackford, Pace
    
  BroadbandHome™ Working Group Chairs:
    * John Blackford, Pace
    * Jason Walls, QACafe
-->

<dm:document xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-5" 
             xmlns:dmr="urn:broadband-forum-org:cwmp:datamodel-report-0-1" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-5
                                   http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-5.xsd
                                 urn:broadband-forum-org:cwmp:datamodel-report-0-1
                                   http://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
             spec="urn:broadband-forum-org:tr-157-1-9-0"  file="tr-157-1-9-0.xml">

  <description>
    {{docname|Component Objects for CWMP}}
    {{appdate|8 September 2014}}
    {{trname|TR-157a9}}
    Added Inform Parameters table to ManagementServer 
    Added HTIP Component to DeviceInfo containing HTIP related parameters
    Updated the UPnP component for HTIP parameters
  </description>

  <import file="tr-069-1-1-biblio.xml" spec="urn:broadband-forum-org:tr-069-1-1"/>
  
  <import file="tr-106-1-0-types.xml">
    <dataType name="Alias"/>
  </import>
  
  <import file="tr-157-1-8.xml" spec="urn:broadband-forum-org:tr-157-1-8">
    <component name="BulkDataCollection"/>
    <component name="DI_Location"/>
    <component name="DI_MemoryStatus"/>
    <component name="DI_NetworkProperties"/>
    <component name="DI_Processors"/>
    <component name="DI_ProcessStatus"/>
    <component name="DI_ProxierInfo"/>
    <component name="DI_SupportedDataModel"/>
    <component name="DI_TemperatureStatus"/>
    <component name="DI_VendorLogFiles"/>
    <component name="DLNACapabilities"/>
    <component name="DNS_SD"/>
    <component name="DownloadAvailability"/>
    <component name="FaultManagement"/>
    <component name="HTTPCompression"/>
    <component name="LwNotif"/>
    <component name="MS_AutonomousTransferCompletePolicy"/>
    <component name="MS_DUStateChangeCompletePolicy"/>
    <component name="MS_EmbeddedDevice"/>
    <component name="MS_StandbyPolicy"/>
    <component name="MS_VirtualDevice"/>
    <component name="NSLookupDiag"/>
    <component name="PeriodicStatistics"/>
    <component name="Security"/>
    <component name="SelfTestDiag"/>
    <component name="SimpleFirewall"/>
    <component name="SmartCardReader"/>
    <component name="SoftwareModules"/>
    <component name="UI_LocalDisplay"/>
    <component name="USBHosts"/>
    <component name="USBHosts_Device2"/>
    <component name="User"/>
    <component name="UI_RemoteAccess"/>
    <component name="XMPP"/>
    <component name="XMPPConnReq"/>

    <!-- Modified components -->
    <component name="_UPnP" ref="UPnP"/>
  </import>

  <!-- New component: DI_HTIP component -->
  <component name="DI_HTIP">
    <object base="DeviceInfo." access="readOnly" minEntries="1" maxEntries="1">
      <parameter name="DeviceCategory" access="readOnly" dmr:previousParameter="">
        <description>
          Each list item is a device category (e.g. "AV_TV" and "AV_Recorder"), or the value is {{empty}} if no such element is provided by the device.
          Note: It is assumed that this list might be used for HTIP (Home-network Topology Identifying Protocol) {{bibref|JJ-300.00}} and {{bibref|G.9973}}. Standard HTIP device categories are defined in {{bibref|JJ-300.01}}. In this case, the maximum length of the list is 127 and of each item is 31, and any non-HTIP device categories SHOULD NOT conflict with standard HTIP device categories.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>
      <parameter name="ModelNumber" access="readOnly" dmr:previousParameter="ModelName">
        <description>
          The model number of the device (human readable string), or {{empty}} if no model number is provided by the device. 
          Note: It is assumed that this string might be used for HTIP (Home-network Topology Identifying Protocol) {{bibref|JJ-300.00}} and {{bibref|G.9973}}. In this case, the maximum length of the string is 31.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
    </object>
  </component>
  
  <!--New component: MS_InformParameters component-->
  <component name="MS_InformParameters">
    <object base="ManagementServer." access="readOnly" minEntries="1" maxEntries="1">
      <parameter name="InformParameterNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax><unsignedInt></unsignedInt></syntax>
      </parameter>
    </object>
    
    <object name="ManagementServer.InformParameter.{i}." access="readWrite" minEntries="0" maxEntries="unbounded"
            enableParameter="Enable" numEntriesParameter="InformParameterNumberOfEntries">
      <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=""></default>
        </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=""></default>
        </syntax>
      </parameter>
    </object>
    
    <profile name="InformParameters:1">
      <object ref="ManagementServer." requirement="present">
        <parameter ref="InformParameterNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="ManagementServer.InformParameter.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="ParameterName" requirement="readWrite"/>
        <parameter ref="EventList" requirement="readWrite"/>
      </object>
    </profile>
  </component>
  

  <!-- Update UPnP component for HTIP -->
  <component name="UPnPDiffs">
    <object base="UPnP.Description.DeviceInstance.{i}." access="readOnly" minEntries="0" maxEntries="unbounded" numEntriesParameter="DeviceInstanceNumberOfEntries">
      <parameter name="DeviceCategory" access="readOnly" dmr:previousParameter="FriendlyName">
        <description>
          Each list item is the value of an element in the Device Description Document for this {{object}} that indicates a device category (e.g. "AV_TV" and "AV_Recorder"), or the value is {{empty}} if no such element is provided by the device.
          Note: It is assumed that the ''htip:X_DeviceCategory'' Device Description Document element is used for HTIP (Home-network Topology Identifying Protocol) {{bibref|JJ-300.00}} and {{bibref|G.9973}}. Standard HTIP device categories are defined in {{bibref|JJ-300.01}}. In this case, the maximum length of the list is 127 and of each item is 31, and any non-HTIP device categories SHOULD NOT conflict with standard HTIP device categories.
          Note: {{param}} is different from {{param|DeviceType}} and is included here for the purpose of HTIP usage.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>
      <parameter name="ManufacturerOUI" access="readOnly" dmr:previousParameter="Manufacturer">
        <description>
          The value of an element in the Device Description Document for this {{object}} that indicates the manufacturer OUI if this value is provided by the device; or {{empty}} if this value is not provided by the device.
          {{pattern}}
          Note: It is assumed that the ''htip:X_ManufacturerOUI'' element is used for HTIP (Home-network Topology Identifying Protocol) {{bibref|JJ-300.00}} and {{bibref|G.9973}}. 
        </description>
        <syntax>
          <string>
            <size minLength="0" maxLength="6"/>
            <pattern value=""/>
            <pattern value="[0-9A-F]{6}"/>
          </string>
        </syntax>
      </parameter>
    </object>
  </component>

  <component name="UPnP">
    <component ref="_UPnP"/>
    <component ref="UPnPDiffs"/>
  </component>

</dm:document>
