module tapi-odu {
    namespace "urn:onf:otcc:yang:tapi-odu";
    prefix tapi-odu;
    import tapi-common {
        prefix tapi-common;
    }
    import tapi-connectivity {
        prefix tapi-connectivity;
    }
    import tapi-topology {
        prefix tapi-topology;
    }
    import tapi-oam {
        prefix tapi-oam;
    }
    import tapi-dsr {
        prefix tapi-dsr;
    }
    organization "ONF OTCC (Open Transport Configuration & Control) Project";
    contact "
         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
         Project List: <mailto:transport-api@opennetworking.org>
         Editor: Karthik Sethuraman
                 <mailto:karthik.sethuraman@necam.com>";
    description "
        This module contains TAPI Odu Model definitions.
        Source: TapiOdu.uml
        - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
        - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
          <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
          and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
          <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
        - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
          As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
        - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
          The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
          YANG models included in this release may not be backward compatible with previous TAPI releases.
        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
        License: This module is distributed under the Apache License 2.0";
    revision 2018-12-10 {
        description "ONF Transport API version 2.1.1.
                   Changes included in this TAPI release (v2.1.1) are listed in
                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
    }
    revision 2018-10-16 {
        description "ONF Transport API version 2.1.0.
                   Changes included in this TAPI release (v2.1.0) are listed in
                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
    }
    revision 2018-03-07 {
        description "ONF Transport API version 2.0.2
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
    }
    revision 2018-02-16 {
        description "ONF Transport API version 2.0.1
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
    }
    revision 2018-01-02 {
        description "ONF Transport API version 2.0.0
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
    }
    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
        container odu-node-edge-point-spec {
            uses odu-node-edge-point-spec;
            description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";
        }
        description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";
    }
    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {
        container odu-connection-end-point-spec {
            uses odu-connection-end-point-spec;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep" {
        container odu-connection-end-point-spec {
            uses odu-connection-end-point-spec;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip" {
        container odu-mip-spec {
            uses odu-mip-spec;
            description "none";
        }
        description "none";
    }

   /**************************
    * package object-classes
    **************************/
    grouping odu-termination-and-client-adaptation-pac {
        leaf opu-tributary-slot-size {
            type odu-slot-size;
            config false;
            description "This attribute is applicable for ODU2 and ODU3 CTP only. It indicates the slot size of the ODU CTP.";
        }
        leaf auto-payload-type {
            type boolean;
            config false;
            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Source at the client layer of the ODUP/ODUj-21 adaptation function. The value of true of this attribute configures that the adaptation source function shall fall back to the payload type PT=20 if the conditions specified in 14.3.10.1/G.798 are satisfied. ";
        }
        leaf configured-client-type {
            type tapi-dsr:digital-signal-type;
            config false;
            description "This attribute configures the type of the client CTP of the server ODU TTP.";
        }
        leaf configured-mapping-type {
            type mapping-type;
            config false;
            description "This attributes indicates the configured mapping type.";
        }
        container accepted-payload-type {
            config false;
            uses odu-payload-type;
            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Sink at the client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation function.
                This attribute is a 2-digit Hex code that indicates the new accepted payload type.
                Valid values are defined in Table 15-8 of ITU-T Recommendation G.709 with one additional value UN_INTERPRETABLE.";
        }
        description "This Pac contains the attributes associated with the client adaptation function of the server layer TTP
            It is present only if the CEP contains a TTP";
    }
    grouping odu-connection-end-point-spec {
        container odu-common {
            uses odu-common-pac;
            description "none";
        }
        container odu-term-and-adapter {
            config false;
            uses odu-termination-and-client-adaptation-pac;
            description "none";
        }
        container odu-ctp {
            config false;
            uses odu-ctp-pac;
            description "none";
        }
        container odu-protection {
            config false;
            uses odu-protection-pac;
            description "none";
        }
        description "none";
    }
    grouping odu-pool-pac {
        leaf client-capacity {
            type uint64;
            description "none";
        }
        leaf max-client-instances {
            type uint64;
            config false;
            description "none";
        }
        leaf max-client-size {
            type uint64;
            config false;
            description "none";
        }
        description "none";
    }
    grouping odu-node-edge-point-spec {
        container odu-pool {
            config false;
            uses odu-pool-pac;
            description "none";
        }
        description "none";
    }
    grouping odu-ctp-pac {
        leaf-list tributary-slot-list {
            type uint64;
            config false;
            description "This attribute contains a set of distinct (i.e. unique) integers (e.g. 2, 3, 5, 9, 15 representing the tributary slots TS2, TS3, TS5, TS9 and TS15) which represents the resources occupied by the Low Order ODU Link Connection (e.g. carrying an ODUflex with a bit rate of 6.25G).
                This attribute applies when the LO ODU_ ConnectionTerminationPoint connects with an HO ODU_TrailTerminationPoint object.
                It will not apply if this ODU_ ConnectionTerminationPoint object directly connects to an OTU_TrailTerminationPoint object (i.e. OTU has no trib slots).
                The upper bound of the integer allowed in this set is a function of the HO-ODU server layer to which the ODU connection has been mapped (adapted).
                Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server layers (respectively). Note that the value of this attribute can be changed only in the case of ODUflex and has to be through specific operations (i.e. not be changing the attribute tributarySlotList directly).";
        }
        leaf tributary-port-number {
            type uint64;
            config false;
            description "This attribute identifies the tributary port number that is associated with the ODU CTP.
                range of type : The value range depends on the size of the Tributary Port Number (TPN) field used which depends on th server-layer ODU or OTU.
                In case of ODUk mapping into OTUk, there is no TPN field, so the tributaryPortNumber shall be zero.
                In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN is encoded in a 6-bit field so the value range is 0-63. See clause 14.4.1/G.709-2016.
                In case of LO ODUj mapping over ODU4, the TPN is encoded in a 7-bit field so the value range is 0-127. See clause 14.4.1.4/G.709-2016.
                In case of ODUk mapping over ODUCn, the TPN is encoded in a 14-bit field so the value range is 0-16383. See clause 20.4.1.1/G.709-2016.
                ";
        }
        leaf accepted-msi {
            type string;
            config false;
            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU1 or ODU2 CTP Sink at the client layer of the ODU3P/ODU12 adaptation function or represents a lower order ODUj CTP Sink at the client layer of the ODUP/ODUj-21 adaptation function. This attribute is a 1-byte field that represents the accepted multiplex structure of the adaptation function. ";
        }
        description "This Pac contains the attributes associated with the CTP
            It is present only if the CEP contains a CTP";
    }
    grouping odu-mep-spec {
        container odu-mep {
            uses odu-mep-pac;
            description "none";
        }
        container odu-ncm {
            config false;
            uses odu-ncm-pac;
            description "none";
        }
        container odu-tcm {
            config false;
            uses odu-tcm-mep-pac;
            description "none";
        }
        container odu-defect {
            uses odu-defect-pac;
            description "none";
        }
        container odu-pm {
            uses odu-pm-pac;
            description "none";
        }
        description "none";
    }
    grouping odu-protection-pac {
        leaf aps-enable {
            type boolean;
            default "true";
            description "This attribute is for enabling/disabling the automatic protection switching (APS) capability at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_EN signal to the transport adaptation function.";
        }
        leaf aps-level {
            type uint64;
            description "This attribute is for configuring the automatic protection switching (APS) level that should operate at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_LVL signal to the transport adaptation function. The value 0 means path and the values 1 through 6 mean TCM level 1 through 6 respectively.";
        }
        description "none";
    }
    grouping odu-ncm-pac {
        leaf-list tcm-fields-in-use {
            type uint64;
            config false;
            description "This attribute indicates the used TCM fields of the ODU OH.";
        }
        description "none";
    }
    grouping odu-tcm-mep-pac {
        leaf tcm-extension {
            type tcm-extension;
            description "none";
        }
        leaf tcm-mode {
            type tcm-mode;
            description "This attribute specifies the TCM mode at the entity. Valid values are: Operational, Monitor, and Transparent.";
        }
        leaf codirectional {
            type boolean;
            config false;
            description "This attribute specifies the directionality of the ODUT MEP with respect to the associated ODU CEP. The value of TRUE means that the sink part of the ODUT MEP terminates the same signal direction as the sink part of the ODU CEP. The Source part behaves similarly. This attribute is meaningful only on objects instantiated under ODU CEP, and at least one among ODU CEP and the subordinate object is bidirectional.";
        }
        leaf ac-status-source {
            type tcm-status;
            config false;
            description "This attribute indicates the status of the accepted TCM. ";
        }
        leaf ac-status-sink {
            type tcm-status;
            config false;
            description "This attribute indicates the status of the accepted TCM. ";
        }
        leaf admin-state-source {
            type tapi-common:administrative-state;
            description "This attribute provides the capability to provision the LOCK signal at the source, which is one of the ODU maintenance signals.  When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the source direction.";
        }
        leaf admin-state-sink {
            type tapi-common:administrative-state;
            description "This attribute provides the capability to provision the LOCK signal at the sink, which is one of the ODU maintenance signals. When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the downstream direction.";
        }
        uses odu-tcm-mip-pac;
        description "none";
    }
    grouping odu-mip-spec {
        container odu-mip {
            config false;
            uses odu-mip-pac;
            description "none";
        }
        container odu-ncm {
            config false;
            uses odu-ncm-pac;
            description "none";
        }
        container odu-tcm {
            config false;
            uses odu-tcm-mip-pac;
            description "none";
        }
        container odu-pm {
            uses odu-pm-pac;
            description "none";
        }
        container odu-defect {
            uses odu-defect-pac;
            description "none";
        }
        description "none";
    }
    grouping odu-mip-pac {
        leaf acti {
            type string;
            config false;
            description "The Trail Trace Identifier (TTI) information recovered (Accepted) from the TTI overhead position at the sink of a trail.";
        }
        leaf ex-dapi {
            type string;
            description "The Expected Destination Access Point Identifier (ExDAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.";
        }
        leaf ex-sapi {
            type string;
            description "The Expected Source Access Point Identifier (ExSAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.
                ";
        }
        leaf tim-act-disabled {
            type boolean;
            default "true";
            description "This attribute provides the control capability for the managing system to enable or disable the Consequent Action function when detecting Trace Identifier Mismatch (TIM) at the trail termination sink.";
        }
        leaf tim-det-mode {
            type tim-det-mo;
            description "This attribute indicates the mode of the Trace Identifier Mismatch (TIM) Detection function allowed values: OFF, SAPIonly, DAPIonly, SAPIandDAPI";
        }
        leaf deg-m {
            type uint64;
            description "This attribute indicates the threshold level for declaring a Degraded Signal defect (dDEG). A dDEG shall be declared if DegM consecutive bad PM Seconds are detected.";
        }
        container deg-thr {
            uses deg-thr;
            description "This attribute indicates the threshold level for declaring a performance monitoring (PM) Second to be bad. The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";
        }
        description "none";
    }
    grouping odu-tcm-mip-pac {
        leaf tcm-field {
            type uint64;
            config false;
            description "This attribute indicates the tandem connection monitoring field of the ODU OH.";
        }
        description "none";
    }
    grouping odu-mep-pac {
        leaf dm-source {
            type boolean;
            description "This attribute is for configuring the delay measurement process at the trail termination function represented by the subject TTP object class. It models the MI_DM_Source MI signal. If MI_DM_Source is false, then the value of the DMp bit is determined by the RI_DM. If MI_DM_Source is true, then the value of the DMp bit is set to MI_DMValue.";
        }
        leaf dm-value {
            type boolean;
            description "This attribute is for setting the DMp and DMti bits of the delay measurement process. The value of 'true' sets the DMp and DMti bits to 0 and the value of 'false' to 1.";
        }
        leaf txti {
            type string;
            description "The Trail Trace Identifier (TTI) information, provisioned by the managing system at the termination source, to be placed in the TTI overhead position of the source of a trail for transmission.
                ";
        }
        uses odu-mip-pac;
        description "none";
    }
    grouping odu-common-pac {
        leaf odu-type {
            type odu-type;
            config false;
            description "This attribute specifies the type of the ODU termination point.";
        }
        leaf odu-rate {
            type uint64;
            config false;
            description "This attribute indicates the rate of the ODU terminatino point.
                This attribute is Set at create; i.e., once created it cannot be changed directly.
                In case of resizable ODU flex, its value can be changed via HAO (not directly on the attribute).
                ";
        }
        leaf odu-rate-tolerance {
            type uint64;
            config false;
            description "This attribute indicates the rate tolerance of the ODU termination point.
                Valid values are real value in the unit of ppm.
                Standardized values are defined in Table 7-2/G.709.";
        }
        description "none";
    }
    grouping odu-pm-pac {
        leaf n-bbe {
            type uint64;
            description "Near-end Background Block Error";
        }
        leaf f-bbe {
            type uint64;
            config false;
            description "Far-end Background Block Error";
        }
        leaf n-ses {
            type uint64;
            description "Near-end Severely Errored Second";
        }
        leaf f-ses {
            type uint64;
            description "Far-end Severely Errored Second";
        }
        container uas {
            uses uas-choice;
            description "UnAvailable Second";
        }
        description "Instance of this object class contains the ODUP layer-specific Current Data. This object class is a subclass of the OTN_CurrentData object class.
            PM data attributes: fBbe, fSes, nBbe, nSes. uas";
    }
    grouping odu-defect-pac {
        leaf bdi {
            type boolean;
            config false;
            description "Backward Defect Indication";
        }
        leaf deg {
            type boolean;
            config false;
            description "Signal Degraded";
        }
        leaf lck {
            type boolean;
            config false;
            description "Locked";
        }
        leaf oci {
            type boolean;
            config false;
            description "Open Connection Indicator";
        }
        leaf ssf {
            type boolean;
            config false;
            description "Server Signal Failure";
        }
        leaf tim {
            type boolean;
            config false;
            description "Trail Trace Identifier Mismatch";
        }
        description "The valid list of defects raised on the entity. If the value of any attribute is true, then the corresponding defect is raised.";
    }

   /**************************
    * package type-definitions
    **************************/
    identity ODU_TYPE {
        base tapi-common:LAYER_PROTOCOL_QUALIFIER;
        description "none";
    }
    identity ODU_TYPE_ODU0 {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU1 {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU2 {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU2E {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU3 {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU4 {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU_FLEX {
        base ODU_TYPE;
        description "none";
    }
    identity ODU_TYPE_ODU_CN {
        base ODU_TYPE;
        description "none";
    }
    typedef odu-type {
        type identityref {
            base ODU_TYPE;
        }
        description "none";
    }
    typedef mapping-type {
        type enumeration {
            enum AMP {
                description "none";
            }
            enum BMP {
                description "none";
            }
            enum GFP-F {
                description "none";
            }
            enum GMP {
                description "none";
            }
            enum TTP_GFP_BMP {
                description "none";
            }
            enum NULL {
                description "none";
            }
        }
        description "none";
    }
    typedef tim-det-mo {
        type enumeration {
            enum DAPI {
                description "none";
            }
            enum SAPI {
                description "none";
            }
            enum BOTH {
                description "none";
            }
            enum OFF {
                description "none";
            }
        }
        description "List of modes for trace identifier mismatch detection.";
    }
    typedef odu-slot-size {
        type enumeration {
            enum 1G25 {
                description "none";
            }
            enum 2G5 {
                description "none";
            }
        }
        description "none";
    }
    grouping odu-payload-type {
        leaf named-payload-type {
            type odu-named-payload-type;
            description "none";
        }
        leaf hex-payload-type {
            type uint64;
            description "none";
        }
        description "none";
    }
    typedef odu-named-payload-type {
        type enumeration {
            enum UNKNOWN {
                description "none";
            }
            enum UNINTERPRETABLE {
                description "none";
            }
        }
        description "none";
    }
    grouping deg-thr {
        leaf deg-thr-value {
            type uint64;
            description "Percentage of detected errored blocks";
        }
        leaf deg-thr-type {
            type deg-thr-type;
            description "Number of errored blocks";
        }
        leaf percentage-granularity {
            type percentage-granularity;
            description "none";
        }
        description "Degraded Threshold, specify either the percentage or the number of Errored Blocks in the defined interval.
            degThrValue when type is PERCENTAGE:
            percentageGranularity is used to indicate the number of decimal points
            So if percentageGranularity is ones, a value of 1 in degThrValue would indicate 1%, a value of 10 = 10%, a value of 100 = 100%
            So if percentageGranularity is thousandths a value of 1 in degThrValue would indicate 0.001%, a value of 1000 = 1%, a value of 1000000 = 100%
            degThrValue when type is NUMBER_ERROR_BLOCKS:
            Number of Errored Blocks is captured in an integer value.";
    }
    typedef deg-thr-type {
        type enumeration {
            enum PERCENTAGE {
                description "Choice of % or Number of errored blocks";
            }
            enum NUMBER_ERRORED_BLOCKS {
                description "Number of % or blocks";
            }
        }
        description "The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";
    }
    typedef tcm-status {
        type enumeration {
            enum NO_SOURCE_TC {
                description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";
            }
            enum IN_USE_WITHOUT_IAE {
                description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";
            }
            enum IN_USE_WITH_IAE {
                description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";
            }
            enum RESERVED_1 {
                description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";
            }
            enum RESERVED_2 {
                description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";
            }
            enum LCK {
                description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";
            }
            enum OCI {
                description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";
            }
            enum AIS {
                description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";
            }
        }
        description "See Table 15-5/G.709/Y.1331 ";
    }
    typedef tcm-mode {
        type enumeration {
            enum OPERATIONAL {
                description "none";
            }
            enum TRANSPARENT {
                description "none";
            }
            enum MONITOR {
                description "none";
            }
        }
        description "List of value modes for the sink side of the tandem connection monitoring function.";
    }
    typedef tcm-monitoring {
        type enumeration {
            enum INTRUSIVE {
                description "none";
            }
            enum NON-INTRUSIVE {
                description "none";
            }
        }
        description "Monitoring types for the tandem connection monitoring function.";
    }
    typedef tcm-extension {
        type enumeration {
            enum NORMAL {
                description "none";
            }
            enum PASS-THROUGH {
                description "none";
            }
            enum ERASE {
                description "none";
            }
        }
        description "none";
    }
    typedef percentage-granularity {
        type enumeration {
            enum ONES {
                description "none";
            }
            enum ONE_TENTHS {
                description "value * (1/10)";
            }
            enum ONE_HUNDREDTHS {
                description "value * (1/100)";
            }
            enum ONE_THOUSANDTHS {
                description "value * (1/1000)";
            }
        }
        description "none";
    }
    grouping uas-choice {
        leaf bidirectional {
            type boolean;
            default "true";
            description "none";
        }
        leaf uas {
            type uint64;
            description "none";
        }
        leaf nuas {
            type uint64;
            description "none";
        }
        leaf fuas {
            type uint64;
            description "none";
        }
        description "If bidirectional is TRUE then use the uas attribute, if bidirectional is FALSE use the nuas, and fuas attributes";
    }
}
