module tapi-odu {
    namespace "urn:onf:params:xml:ns: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;
    }
    organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
    contact "
        WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
        WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
        WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
        Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
    description "none";
    revision 2017-05-31 {
        description "TAPI SDK 2.0-alpha";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
        uses odu-node-edge-point-spec;
        description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {
        uses odu-connection-end-point-spec;
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:meg/tapi-oam:mep" {
        uses odu-connection-end-point-spec;
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:meg/tapi-oam:mip" {
        uses odu-mip-spec;
        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 string;
                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-m-si {
                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.";
        }
        feature odu {
            description "none";
        }

    /***********************
    * package type-definitions
    **********************/ 
        identity deg-thr-type {
            description "none";
        }
        identity percentage {
            base deg-thr-type;
            description "Choice of % or Number of errored blocks";
        }
        identity number-errored-blocks {
            base deg-thr-type;
            description "Number of % or blocks";
        }
        identity tcm-status {
            description "none";
        }
        identity no-source-tc {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";
        }
        identity in-use-without-iae {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";
        }
        identity in-use-with-iae {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";
        }
        identity reserved-1 {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";
        }
        identity reserved-2 {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";
        }
        identity lck {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";
        }
        identity oci {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";
        }
        identity ais {
            base tcm-status;
            description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";
        }
        identity tcm-mode {
            description "none";
        }
        identity operational {
            base tcm-mode;
            description "none";
        }
        identity transparent {
            base tcm-mode;
            description "none";
        }
        identity monitor {
            base tcm-mode;
            description "none";
        }
        identity tcm-monitoring {
            description "none";
        }
        identity intrusive {
            base tcm-monitoring;
            description "none";
        }
        identity non-intrusive {
            base tcm-monitoring;
            description "none";
        }
        identity tcm-extension {
            description "none";
        }
        identity normal {
            base tcm-extension;
            description "none";
        }
        identity pass-through {
            base tcm-extension;
            description "none";
        }
        identity erase {
            base tcm-extension;
            description "none";
        }
        identity percentage-granularity {
            description "none";
        }
        identity ones {
            base percentage-granularity;
            description "none";
        }
        identity one-tenths {
            base percentage-granularity;
            description "value * (1/10)";
        }
        identity one-hundredths {
            base percentage-granularity;
            description "value * (1/100)";
        }
        identity one-thousandths {
            base percentage-granularity;
            description "value * (1/1000)";
        }
        typedef odu-type {
            type enumeration {
                enum odu-0 {
                    description "none";
                }
                enum odu-1 {
                    description "none";
                }
                enum odu-2 {
                    description "none";
                }
                enum odu-2-e {
                    description "none";
                }
                enum odu-3 {
                    description "none";
                }
                enum odu-4 {
                    description "none";
                }
                enum odu-flex {
                    description "none";
                }
                enum odu-cn {
                    description "none";
                }
            }
            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 1-g-25 {
                    description "none";
                }
                enum 2-g-5 {
                    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 identityref {
                base deg-thr-type;
            }
            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 identityref {
                base tcm-status;
            }
            description "See Table 15-5/G.709/Y.1331 ";
        }
        typedef tcm-mode {
            type identityref {
                base tcm-mode;
            }
            description "List of value modes for the sink side of the tandem connection monitoring function.";
        }
        typedef tcm-monitoring {
            type identityref {
                base tcm-monitoring;
            }
            description "Monitoring types for the tandem connection monitoring function.";
        }
        typedef tcm-extension {
            type identityref {
                base tcm-extension;
            }
            description "none";
        }
        typedef percentage-granularity {
            type identityref {
                base percentage-granularity;
            }
            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";
        }

}
