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

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

}
