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;
    revision-date "2016-06-06";
  }
  import openconfig-extensions {
    prefix oc-ext;
    revision-date "2015-10-09";
  }

  // 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.4.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 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";

    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
        sampling period.";
    }

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

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

  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";

    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
        sampling period.";
    }

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

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

  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";

    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
        sampling period.";
    }

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

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

  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";

    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
        sampling period.";
    }

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

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

  // 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_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 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.";
  }

}
