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
        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
        License: This module is distributed under the Apache License 2.0";
    revision 2018-10-16 {
        description "ONF Transport API version 2.1.0.
          - The TAPI YANG models included in this TAPI release (v2.1.0) 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 are not backward compatible with previous TAPI releases.
          - 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";
        }

}
