module tapi-otsi {
    namespace "urn:onf:params:xml:ns:yang:tapi-otsi";
    prefix tapi-otsi;
    import tapi-common {
        prefix tapi-common;
    }
    import tapi-connectivity {
        prefix tapi-connectivity;
    }
    import tapi-topology {
        prefix tapi-topology;
    }
    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/tapi-connectivity:connection-end-point" {
        uses otsi-connection-end-point-spec;
        description "Augments the base LayerProtocol information in ConnectionEndPoint with OCH-specific information";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
        uses otsi-node-edge-point-spec;
        description "Augments the base LayerProtocol information in NodeEdgePoint with OCH-specific information";
    }
    /***********************
    * package object-classes
    **********************/ 
        grouping otsi-a-client-adaptation-pac {
            description "none";
        }
        grouping otsi-connection-end-point-spec {
            uses tapi-otsi:otsi-a-client-adaptation-pac;
            uses tapi-otsi:otsi-termination-pac;
            uses tapi-otsi:otsi-g-ctp-pac;
            description "none";
        }
        grouping otsi-termination-pac {
            list selected-nominal-central-frequency {
                config false;
                uses nominal-central-frequency-or-wavelength;
                description "This attribute indicates the nominal central frequency or wavelength of the optical channel associated with the OCh Trail Termination function. The value of this attribute is a pair {LinkType, Integer}, in which LinkType is DWDM, or CWDM, or NO_WDM. When LinkType is DWDM, the integer represents the nominal central frequency in unit of MHz. When LinkType is CWDM, the integer represents the nominal central wavelength in unit of pm (picometer). When LinkType is NO_WDM, the Integer field is null. For frequency and wavelength, the value shall be within the range of the maximum and minimum central frequencies or wavelengths specified for the corresponding application code used at the OCh Trail Termination.
                    This attribute is required for the OCh Trial Termination Point Source at the transmitter.  For the OCh Trail Termination Point Sink at the receiver, this attribute may not be needed since the receiver is required to operate at any frequency/wavelength between the maximum and minimum range for the standard application code.
                    ";
            }
            list supportable-lower-nominal-central-frequency {
                config false;
                uses nominal-central-frequency-or-wavelength;
                description "none";
            }
            list supportable-upper-nominal-central-frequency {
                config false;
                uses nominal-central-frequency-or-wavelength;
                description "none";
            }
            list selected-application-identifier {
                config false;
                uses application-identifier;
                description "This attribute indicates the selected Application Identifier that is used by the OCh trail termination function. The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";
            }
            list supportable-application-identifier {
                config false;
                uses application-identifier;
                description "none";
            }
            description "none";
        }
        grouping otsi-a-pool-pac {
            list available-frequency-slot {
                config false;
                uses frequency-slot;
                description "none";
            }
            list occupied-frequency-slot {
                config false;
                uses frequency-slot;
                description "none";
            }
            description "none";
        }
        grouping otsi-node-edge-point-spec {
            uses tapi-otsi:otsi-a-pool-pac;
            description "none";
        }
        grouping otsi-routing-spec {
            leaf optical-routing-strategy {
                type optical-routing-strategy;
                description "none";
            }
            description "none";
        }
        grouping otsi-g-ctp-pac {
            list selected-frequency-slot {
                config false;
                uses frequency-slot;
                description "none";
            }
            description "none";
        }
        feature otsia {
            description "none";
        }

    /***********************
    * package type-definitions
    **********************/ 
        grouping application-identifier {
            leaf application-identifier-type {
                type application-identifier-type;
                description "none";
            }
            leaf application-identifier-value {
                type string;
                description "none";
            }
            description "none";
        }
        grouping nominal-central-frequency-or-wavelength {
            leaf grid-type {
                type grid-type;
                description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";
            }
            leaf adjustment-granularity {
                type adjustment-granularity;
                description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";
            }
            leaf channel-number {
                type uint64;
                description "As per ITU-T G.694.1, this attribute is denoted as 'n' and is used to calculate the nominal central frequency (in THz) as follows:
                    193.1 + <channelNumber> × <adjustmentGranularity> where channelNumber is a positive or negative integer including 0 and adjustment_granularity is the nominal central frequency granularity in THz";
            }
            description "This data-type holds the information to determine the nominal central frequency of a FIXED grid (DWDM or CWDM) and FLEX grid type systems.
                As per ITU-T G.694.1, the nominal central frequency (in THz) is calculated as follows:
                193.1 + <channelNumber> × <adjustmentGranularity> where channelNumber is a positive or negative integer including 0 and <adjustment_granularity> is the nominal central frequency granularity in THz
                For FIXED grid types, the adjustmentGranularity is one of (0.1/0.05/0.025/0.0125) THz corresponding to channel spacing of one of (100/50/25/12.5) GHz
                For FLEX grid type, the adjusmentGranularity is 0.00625 THz and the slot width is variable in increments of 12.5 GHz";
        }
        typedef optical-routing-strategy {
            type enumeration {
                enum OPTIMAL_OSNR {
                    description "none";
                }
                enum NO_RELAY {
                    description "none";
                }
                enum MIN_RELAY {
                    description "none";
                }
                enum PREFERRED_NO_CHANGE_WAVELENGTH_AS_RESTORE {
                    description "none";
                }
                enum PREFERRED_NO_SKIPPING_WAVELENGTH {
                    description "none";
                }
            }
            description "none";
        }
        typedef application-identifier-type {
            type enumeration {
                enum PROPRIETARY {
                    description "none";
                }
                enum ITUT_G959_1 {
                    description "none";
                }
                enum ITUT_G698_1 {
                    description "none";
                }
                enum ITUT_G698_2 {
                    description "none";
                }
                enum ITUT_G696_1 {
                    description "none";
                }
                enum ITUT_G695 {
                    description "none";
                }
            }
            description "none";
        }
        typedef grid-type {
            type enumeration {
                enum DWDM {
                    description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1
                        ";
                }
                enum CWDM {
                    description "Fixed frequency grid as specified in ITU-T G.694.2";
                }
                enum FLEX {
                    description "Flexible frequency grid as specified in ITU-T G.694.1. In this case,
                        - the allowed frequency slots have a nominal central frequency (in THz) defined by:
                        193.1 + n × 0.00625 where n is a positive or negative integer including 0 and 0.00625 is the nominal central frequency granularity in THz
                        - and a slot width defined by:
                        12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.
                        Any combination of frequency slots is allowed as long as no two frequency slots overlap.";
                }
                enum UNSPECIFIED {
                    description "Unspecified/proprietary frequency grid";
                }
            }
            description "The frequency grid standard that specify reference set of frequencies used to denote allowed nominal central frequencies that may be used for defining applications.";
        }
        typedef adjustment-granularity {
            type enumeration {
                enum G_100GHZ {
                    description "0.1 THz";
                }
                enum G_50GHZ {
                    description "0.05 THz";
                }
                enum G_25GHZ {
                    description "0.025 THz";
                }
                enum G_12_5GHZ {
                    description "0.0125 THz";
                }
                enum G_6_25GHZ {
                    description "0.00625 THz";
                }
            }
            description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";
        }
        grouping frequency-slot {
            container nominal-central-frequency {
                uses nominal-central-frequency-or-wavelength;
                description "none";
            }
            leaf slot-width-number {
                type uint64;
                description "As per ITU-T G.694.1, this attribute is denoted as 'm' and is used to calculate the slot width (in GHz) as follows:
                    12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.";
            }
            description "The frequency range allocated to a slot and unavailable to other slots within a flexible grid. A frequency slot is defined by its nominal central frequency. As per ITU-T G.694.1  the slot width is calculated as follows:
                12.5 × <slotWidthNumber> where slotWidthNumber is a positive integer and 12.5 is the slot width granularity in GHz";
        }

}
