<?xml version="1.0" encoding="UTF-8"?>
<!--
    Component objects for CWMP: TR-069 Device:1.4 and
    InternetGatewayDevice:1.6 Root Object definitions
    
    Notice:
    The Broadband Forum is a non-profit corporation organized to create
    guidelines for broadband network system development and deployment. This
    Broadband Forum XML Document has been approved by members of the Forum.
    This Broadband Forum XML Document is not binding on the Broadband Forum,
    any of its members, or any developer or service provider. This Broadband
    Forum XML Document is subject to change, but only with approval of members
    of the Forum.  This XML Document is copyrighted by the Broadband Forum,
    and all rights are reserved.  Portions of this XML Document may be
    copyrighted by Broadband Forum members.
    
    This Broadband Forum XML Document is provided AS IS, WITH ALL FAULTS.
    ANY PERSON HOLDING A COPYRIGHT IN THIS BROADBAND FORUM XML DOCUMENT,
    OR ANY PORTION THEREOF, DISCLAIMS TO THE FULLEST EXTENT PERMITTED BY
    LAW ANY REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING, BUT
    NOT LIMITED TO, ANY WARRANTY:
    
    (A) OF ACCURACY, COMPLETENESS, MERCHANTABILITY, FITNESS FOR A PARTICULAR
    PURPOSE, NON-INFRINGEMENT, OR TITLE;
    (B) THAT THE CONTENTS OF THIS BROADBAND FORUM XML DOCUMENT ARE SUITABLE
    FOR ANY PURPOSE, EVEN IF THAT PURPOSE IS KNOWN TO THE COPYRIGHT HOLDER;
    (C) THAT THE IMPLEMENTATION OF THE CONTENTS OF THE DOCUMENTATION WILL NOT
    INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER
    RIGHTS.
    
    By using this Broadband Forum XML Document, users acknowledge that
    implementation may require licenses to patents.  The Broadband Forum
    encourages but does not require its members to identify such patents.
    For a list of declarations made by Broadband Forum member companies,
    please see http://www.broadband-forum.org.  No assurance is given that
    licenses to patents necessary to implement this XML Document will be
    available for license at all or on reasonable and non-discriminatory terms.
    
    ANY PERSON HOLDING A COPYRIGHT IN THIS BROADBAND FORUM XML DOCUMENT, OR
    ANY PORTION THEREOF, DISCLAIMS TO THE FULLEST EXTENT PERMITTED BY LAW
    (A) ANY LIABILITY (INCLUDING DIRECT, INDIRECT, SPECIAL, OR CONSEQUENTIAL
    DAMAGES UNDER ANY LEGAL THEORY) ARISING FROM OR RELATED TO THE USE OF OR
    RELIANCE UPON THIS XML DOCUMENT; AND (B) ANY OBLIGATION TO UPDATE OR
    CORRECT THIS XML DOCUMENT.
    
    Broadband Forum XML Documents may be copied, downloaded, stored on a
    server or otherwise re-distributed in their entirety only, and may not be
    modified without the advance written permission of the Broadband Forum.
    
    The text of this notice must be included in all copies.
    
    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.
    
    Version History:
    * March 2009: tr-157-1-0-0.xml, corresponds to TR-157 Issue 1, Section 4 
       (Data Model Definition) and Section 5 (Profile Definition).
    * September 2009: tr-157-1-1-0.xml, corresponds to TR-157 Issue 1 
       Amendment 1, Section 4 (Data Model Definition) and Section 5 (Profile 
       Definition).
-->

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


    <import file="tr-157-1-0.xml" spec="urn:broadband-forum-org:tr-157-1-0">
        <component name="DI_MemoryStatus"/>
        <component name="DI_ProcessStatus"/>
        <component name="DI_TemperatureStatus"/>
        <component name="DI_NetworkProperties"/>
        <component name="MS_AutonomousTransferCompletePolicy"/>
        <component name="UI_RemoteAccess"/>
        <component name="UI_LocalDisplay"/>
        <component name="User"/>
        <component name="UPnP"/>
        <component name="DLNACapabilities"/>
        <component name="SmartCardReader"/>
        <component name="SelfTestDiag"/>
        <component name="NSLookupDiag"/>
        <component name="SimpleFirewall"/>
        <component name="USBHosts"/>
        <component name="PeriodicStatistics"/>
        <component name="DownloadAvailability"/>
        <model name="Device:1.3"/>
        <model name="InternetGatewayDevice:1.5"/>
    </import>
    

    <bibliography>
        <reference id="TR-106a3">
            <name>TR-106 Amendment 3</name>
            <title>Data Model Template for TR-069 Enabled Devices</title>
            <organization>The Broadband Forum</organization>
            <date>September 2009</date>
        </reference>
    </bibliography>
    
    
    <component name="DI_SupportedDataModel">
        <description>Supported Data Model Component.  A device's entire supported data model MUST be described in the Root Object's DeviceInfo.  Therefore, this Component MUST NOT be included in a Service Object.</description>
        <object base="DeviceInfo." access="readOnly" minEntries="1" maxEntries="1">
            <parameter name="SupportedDataModelNumberOfEntries" access="readOnly">
                <description>Number of entries in the SupportedDataModel table.</description>
                <syntax><unsignedInt/></syntax>
            </parameter>
        </object>
        
        <object name="DeviceInfo.SupportedDataModel.{i}." access="readOnly" minEntries="0" maxEntries="unbounded" 
                numEntriesParameter="SupportedDataModelNumberOfEntries">
            <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>
                <parameter ref="URL"/>
            </uniqueKey>
            
            <parameter name="URL" access="readOnly">
                <description>
                    URL ({{bibref|RFC3986}}) that describes some or all of the device's Current 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-106a3|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, if the same XML file is to be used for multiple CPE, this strongly suggests that the XML file referenced by this URL should ''never'' change.
                    The URL MAY permit the XML file to be accessed at run-time, in which case, the XML file MAY be located within the CPE.
                    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><string><size maxLength="256"/></string></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:1.3'' Root Object, the value of this parameter would be ''urn:broadband-forum-org:tr-157-1-0-0'', because TR-157 defines ''Device:1.3''.  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>
        
        <profile name="SupportedDataModel:1">
            <object ref="DeviceInfo." requirement="present">
                <parameter ref="SupportedDataModelNumberOfEntries" requirement="readOnly"/>
            </object>
            <object ref="DeviceInfo.SupportedDataModel.{i}." requirement="present">
                <parameter ref="URL" requirement="readOnly"/>
                <parameter ref="URN" requirement="readOnly"/>
                <parameter ref="Features" requirement="readOnly"/>
            </object>
        </profile>
    </component>
    
    
    <model name="Device:1.4" base="Device:1.3">
        <object base="Device." access="readOnly" minEntries="1" maxEntries="1">
            <parameter base="DeviceSummary" access="readOnly" forcedInform="true" status="deprecated">
                <description action="append">
                    This parameter is DEPRECATED because {{object|DeviceInfo.SupportedDataModel}} and associated Device Type XML documents (DT Instances) provide a more granular and scalable way of describing the device's data model.
                    Therefore its value MAY be {{empty}} if (and only if) {{object|DeviceInfo.SupportedDataModel}} is supported.
                </description>
            </parameter>
        </object>
        
        <component path="Device." ref="DI_SupportedDataModel"/>
    </model>

    <model name="InternetGatewayDevice:1.6" base="InternetGatewayDevice:1.5">
        <object base="InternetGatewayDevice." access="readOnly" minEntries="1" maxEntries="1">
            <parameter base="DeviceSummary" access="readOnly" forcedInform="true" status="deprecated">
                <description action="append">
                    This parameter is DEPRECATED because {{object|DeviceInfo.SupportedDataModel}} and associated Device Type XML documents (DT Instances) provide a more granular and scalable way of describing the device's data model.
                    Therefore its value MAY be {{empty}} if (and only if) {{object|DeviceInfo.SupportedDataModel}} is supported.
                </description>
            </parameter>
        </object>
        
        <component path="InternetGatewayDevice." ref="DI_SupportedDataModel"/>
    </model>
    
</dm:document>

