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

  Copyright (c) 2010-2021, 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.

  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-8"
    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-8
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-1-8.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-15-0-etsim2m"
    file="tr-181-2-15-0-etsim2m.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="_AliasCommon"/>
  </import>

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

  <component name="ETSIM2M">

    <object name="Device.ETSIM2M." access="readOnly" minEntries="1"
        maxEntries="1" version="2.6">
      <description>
        The {{object}} object represents the management object for the Remote
        Entity Functions (REM) functions defined in the M2M Functional
        Architecture {{bibref|ETSIM2MFA}}.
      </description>

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

    <object name="Device.ETSIM2M.SCL.{i}." access="readWrite"
        numEntriesParameter="SCLNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.6">
      <description>
        This object represents an instance of a Service Capability Layer (SCL)
        for a M2M device or gateway.

        The {{object}} MAY be maintained by the ACS or by the CPE.

        When the {{object}} provides the administration of an SCL that is
        represented as a {{object|.SoftwareModules.ExecutionUnit}} the
        {{object}} is maintained in the
        {{param|.SoftwareModules.ExecutionUnit.{i}.References}} parameter.

        Section 5.1.2 of the M2M Functional Architecture {{bibref|ETSIM2MFA}}
        describes the high level event flows for SCL registration.

        Section 9.3.2.6.2 of the M2M Functional Architecture
        {{bibref|ETSIM2MFA}} describes the creation/registration of SCLs.

        Section 9.3.2.6.4 of the M2M Functional Architecture
        {{bibref|ETSIM2MFA}} describes the update/re-registration of SCLs.

        Section 9.3.2.6.5 of the M2M Functional Architecture
        {{bibref|ETSIM2MFA}} describes the deletion/deregistration of SCLs.

        {{keys}}
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="AnnouncedToSCLList" access="readWrite">
        <description>
          {{list}} The list represents an unordered set of URIs
          {{bibref|RFC3986}}.

          A list item is a URI string that represents a SCL to which the this
          {{object}} will announce original (local) resources.

          The AnnouncedToSCL has an interest in the discovery of the local
          resource. Section 9.2.1.14 Announced Resource of the M2M Functional
          Architecture {{bibref|ETSIM2MFA}} provides a description of this
          behavior of an Announced Resource.

          Section 9.3.2.28 of the M2M Functional Architecture
          {{bibref|ETSIM2MFA}} and Section 10.3.2.7 of the M2M mIa, dIa and mId
          Interfaces {{bibref|ETSIM2MInterfaces}} describes the process of
          announcing and deannouncing of resources within a SCL.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>

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

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

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

    <object name="Device.ETSIM2M.SCL.{i}.Discovery." access="readOnly"
        minEntries="1" maxEntries="1" version="2.6">
      <description>
        This object is represents the administration properties used when a
        NSCL requests discovery of resources within this {{object|##.SCL}}
        instance.

        Section 9.3.2.27 of the M2M Functional Architecture
        {{bibref|ETSIM2MFA}} describes the process of discovery of resources
        within a SCL.
      </description>

      <parameter name="MaxNumberOfDiscovRecords" access="readWrite">
        <description>
          The maximum number of URIs {{bibref|RFC3986}} for discovered
          resources contained in a discovery result.

          This parameter and the {{param|MaxSizeOfDiscovAnswer}} parameter are
          mutually exclusive in that a result can be limited due to the bounds
          of either parameter.

          A value of 0 indicates that the SCL does not have a limit for this
          parameter.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxSizeOfDiscovAnswer" access="readWrite">
        <description>
          The maximum size in bytes of the Discovery Answer.

          This parameter and the {{param|MaxNumberOfDiscovRecords}} parameter
          are mutually exclusive in that a result can be limited due to the
          bounds of either parameter.

          A value of 0 indicates that the SCL does not have a limit for this
          parameter.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ETSIM2M.SCL.{i}.Reregistration." access="readOnly"
        minEntries="1" maxEntries="1" version="2.6">
      <description>
        This object represents the properties and status necessary for a SCL to
        reregister with one or more NSCLs.
      </description>

      <parameter name="RegTargetNSCLList" access="readWrite">
        <description>
          {{list}} The list represents a priority ordered set of URIs
          {{bibref|RFC3986}}. The item that is first in the list has the
          highest priority.

          A list item is a URI {{bibref|RFC3986}} string that represents a NSCL
          that this {{object|##.SCL}} instance can use in order to attempt
          registration.

          When modified the contents of this parameter replace the {{param}}
          received during the bootstrap procedure.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>

      <parameter name="RegSearchStrings" access="readWrite">
        <description>
          {{list}} The list represents the string tokens used as keys when
          searching for this {{object|##.SCL}} instance.

          Sections 9.2.3.6.2 and 9.2.3.6.4 of the M2M Functional Architecture
          {{bibref|ETSIM2MFA}} describe the usage for this parameter.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>

      <parameter name="RegAccessRightID" access="readWrite">
        <description>
          URI {{bibref|RFC3986}} that represents the identifier of the access
          right resource. The value of this parameter is maintained by the NSCL
          and used by the SCL as a default access right identifier for
          re-registration to NSCLs.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="RegExpirationDuration" access="readWrite">
        <description>
          The duration, in {{units}}, that the SCL will use in its next
          re-registration attempt. Any negative value represents an infinite
          duration.
        </description>
        <syntax>
          <int>
            <units value="seconds"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="Reregistration" access="readWrite">
        <description>
          {{command}} When set to {{true}}, triggers an immediate
          re-registration action where the SCL re-registers with the SCLs in
          the {{param|RegTargetNSCLList}} .
        </description>
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus."
        access="readOnly" minEntries="1" maxEntries="1" version="2.6">
      <description>
        This object represents the status of the Reregistration action.
      </description>

      <parameter name="Progress" access="readOnly" activeNotify="canDeny">
        <description>
          The progress, in {{units}}, of the Reregistration action. The
          progress is measured from 0-100%. A value of 0 indicates that the
          action has not started. A value of 100 indicates that the action has
          completed.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="100"/>
            <units value="percent"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="FinalStatus" access="readOnly">
        <description>
          The completion status of the Reregistration operation. Enumeration
          of:

          {{enum}}
        </description>
        <syntax>
          <string>
            <enumeration value="SUCCESS"/>
            <enumeration value="FAILURE"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}." access="readWrite"
        numEntriesParameter="SAFPolicySetNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.6">
      <description>
        This object describes the parameters necessary to administer the
        store-and-forward (SAF) handling policies applied to requests to access
        remotely hosted resources.

        Policies are described by instances of {{object}}. Which instances of
        {{object}} are used by the SCL is determined by the
        {{param|PolicyScope}} parameter.

        Section 9.3.1.5 of the M2M Functional Architecture {{bibref|ETSIM2MFA}}
        and Section 10.3.1.2.2 of the M2M mIa, dIa and mId Interfaces
        {{bibref|ETSIM2MInterfaces}} describe the behavior for SAF processing.

        There is at most one {{object}} instance with the {{param|PolicyScope}}
        containing a specific application id (APP-ID) URI value within the
        list.

        There is exactly one {{object}} instance with a {{param|PolicyScope}}
        value of "default".
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="PolicyScope" access="readWrite">
        <description>
          The parameter defines the scope of the policies contained in this
          instance of a {{object|#.SAFPolicySet}}.

          The parameter value is:

          *a list of unordered set of URIs {{bibref|RFC3986}} that represents
           an M2M application id (APP-ID)

          *the value of "default"

          *{{empty}}

          When this parameter is set to a list of application id (APP-ID) URIs
          {{bibref|RFC3986}}, the scope indicates that the policies are
          applicable to requests coming from any specific application on that
          list.

          When this parameter is set to a string with the value "default", the
          scope indicates that the policies are the default policies for this
          {{object|##.SCL}} instance.

          When this parameter is set to {{empty}}, the value represents an
          unknown {{object|#.SAFPolicySet}} and the {{object|#.SAFPolicySet}}
          is not to be used.
        </description>
        <syntax>
          <list/>
          <string/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

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

    <object name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}."
        access="readWrite" numEntriesParameter="ANPPolicyNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.6">
      <description>
        This table contains the SAF-handling policies which are controlled by
        the Access Network Provider(s).

        {{keys}}
      </description>
      <uniqueKey>
        <parameter ref="ANName"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="ANName" access="readWrite">
        <description>
          This parameter is the name of the access network provider and used to
          determine for which access network the policies defined in the
          {{object|#.ANPPolicy}} table will apply.
        </description>
        <syntax>
          <string/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

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

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

    <object
        name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}."
        access="readWrite" numEntriesParameter="BlockPeriodNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        dmr:noUniqueKeys="true" version="2.6">
      <description>
        This table contains a list of block periods for a
        {{object|##.ANPPolicy}}.

        A block period defines how long the device will wait before re-trying
        to establish connectivity via the access network after the previous
        attempt has failed.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="FailedAttempts"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="FailedAttempts" access="readWrite">
        <description>
          Number of consecutively failed access attempts for which the
          {{param|BlockDuration}} will be used to block the next access
          attempt.

          The SCL will apply the {{object}} entry with the largest number of
          consecutive failed attempts that is smaller or equal to the actual
          number of consecutive failed attempts.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="BlockDuration" access="readWrite">
        <description>
          The duration, in {{units}}, to which to block further access
          attempts.
        </description>
        <syntax>
          <int>
            <units value="seconds"/>
          </int>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
    </object>

    <object
        name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}."
        access="readWrite" numEntriesParameter="RequestCategoryNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.6">
      <description>
        This table contains the Request Category (RCAT) policy items for
        defining when it is appropriate to use the access network for
        processing requests.
      </description>
      <uniqueKey>
        <parameter ref="RCAT"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="RCAT" access="readWrite">
        <description>
          An RCAT is a string that represents a request category used for
          policy enforcement.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

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

    <object
        name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}."
        access="readWrite" numEntriesParameter="ScheduleNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.6">
      <description>
        This table contains the schedules that define when it is appropriate to
        use the access network for processing requests for the specified value
        of the {{param|#.RCAT}}.

        The combination of all instances of the {{object|AbsTimeSpan}} along
        with the {{param|Schedules}} parameter makes up the complete schedule
        for this instance of a {{object}}.

        The {{param|Schedules}} parameter defines a recurrence of the schedule.
        If instances of {{object|AbsTimeSpan}} exist, these instances places
        constraints on the schedule recurrence.

        If the value of the {{param|Schedules}} parameter is {{empty}}, at
        least one enabled instance of {{object|AbsTimeSpan}} MUST exist.

        Processing behavior for the use of RCAT Schedules is defined in section
        10.3.1.2.2 of the M2M mIa, dIa and mId Interfaces
        {{bibref|ETSIM2MInterfaces}} document.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="Schedules" access="readWrite">
        <description>
          The list is a set of schedule strings.

          A schedule string is formatted according to the date and time fields
          defined CRONTAB input file definition in {{bibref|POSIXBase}}.

          The {{param}} parameter is used to set the recurrence of the
          schedule.

          The timezone used for this parameter is dependent upon the existence
          of instances of {{object|AbsTimeSpan}} for this {{object}}. If
          instances of {{object|AbsTimeSpan}} exist, then the timezone of the
          {{object|AbsTimeSpan}} is used otherwise the UTC timezone is used for
          this {{param}} parameter.

          Note the command field is not used in this definition and any
          whitespace or comma characters within a Schedule string MUST be
          escaped using percent as defined in {{bibref|TR-106|section 3.2.3}}

          Example of CRONTAB string:

          *"* 0-6 * * 1-5" would mean every minute for the period from 0:00h to
           6:00h (inclusive) on any week day (Monday through Friday) and would
           be represented as "*%200-6%20*%20*%201-5"

          *"*/15 22-23,0-4 * * 1-5" would mean every 15 minutes for the period
           from 22:00h to 04:00h on any week day (Monday through Friday) and
           would be represented as "*/15%2022-23%2C0-4%20*%20*%201-5"
        </description>
        <syntax>
          <list/>
          <string/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

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

    <object
        name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}."
        access="readWrite" numEntriesParameter="AbsTimeSpanNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        dmr:noUniqueKeys="true" version="2.6">
      <description>
        This object defines an instance of a time span used for determining an
        RCAT schedule.

        An instance of the {{object}} represents the time span in which the
        schedule recurrence defined in {{param|#.Schedules}} is constrained.

        {{object}} instances with unknown values for the {{param|StartTime}} or
        {{param|EndTime}} are ignored.

        All instances of the {{object}} within this {{object|##.Schedule}} MUST
        utilize the same time zone.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="StartTime" access="readWrite">
        <description>
          Date and time that represents the start of the time span.

          The value 0001-01-01T00:00:00Z represents an unknown value.

          The device MUST reject requests to set the {{param}} value greater
          than the {{param|EndTime}} value.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="0001-01-01T00:00:00Z"/>
        </syntax>
      </parameter>

      <parameter name="EndTime" access="readWrite">
        <description>
          Date and time that represents the end of the time span.

          The value 9999-12-31T23:59:59Z represents an infinite time span from
          the start time.

          The value 0001-01-01T00:00:00Z represents an unknown value.

          The device MUST reject requests to set the {{param}} value less than
          or equal the {{param|StartTime}} value.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="0001-01-01T00:00:00Z"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy."
        access="readOnly" minEntries="1" maxEntries="1" version="2.6">
      <description>
        This object maintains the SAF handling policies' properties that are
        controlled by the M2M service provider for a request.
      </description>

      <parameter name="DefaultRCATValue" access="readWrite">
        <description>
          The default RCAT value to use for requests to remotely hosted
          resources during SAF-handling when no RCAT value was specified in the
          request.
        </description>
        <syntax>
          <string/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

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

    <object
        name="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}."
        access="readWrite" numEntriesParameter="RequestCategoryNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.6">
      <description>
        This object maintains a list of properties to be used for forwarding
        requests with a specified {{param|RCAT}}.

        Processing behavior for the use of M2M Service Provider policies is
        defined in section 10.3.1.2.2.1 of the M2M mIa, dIa and mId Interfaces
        {{bibref|ETSIM2MInterfaces}} document.
      </description>
      <uniqueKey>
        <parameter ref="RCAT"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Administratively enables or disables this instance.
        </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="RCAT" access="readWrite">
        <description>
          An RCAT is a string that represents a request category used for
          policy enforcement.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="TolerableDelay" access="readWrite">
        <description>
          The tolerable duration, in {{units}}, that a request of the given
          RCAT category can be pending in SAF handling when a request from an
          M2M Application does not specify a tolerable delay.

          A value of -1 represents an infinite duration.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
            <units value="seconds"/>
          </int>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="Thresh" access="readWrite">
        <description>
          The threshold of maximum number of pending requests permitted to be
          held for a specified RCAT.

          A value of 0 indicates that the request should be transmitted
          immediately.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="Mem" access="readWrite">
        <description>
          This parameter defines the maximum size of the request queue for
          pending requests permitted to be held for a specified RCAT.

          The format of the string is an integer with an appended memory unit
          (B - Bytes, K - 1024 Bytes, M - 1048576 Bytes, G -1073741824, T -
          1099511627776 Bytes).

          When the value is {{empty}} the memory threshold criteria for the
          associated RCATList will be ignored in SAF handling.

          {{pattern}}
        </description>
        <syntax>
          <string>
            <pattern value="([0-9]{1,15}?[BKMGT])"/>
            <pattern value="">
              <description>{{empty}}</description>
            </pattern>
          </string>
        </syntax>
      </parameter>

      <parameter name="RankedANList" access="readWrite">
        <description>
          The list is a prioritized set of Access Networks where the preference
          of using an Access Network is based on order of the list items with
          the lowest order list item as the most preferred Access Network.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetParent="##.ANPPolicy."
                targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}."
        access="readOnly" numEntriesParameter="AreaNwkInstanceNumberOfEntries"
        minEntries="0" maxEntries="unbounded" dmr:fixedObject="true"
        version="2.6">
      <description>
        The M2M Area Network information provides administration capabilities
        for remote management (REM) of M2M Devices (D', d) that are attached to
        this {{object|##.SCL}} instance.

        This object provides the administration of the properties needed by the
        SCL to remotely manage M2M Devices within a specific type of M2M Area
        network as defined by {{param|AreaNwkType}}.

        Multiple instances of {{object}} with the same {{param|AreaNwkType}} is
        permitted.

        Section 5.3.5 of the M2M Functional Architecture {{bibref|ETSIM2MFA}}
        describes the REM functionality expected of a SCL for an M2M Device.
      </description>
      <uniqueKey>
        <parameter ref="ID"/>
      </uniqueKey>

      <parameter name="ID" access="readOnly">
        <description>
          URI {{bibref|RFC3986}} that represents the identifier of the
          instance.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="AreaNwkType" access="readOnly">
        <description>
          Devices (D' and d) that connect to an SCL are said to be "attached
          devices" and are organized by M2M Area Networks within the
          {{object|##.SCL}} instance. The {{param}} is an implementation-chosen
          string that indicates the type of M2M Area Network.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="ListOfDevices" access="readOnly">
        <description>
          {{list}} {{reference}}

          The list represents the M2M Devices (D', d) that are attached to this
          {{object|##.SCL}} instance that are within this {{object}} instance.
          The list does not contain an instance for this CPE.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong"
                targetParent="#.AreaNwkDeviceInfoInstance." targetType="row"/>
          </string>
        </syntax>
      </parameter>

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

    <object name="Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}."
        access="readOnly" numEntriesParameter="PropertyNumberOfEntries"
        minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true"
        version="2.6">
      <description>
        This object contains an instance of a property extension (name value
        pair) for this {{object|##.AreaNwkInstance}} instance.

        For example, if the {{param|#.AreaNwkType}} is ZigBee the
        {{object|##.AreaNwkInstance}} will contain ZigBee specific parameters
        that have not been modeled for the M2M Area network.

        At a minimum, a property instance MUST exist that defines an attribute
        that describes the IP layer address type (e.g., IPv4, IPv6, non-IP) of
        this M2M Area Network.
      </description>

      <parameter name="Name" access="readOnly">
        <description>
          The name of the property
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="Value" access="readOnly">
        <description>
          The value of the property.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}."
        access="readOnly"
        numEntriesParameter="AreaNwkDeviceInfoInstanceNumberOfEntries"
        minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true"
        dmr:fixedObject="true" version="2.6">
      <description>
        The M2M Area Network Device Information provides the administration
        capability to the SCL for maintenance of M2M Devices (D', d) that are
        attached to this {{object|##.SCL}} instance.

        While discovery and identification of devices by the M2M Gateway or
        Device (CPE) is implementation specific, each device is represented by
        an instance of the {{object|.Hosts.Host}} table.

        When the M2M Device is managed by the CWMP endpoint of the CPE, the
        {{object}} is expected to be referenced by an instance of one of the
        following tables:

        *{{object|.ManagementServer.EmbeddedDevice}}

        *{{object|.ManagementServer.VirtualDevice}}

        Section 5.3.5 of the M2M Functional Architecture {{bibref|ETSIM2MFA}}
        describes the REM functionality expected of a SCL to a M2M Device.

        This object instance provides the administration properties required by
        a SCL to remotely manage an instance of a M2M Device within a M2M area
        network.

        A M2M Device is associated with an instance of a
        {{object|#.AreaNwkInstance}}.

        This table contains parameters and information of the M2M Device
        related to each {{object|#.AreaNwkInstance}} instance.

        Instances of this table are created and deleted by the CPE. The ACS MAY
        modify the writeable parameters of this object instance but it is
        possible that the value set by the ACS is not retained between reboots
        of the M2M Device.
      </description>

      <parameter name="AreaNwkInstance" access="readOnly">
        <description>
          {{reference}}
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent="#.AreaNwkInstance."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Host" access="readOnly">
        <description>
          {{list}} {{reference|the {{object|.Hosts.Host}} table entry that
          represents an active or inactive M2M Device}}
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetParent=".Hosts.Host."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ListOfDeviceNeighbors" access="readOnly">
        <description>
          {{list}} {{reference}} References all the {{object|.Hosts.Host}}
          table entries, whether active or inactive, that represent the
          reachable neighbors of this M2M Device (D' or d).
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetParent=".Hosts.Host."
                targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ListOfDeviceApplications" access="readOnly">
        <description>
          The list is an unordered set of URIs {{bibref|RFC3986}}.

          A list item is an URI string that represents an application id
          (APP-ID) for the M2M D'A applications residing on the M2M Device for
          the associated {{object|#.AreaNwkInstance}}.

          Table B.58 of the M2M Functional Architecture {{bibref|ETSIM2MFA}}
          describes this parameter.
        </description>
        <syntax>
          <list/>
          <string/>
        </syntax>
      </parameter>

      <parameter name="SleepInterval" access="readWrite">
        <description>
          The interval, in {{units}}, between sleep periods for the device.

          A value of 0 represents a device that does not sleep.

          Note: When this value is modified, the CPE could modify the {{param}}
          for this M2M Device in other Area Networks.
        </description>
        <syntax>
          <unsignedInt>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="SleepDuration" access="readWrite">
        <description>
          The duration, in {{units}}, of a sleep period.

          The value 0 represents an unknown value.

          Note: When this value is modified, the CPE could modify the {{param}}
          for this M2M Device in other Area Networks.
        </description>
        <syntax>
          <unsignedInt>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The sleep status of the device.

          Enumeration of:

          {{enum}}
        </description>
        <syntax>
          <string>
            <enumeration value="ASLEEP"/>
            <enumeration value="AWAKE"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Active" access="readOnly">
        <description>
          Whether or not this M2M Device is currently attached to this
          {{object|##.SCL}} instance.

          The ability to list inactive M2M Devices is OPTIONAL. If the CPE
          includes inactive M2MDevices in this table, {{param}} is set to
          {{false}} for each inactive M2M Device. The length of time an
          inactive M2M Device remains listed in this table is a local matter to
          the CPE.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

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

    <object
        name="Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}."
        access="readOnly" numEntriesParameter="PropertyNumberOfEntries"
        minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true"
        version="2.6">
      <description>
        This object contains an instance of a property extension (name value
        pair) for this {{object|##.AreaNwkDeviceInfoInstance}} instance.

        For example, if the {{param|##.AreaNwkInstance.{i}.AreaNwkType}} value
        is ZigBee, this {{object|##.AreaNwkDeviceInfoInstance}} contains
        ZigBee-specific parameters that are not formally modeled for this
        {{object|##.AreaNwkDeviceInfoInstance}} instance.
      </description>

      <parameter name="Name" access="readOnly">
        <description>
          The name of the property
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="Value" access="readOnly">
        <description>
          The value of the property.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>
    </object>

    <profile name="ETSIM2MSCLBaseline:1" version="2.6">
      <object ref="Device.ETSIM2M.SCL.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="AnnouncedToSCLList" requirement="readWrite"/>
        <parameter ref="SAFPolicySetNumberOfEntries" requirement="readOnly"/>
        <parameter ref="AreaNwkInstanceNumberOfEntries" requirement="readOnly"/>
        <parameter ref="AreaNwkDeviceInfoInstanceNumberOfEntries"
            requirement="readOnly"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.Discovery." requirement="present">
        <parameter ref="MaxNumberOfDiscovRecords" requirement="readWrite"/>
        <parameter ref="MaxSizeOfDiscovAnswer" requirement="readWrite"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.Reregistration."
          requirement="present">
        <parameter ref="RegTargetNSCLList" requirement="readWrite"/>
        <parameter ref="RegSearchStrings" requirement="readWrite"/>
        <parameter ref="RegAccessRightID" requirement="readWrite"/>
        <parameter ref="RegExpirationDuration" requirement="readWrite"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus."
          requirement="present">
        <parameter ref="Progress" requirement="readOnly"/>
        <parameter ref="FinalStatus" requirement="readOnly"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="PolicyScope" requirement="readWrite"/>
        <parameter ref="ANPPolicyNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="ANName" requirement="readWrite"/>
        <parameter ref="BlockPeriodNumberOfEntries" requirement="readOnly"/>
        <parameter ref="RequestCategoryNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="FailedAttempts" requirement="readWrite"/>
        <parameter ref="BlockDuration" requirement="readWrite"/>
      </object>
      <object
          ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="RCAT" requirement="readWrite"/>
        <parameter ref="ScheduleNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Schedules" requirement="readWrite"/>
        <parameter ref="AbsTimeSpanNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="StartTime" requirement="readWrite"/>
        <parameter ref="EndTime" requirement="readWrite"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy."
          requirement="present">
        <parameter ref="DefaultRCATValue" requirement="readWrite"/>
        <parameter ref="RequestCategoryNumberOfEntries" requirement="readOnly"/>
      </object>
      <object
          ref="Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="RCAT" requirement="readWrite"/>
        <parameter ref="TolerableDelay" requirement="readWrite"/>
        <parameter ref="Thresh" requirement="readWrite"/>
        <parameter ref="Mem" requirement="readWrite"/>
        <parameter ref="RankedANList" requirement="readWrite"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}."
          requirement="present">
        <parameter ref="ID" requirement="readOnly"/>
        <parameter ref="AreaNwkType" requirement="readOnly"/>
        <parameter ref="ListOfDevices" requirement="readOnly"/>
      </object>
      <object ref="Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}."
          requirement="present">
        <parameter ref="AreaNwkInstance" requirement="readOnly"/>
        <parameter ref="Host" requirement="readOnly"/>
        <parameter ref="ListOfDeviceNeighbors" requirement="readOnly"/>
        <parameter ref="ListOfDeviceApplications" requirement="readOnly"/>
        <parameter ref="SleepInterval" requirement="readWrite"/>
        <parameter ref="SleepDuration" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Active" requirement="readOnly"/>
      </object>
    </profile>
  </component>

  <model name="ETSIM2M:2.15">
    <component ref="Root"/>
    <component ref="ETSIM2M"/>
  </model>
</dm:document>
