module openconfig-transport-types {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/transport-types";

  prefix "oc-opt-types";

  import openconfig-platform-types { prefix oc-platform-types; }
  import openconfig-extensions { prefix oc-ext; }
  import openconfig-types { prefix oc-types; }

  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "This module contains general type definitions and identities
    for optical transport models.";

  oc-ext:openconfig-version "0.6.0";

  revision "2018-05-16" {
    description
      "Added interval,min,max time to interval stats.";
    reference "0.6.0";
  }

  revision "2017-08-16" {
    description
      "Added ODU Cn protocol type";
    reference "0.5.0";
  }

  revision "2016-12-22" {
    description
      "Fixes and additions for terminal optics model";
    reference "0.4.0";
  }

  // typedef statements

  typedef frequency-type {
    type uint64;
    units "MHz";
    description
      "Type for optical spectrum frequency values";
  }
typedef modulation-format {
        type enumeration {
          enum UNKNOWN {
            description
              "quadrature phase-shift keying";
          }
          enum BPSK {
            description
              "quadrature phase-shift keying";
          }
          enum DP_BPSK {
            description
              "quadrature phase-shift keying";
          }
          enum QPSK {
            description
              "quadrature phase-shift keying";
          }
          enum DP_QPSK {
            description
              "quadrature phase-shift keying";
          }
          enum 8QAM {
            description
              "quadrature amplitude modulation 8";
          }
          enum DP_8QAM {
            description
              "quadrature amplitude modulation 8";
          }
          enum 16QAM {
            description
              "quadrature amplitude modulation 16";
          }
          enum DP_16QAM {
            description
              "quadrature amplitude modulation 16";
          }
          enum 32QAM {
            description
              "quadrature amplitude modulation 16";
          }
          enum DP_32QAM {
            description
              "quadrature amplitude modulation 16";
          }
          enum 64QAM {
            description
              "quadrature amplitude modulation 16";
          }
          enum DP_64QAM {
            description
              "quadrature amplitude modulation 16";
          }
        }
        description
          "Modulation format";
      }

  typedef admin-state-type {
    type enumeration {
      enum ENABLED {
        description
        "Sets the channel admin state to enabled";
      }
      enum DISABLED {
        description
        "Sets the channel admin state to disabled";
      }
      enum MAINT {
        description
        "Sets the channel to maintenance / diagnostic mode";
      }
    }
    description "Administrative state modes for
    logical channels in the transponder model.";
  }

  typedef loopback-mode-type {
    type enumeration {
      enum NONE {
        description
          "No loopback is applied";
      }
      enum FACILITY {
        description
          "A loopback which directs traffic normally transmitted
          on the port back to the device as if received on the same
          port from an external source.";
      }
      enum TERMINAL {
        description
          "A loopback which directs traffic received from an external
          source on the port back out the transmit side of the same
          port.";
      }
    }
    default NONE;
    description
      "Loopback modes for transponder logical channels";
  }

  // grouping statements

  grouping avg-min-max-instant-stats-precision2-ps-nm {
    description
      "Common grouping for recording picosecond per nanometer
      values with 2 decimal precision. Values include the
      instantaneous, average, minimum, and maximum statistics.
      Statistics are computed and reported based on a moving time
      interval (e.g., the last 30s).  If supported by the device,
      the time interval over which the statistics are computed, and
      the times at which the minimum and maximum values occurred,
      are also reported.";

    leaf instant {
      type decimal64 {
        fraction-digits 2;
      }
      units ps-nm;
      description
        "The instantaneous value of the statistic.";
    }

    leaf avg {
      type decimal64 {
        fraction-digits 2;
      }
      units ps-nm;
      description
        "The arithmetic mean value of the statistic over the
        time interval.";
    }

    leaf min {
      type decimal64 {
        fraction-digits 2;
      }
      units ps-nm;
      description
        "The minimum value of the statistic over the time interval.";
    }

    leaf max {
      type decimal64 {
        fraction-digits 2;
      }
      units ps-nm;
      description
        "The maximum value of the statistic over the time interval.";
    }

    uses oc-types:stat-interval-state;
    uses oc-types:min-max-time;
  }

  grouping avg-min-max-instant-stats-precision2-ps {
    description
      "Common grouping for recording picosecond values with
      2 decimal precision. Values include the
      instantaneous, average, minimum, and maximum statistics.
      Statistics are computed and reported based on a moving time
      interval (e.g., the last 30s).  If supported by the device,
      the time interval over which the statistics are computed, and
      the times at which the minimum and maximum values occurred,
      are also reported.";

    leaf instant {
      type decimal64 {
        fraction-digits 2;
      }
      units ps;
      description
        "The instantaneous value of the statistic.";
    }

    leaf avg {
      type decimal64 {
        fraction-digits 2;
      }
      units ps;
      description
        "The arithmetic mean value of the statistic over the
        time interval.";
    }

    leaf min {
      type decimal64 {
        fraction-digits 2;
      }
      units ps;
      description
        "The minimum value of the statistic over the time interval.";
    }

    leaf max {
      type decimal64 {
        fraction-digits 2;
      }
      units ps;
      description
        "The maximum value of the statistic over the time interval.";
    }

    uses oc-types:stat-interval-state;
    uses oc-types:min-max-time;
  }

  grouping avg-min-max-instant-stats-precision2-ps2 {
    description
      "Common grouping for recording picosecond^2 values with
      2 decimal precision. Values include the
      instantaneous, average, minimum, and maximum statistics.
      Statistics are computed and reported based on a moving time
      interval (e.g., the last 30s).  If supported by the device,
      the time interval over which the statistics are computed, and
      the times at which the minimum and maximum values occurred,
      are also reported.";

    leaf instant {
      type decimal64 {
        fraction-digits 2;
      }
      units ps^2;
      description
        "The instantaneous value of the statistic.";
    }

    leaf avg {
      type decimal64 {
        fraction-digits 2;
      }
      units ps^2;
      description
        "The arithmetic mean value of the statistic over the
        time interval.";
    }

    leaf min {
      type decimal64 {
        fraction-digits 2;
      }
      units ps^2;
      description
        "The minimum value of the statistic over the time interval.";
    }

    leaf max {
      type decimal64 {
        fraction-digits 2;
      }
      units ps^2;
      description
        "The maximum value of the statistic over the time
        interval.";
    }

    uses oc-types:stat-interval-state;
    uses oc-types:min-max-time;
  }

  grouping avg-min-max-instant-stats-precision18-ber {
    description
      "Common grouping for recording bit error rate (BER) values
      with 18 decimal precision. Note that decimal64 supports
      values as small as i x 10^-18 where i is an integer. Values
      smaller than this should be reported as 0 to inidicate error
      free or near error free performance. Values include the
      instantaneous, average, minimum, and maximum statistics.
      Statistics are computed and reported based on a moving time
      interval (e.g., the last 30s).  If supported by the device,
      the time interval over which the statistics are computed, and
      the times at which the minimum and maximum values occurred,
      are also reported.";

    leaf instant {
      type decimal64 {
        fraction-digits 18;
      }
      units bit-errors-per-second;
      description
        "The instantaneous value of the statistic.";
    }

    leaf avg {
      type decimal64 {
        fraction-digits 18;
      }
      units bit-errors-per-second;
      description
        "The arithmetic mean value of the statistic over the
        time interval.";
    }

    leaf min {
      type decimal64 {
        fraction-digits 18;
      }
      units bit-errors-per-second;
      description
        "The minimum value of the statistic over the time
        interval.";
    }

    leaf max {
      type decimal64 {
        fraction-digits 18;
      }
      units bit-errors-per-second;
      description
        "The maximum value of the statistic over the time
        interval.";
    }

    uses oc-types:stat-interval-state;
    uses oc-types:min-max-time;
  }

  // identity statements

  identity TRIBUTARY_PROTOCOL_TYPE {
    description
      "Base identity for protocol framing used by tributary
      signals.";
  }

  identity PROT_1GE {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "1G Ethernet protocol";
  }

  identity PROT_OC48 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OC48 protocol";
  }

  identity PROT_STM16 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "STM 16 protocol";
  }

  identity PROT_10GE_LAN {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "10G Ethernet LAN protocol";
  }

  identity PROT_10GE_WAN {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "10G Ethernet WAN protocol";
  }

  identity PROT_OC192 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OC 192 (9.6GB) port protocol";
  }

  identity PROT_STM64 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "STM 64 protocol";
  }

  identity PROT_OTU2 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OTU 2 protocol";
  }

  identity PROT_OTU2E {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OTU 2e protocol";
  }

  identity PROT_OTU1E {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OTU 1e protocol";
  }

  identity PROT_ODU2 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "ODU 2 protocol";
  }

  identity PROT_ODU2E {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "ODU 2e protocol";
  }

  identity PROT_40GE {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "40G Ethernet port protocol";
  }

  identity PROT_OC768 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OC 768 protocol";
  }

  identity PROT_STM256 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "STM 256 protocol";
  }

  identity PROT_OTU3 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OTU 3 protocol";
  }

  identity PROT_ODU3 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "ODU 3 protocol";
  }

  identity PROT_100GE {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "100G Ethernet protocol";
  }

  identity PROT_100G_MLG {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "100G MLG protocol";
  }

  identity PROT_OTU4 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OTU4 signal protocol (112G) for transporting
    100GE signal";
  }

  identity PROT_OTUCN {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "OTU Cn protocol";
  }

  identity PROT_ODUCN {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "ODU Cn protocol";
  }

  identity PROT_ODU4 {
    base TRIBUTARY_PROTOCOL_TYPE;
    description "ODU 4 protocol";
  }

  identity TRANSCEIVER_FORM_FACTOR_TYPE {
    description
      "Base identity for identifying the type of pluggable optic
      transceiver (i.e,. form factor) used in a port.";
  }

  identity CFP {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "C form-factor pluggable, that can support up to a
      100 Gb/s signal with 10x10G or 4x25G physical channels";
  }

  identity CFP2 {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "1/2 C form-factor pluggable, that can support up to a
      200 Gb/s signal with 10x10G, 4x25G, or 8x25G physical
      channels";
  }

  identity CFP2_ACO {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "CFP2 analog coherent optics transceiver, supporting
      100 Gb, 200Gb, and 250 Gb/s signal.";
  }

  identity CFP4 {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "1/4 C form-factor pluggable, that can support up to a
      100 Gb/s signal with 10x10G or 4x25G physical channels";
  }

  identity QSFP {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "OriginalQuad Small Form-factor Pluggable transceiver that can
      support 4x1G physical channels.  Not commonly used.";
  }

  identity QSFP_PLUS {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "Quad Small Form-factor Pluggable transceiver that can support
      up to 4x10G physical channels.";
  }

  identity QSFP28 {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "QSFP pluggable optic with support for up to 4x28G physical
      channels";
  }

  identity CPAK {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "Cisco CPAK transceiver supporting 100 Gb/s.";
  }

  identity SFP {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "Small form-factor pluggable transceiver supporting up to
      10 Gb/s signal";
  }

  identity SFP_PLUS {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "Enhanced small form-factor pluggable transceiver supporting
      up to 16 Gb/s signals, including 10 GbE and OTU2";
  }

  identity XFP {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "10 Gigabit small form factor pluggable transceiver supporting
      10 GbE and OTU2";
  }

  identity X2 {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "10 Gigabit small form factor pluggable transceiver supporting
      10 GbE using a XAUI inerface and 4 data channels.";
  }

  identity NON_PLUGGABLE {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "Represents a port that does not require a pluggable optic,
      e.g., with on-board optics like COBO";
  }

  identity OTHER {
    base TRANSCEIVER_FORM_FACTOR_TYPE;
    description
      "Represents a transceiver form factor not otherwise listed";
  }

  identity FIBER_CONNECTOR_TYPE {
    description
      "Type of optical fiber connector";
  }

  identity SC_CONNECTOR {
    base FIBER_CONNECTOR_TYPE;
    description
      "SC type fiber connector";
  }

  identity LC_CONNECTOR {
    base FIBER_CONNECTOR_TYPE;
    description
      "LC type fiber connector";
  }

  identity MPO_CONNECTOR {
    base FIBER_CONNECTOR_TYPE;
    description
      "MPO (multi-fiber push-on/pull-off) type fiber connector
      1x12 fibers";
  }

  identity ETHERNET_PMD_TYPE {
    description
      "Ethernet compliance codes (PMD) supported by transceivers";
  }

  identity ETH_10GBASE_LRM {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 10GBASE_LRM";
  }

  identity ETH_10GBASE_LR {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 10GBASE_LR";
  }

  identity ETH_10GBASE_ZR {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 10GBASE_ZR";
  }

  identity ETH_10GBASE_ER {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 10GBASE_ER";
  }

  identity ETH_10GBASE_SR {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 10GBASE_SR";
  }

  identity ETH_40GBASE_CR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 40GBASE_CR4";
  }

  identity ETH_40GBASE_SR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 40GBASE_SR4";
  }

  identity ETH_40GBASE_LR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 40GBASE_LR4";
  }

  identity ETH_40GBASE_ER4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 40GBASE_ER4";
  }

  identity ETH_40GBASE_PSM4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 40GBASE_PSM4";
  }

  identity ETH_4X10GBASE_LR {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 4x10GBASE_LR";
  }

  identity ETH_4X10GBASE_SR {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 4x10GBASE_SR";
  }

  identity ETH_100G_AOC {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100G_AOC";
  }

  identity ETH_100G_ACC {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100G_ACC";
  }

  identity ETH_100GBASE_SR10 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_SR10";
  }

  identity ETH_100GBASE_SR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_SR4";
  }

  identity ETH_100GBASE_LR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_LR4";
  }

  identity ETH_100GBASE_ER4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_ER4";
  }

  identity ETH_100GBASE_CWDM4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_CWDM4";
  }

  identity ETH_100GBASE_CLR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_CLR4";
  }

  identity ETH_100GBASE_PSM4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_PSM4";
  }

  identity ETH_100GBASE_CR4 {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: 100GBASE_CR4";
  }

  identity ETH_UNDEFINED {
    base ETHERNET_PMD_TYPE;
    description "Ethernet compliance code: undefined";
  }

  identity SONET_APPLICATION_CODE {
    description
      "Supported SONET/SDH application codes";
  }

  identity VSR2000_3R2 {
    base SONET_APPLICATION_CODE;
    description
      "SONET/SDH application code: VSR2000_3R2";
  }

  identity VSR2000_3R3 {
    base SONET_APPLICATION_CODE;
    description
      "SONET/SDH application code: VSR2000_3R3";
  }

  identity VSR2000_3R5 {
    base SONET_APPLICATION_CODE;
    description
      "SONET/SDH application code: VSR2000_3R5";
  }

  identity SONET_UNDEFINED {
    base SONET_APPLICATION_CODE;
    description
      "SONET/SDH application code: undefined";
  }

  identity OTN_APPLICATION_CODE {
    description
      "Supported OTN application codes";
  }

  identity P1L1_2D1 {
    base OTN_APPLICATION_CODE;
    description
      "OTN application code: P1L1_2D1";
  }

  identity P1S1_2D2 {
    base OTN_APPLICATION_CODE;
    description
      "OTN application code: P1S1_2D2";
  }

  identity P1L1_2D2 {
    base OTN_APPLICATION_CODE;
    description
      "OTN application code: P1L1_2D2";
  }

  identity OTN_UNDEFINED {
    base OTN_APPLICATION_CODE;
    description
      "OTN application code: undefined";
  }

  identity TRIBUTARY_RATE_CLASS_TYPE {
    description
      "Rate of tributary signal _- identities will typically reflect
      rounded bit rate.";
  }

  identity TRIB_RATE_1G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "1G tributary signal rate";
  }

  identity TRIB_RATE_2.5G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "2.5G tributary signal rate";
  }

  identity TRIB_RATE_10G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "10G tributary signal rate";
  }

  identity TRIB_RATE_40G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "40G tributary signal rate";
  }

  identity TRIB_RATE_100G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "100G tributary signal rate";
  }

  identity TRIB_RATE_150G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "150G tributary signal rate";
  }

  identity TRIB_RATE_200G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "200G tributary signal rate";
  }

  identity TRIB_RATE_250G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "250G tributary signal rate";
  }

  identity TRIB_RATE_300G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "300G tributary signal rate";
  }

  identity TRIB_RATE_400G {
    base TRIBUTARY_RATE_CLASS_TYPE;
    description
      "400G tributary signal rate";
  }

  identity LOGICAL_ELEMENT_PROTOCOL_TYPE {
    description
      "Type of protocol framing used on the logical channel or
      tributary";
  }

  identity PROT_ETHERNET {
    base LOGICAL_ELEMENT_PROTOCOL_TYPE;
    description
      "Ethernet protocol framing";
  }

  identity PROT_OTN {
    base LOGICAL_ELEMENT_PROTOCOL_TYPE;
    description
      "OTN protocol framing";
  }

  identity OPTICAL_CHANNEL {
    base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Optical channels act as carriers for transport traffic
      directed over a line system.  They are represented as
      physical components in the physical inventory model.";
  }

}
