bbf-hardware-transceivers

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on hardware management as ...

  • Version: 2021-06-02

    bbf-hardware-transceivers@2021-06-02


    
      module bbf-hardware-transceivers {
    
        yang-version 1.1;
    
        namespace
          "urn:bbf:yang:bbf-hardware-transceivers";
    
        prefix bbf-hw-xcvr;
    
        import ietf-hardware {
          prefix hw;
        }
        import bbf-hardware-types {
          prefix bbf-hwt;
        }
    
        organization
          "Broadband Forum <https://www.broadband-forum.org>
         Common YANG Work Area";
    
        contact
          "Comments or questions about this Broadband Forum YANG module
         should be directed to <mailto:help@broadband-forum.org>.
    
         Editor:      Nick Hancock, ADTRAN
    
         Editor:      Ludwig Pauwels, Nokia
    
         PS Leader:   Joey Boyd, ADTRAN
    
         PS Leader:   Sowrirajan Padmanabhan, Nokia
    
         WA Director: Joey Boyd, ADTRAN
    
         WA Director: Sven Ooghe, Nokia";
    
        description
          "This module contains a collection of YANG definitions for
         supporting the Broadband Forum requirements on hardware
         management as applicable to access network equipment.
         As such, this module is specific to access network equipment
         (e.g., BBF-specified Access Nodes and FTTdp DPUs).
    
         Specifically, this module augments the ietf-hardware model with
         management of compact transceivers.
    
         Copyright (c) 2017-2021, Broadband Forum
    
         Redistribution and use in source and binary forms, with or
         without modification, are permitted provided that the following
         conditions are met:
    
         1. Redistributions of source code must retain the above copyright
            notice, this list of conditions and the following disclaimer.
    
         2. Redistributions in binary form must reproduce the above
            copyright notice, this list of conditions and the following
            disclaimer in the documentation and/or other materials
            provided with the distribution.
    
         3. Neither the name of the copyright holder nor the names of its
            contributors may be used to endorse or promote products
            derived from this software without specific prior written
            permission.
    
         THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
         CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,
         INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
         MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
         DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
         CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
         NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
         LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
         CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
         STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
         ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
         ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
         The above license is used as a license under copyright only.
         Please reference the Forum IPR Policy for patent licensing terms
         <https://www.broadband-forum.org/ipr-policy>.
    
         Any moral rights which are necessary to exercise under the above
         license grant are also deemed granted under this license.
    
         This version of this YANG module is part of TR-383a4; see
         the TR itself for full legal notices.";
    
        revision "2021-06-02" {
          description
            "Amendment 4.
           * Approval Date:    2021-06-02.
           * Publication Date: 2021-06-02.";
          reference
            "TR-383a4: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-4.pdf>";
    
        }
    
        revision "2020-10-13" {
          description
            "Amendment 3.
           * Approval Date:    2020-10-13.
           * Publication Date: 2020-10-13.";
          reference
            "TR-383a3: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-3.pdf>";
    
        }
    
    
        feature vendor-eeprom {
          description
            "Indicates support for reporting the contents of the vendor-
           specific EEPROM data fields.";
          reference
            "SFF-8472 Rev 12.4, Table 4-1, Address A0h, Bytes 96-127;
            SFF-8436 Rev 4.9, Table 29, Upper Memory Map Page 00h,
            Bytes 224-255;
            INF-8077i Rev 4.5, Table 46, Page 01h,
            Bytes 224-255";
    
        }
    
        feature vendor-eeprom-string {
          if-feature vendor-eeprom;
          description
            "Indicates support for reporting the contents of the vendor-
           specific EEPROM data fields as a string.";
          reference
            "SFF-8472 Rev 12.4, Table 4-1, Address A0h, Bytes 96-127;
            SFF-8436 Rev 4.9, Table 29, Upper Memory Map Page 00h,
            Bytes 224-255;
            INF-8077i Rev 4.5, Table 46, Page 01h,
            Bytes 224-255";
    
        }
    
        feature vendor-eeprom-binary {
          if-feature vendor-eeprom;
          description
            "Indicates support for reporting the contents of the vendor-
           specific EEPROM data fields in binary format.";
          reference
            "SFF-8472 Rev 12.4, Table 4-1, Address A0h, Bytes 96-127;
            SFF-8436 Rev 4.9, Table 29, Upper Memory Map Page 00h,
            Bytes 224-255;
            INF-8077i Rev 4.5, Table 46, Page 01h,
            Bytes 224-255";
    
        }
    
        feature extended-information {
          description
            "Indicates whether reporting extended information data fields
           of the transceiver are supported.";
          reference
            "SFF-8472 Rev 12.4, Section 10";
    
        }
    
        feature user-eeprom {
          if-feature extended-information;
          description
            "Indicates support for reporting the contents of the user-
           writable EEPROM data fields.";
          reference
            "SFF-8472 Rev 12.4, Table 10-4, Address A2h, Page 00h/01h,
            Bytes 128-247;
            SFF-8436 Rev 4.9, Section 7.6.4 Upper Memory Map Page 02h,
            Bytes 128-255;
            INF-8077i Rev 4.5, Section 5.45 Upper Memory Map Table 02h,
            Bytes 128-255";
    
        }
    
        feature user-eeprom-string {
          if-feature user-eeprom;
          description
            "Indicates support for reporting the contents of the user-
           writable EEPROM data fields as a string.";
          reference
            "SFF-8472 Rev 12.4, Table 10-4, Address A2h, Page 00h/01h,
            Bytes 128-247;
            SFF-8436 Rev 4.9, Section 7.6.4 Upper Memory Map Page 02h,
            Bytes 128-255;
            INF-8077i Rev 4.5, Section 5.45 Upper Memory Map Table 02h,
            Bytes 128-255";
    
        }
    
        feature user-eeprom-binary {
          if-feature user-eeprom;
          description
            "Indicates support for reporting the contents of the user-
           writable EEPROM data fields in binary format.";
          reference
            "SFF-8472 Rev 12.4, Table 10-4, Address A2h, Page 00h/01h,
            Bytes 128-247;
            SFF-8436 Rev 4.9, Section 7.6.4 Upper Memory Map Page 02h,
            Bytes 128-255;
            INF-8077i Rev 4.5, Section 5.45 Upper Memory Map Table 02h,
            Bytes 128-255";
    
        }
    
        identity transceiver-alarm-warning {
          description
            "Base identity for the basic alarm and warning flags of the
           transceiver.
    
           This identity is abstract and MUST NOT be used for a
           transceiver alarm or warning flag.";
        }
    
        identity temperature-high {
          base transceiver-alarm-warning;
          description
            "The internal temperature has exceeded the high level
           threshold.";
        }
    
        identity temperature-low {
          base transceiver-alarm-warning;
          description
            "The internal temperature has dropped below the low level
           threshold.";
        }
    
        identity supply-voltage-high {
          base transceiver-alarm-warning;
          description
            "The internal supply voltage has exceeded the high level
           threshold.";
        }
    
        identity supply-voltage-low {
          base transceiver-alarm-warning;
          description
            "The internal supply voltage has dropped below the low level
           threshold.";
        }
    
        identity link-alarm-warning {
          description
            "Base identity for the physical links of alarm and warning flags
           of the transceiver.
    
           This identity is abstract and MUST NOT be used for a
           transceiver link alarm or warning flag.";
        }
    
        identity tx-bias-high {
          base link-alarm-warning;
          description
            "The transmit (TX) bias current has exceeded the high level
           threshold.";
        }
    
        identity tx-bias-low {
          base link-alarm-warning;
          description
            "The transmit (TX) bias current has dropped below the low level
           threshold.";
        }
    
        identity tx-power-high {
          base link-alarm-warning;
          description
            "The transmit (TX) output power has exceeded the high level
           threshold.";
        }
    
        identity tx-power-low {
          base link-alarm-warning;
          description
            "The transmit (TX) output power has dropped below the low
           level threshold.";
        }
    
        identity rx-power-high {
          base link-alarm-warning;
          description
            "The receive (RX) input power has exceeded the high level
           threshold.";
        }
    
        identity rx-power-low {
          base link-alarm-warning;
          description
            "The receive (RX) input power has dropped below the low level
           threshold.";
        }
    
        identity laser-temperature-high {
          base link-alarm-warning;
          description
            "The laser temperature has exceeded the high level threshold.";
        }
    
        identity laser-temperature-low {
          base link-alarm-warning;
          description
            "The laser temperature has dropped below the low level
           threshold.";
        }
    
        identity tec-current-high {
          base link-alarm-warning;
          description
            "The Thermoelectric Cooler (TEC) current has exceeded the high
           level threshold.";
        }
    
        identity tec-current-low {
          base link-alarm-warning;
          description
            "The Thermoelectric Cooler (TEC) current has dropped below the
           low level threshold.";
        }
    
        identity physical-device {
          description
            "Identifies the physical device.
    
           This identity is abstract and MUST NOT be used to represent a
           physical device.";
          reference
            "SFF-8472 Rev 12.4, Table 5-1, Address A0h, Byte 0";
    
        }
    
        identity unknown-physical-device {
          base physical-device;
          description "Unknown or unspecified.";
          reference
            "SFF-8472 Rev 12.4, Table 5-1, Address A0h, Byte 0, Value 00h;
            SFF-8024 Rev 4.8a, Table 4-1, Value 00h";
    
        }
    
        identity gbic {
          base physical-device;
          description "GBIC.";
          reference
            "SFF-8472 Rev 12.4, Table 5-1, Address A0h, Byte 0, Value 01h;
            SFF-8024 Rev 4.8a, Table 4-1, Value 01h";
    
        }
    
        identity sff {
          base physical-device;
          description
            "Module/connector soldered to a motherboard (using SFF-8472).";
          reference
            "SFF-8472 Rev 12.4, Table 5-1, Address A0h, Byte 0, Value 02h;
            SFF-8024 Rev 4.8a, Table 4-1, Value 02h";
    
        }
    
        identity sfp {
          base physical-device;
          description "SFP/SFP+/SFP28.";
          reference
            "SFF-8472 Rev 12.4, Table 5-1, Address A0h, Byte 0, Value 03h;
            SFF-8024 Rev 4.8a, Table 4-1, Value 03h";
    
        }
    
        identity xbi-300-pin {
          base physical-device;
          description "300 pin XBI.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 04h";
    
        }
    
        identity xenpak {
          base physical-device;
          description "XENPAK.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 05h";
    
        }
    
        identity xfp {
          base physical-device;
          description "XFP.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 06h";
    
        }
    
        identity xff {
          base physical-device;
          description "XFF.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 07h";
    
        }
    
        identity xfp-e {
          base physical-device;
          description "XFP-E.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 08h";
    
        }
    
        identity xpak {
          base physical-device;
          description "XPAK.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 09h";
    
        }
    
        identity x2 {
          base physical-device;
          description "X2.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 0Ah";
    
        }
    
        identity dwdm-sfp {
          base physical-device;
          description
            "DWDM-SFP/SFP+ (not using SFF-8472).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 0Bh";
    
        }
    
        identity qsfp {
          base physical-device;
          description "QSFP (INF-8438).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 0Ch";
    
        }
    
        identity qsfp-plus-or-later {
          base physical-device;
          description
            "QSFP+ or later (SFF-8436, SFF-8635, SFF-8665, SFF-8685 et
           al).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 0Dh";
    
        }
    
        identity cxp-or-later {
          base physical-device;
          description "CXP or later.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 0Eh";
    
        }
    
        identity shielded-mini-multilane-hd-4x {
          base physical-device;
          description
            "Shielded Mini Multilane HD 4x.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 0Fh";
    
        }
    
        identity shielded-mini-multilane-hd-8x {
          base physical-device;
          description
            "Shielded Mini Multilane HD 8x.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 10h";
    
        }
    
        identity qsfp28-or-later {
          base physical-device;
          description
            "QSFP28 or later (SFF-8665).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 11h";
    
        }
    
        identity cxp2-or-later {
          base physical-device;
          description
            "CXP2 (aka CXP28) or later.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 12h";
    
        }
    
        identity cdfp-style1-style2 {
          base physical-device;
          description "CDFP (Style 1/Style 2).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 13h";
    
        }
    
        identity shielded-mini-multilane-hd-4x-fanout-cable {
          base physical-device;
          description
            "Shielded Mini Multilane HD 4x Fanout Cable.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 14h";
    
        }
    
        identity shielded-mini-multilane-hd-8x-fanout-cable {
          base physical-device;
          description
            "Shielded Mini Multilane HD 8x Fanout Cable.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 15h";
    
        }
    
        identity cdfp-style3 {
          base physical-device;
          description "CDFP (Style 3).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 16h";
    
        }
    
        identity micro-qsfp {
          base physical-device;
          description "Micro QSFP.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 17h";
    
        }
    
        identity qsfp-dd {
          base physical-device;
          description
            "QSFP-DD Double Density 8X Pluggable Transceiver (INF-8628).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Value 18h";
    
        }
    
        identity vendor-specific {
          base physical-device;
          description
            "Vendor specfic physical device. A vendor may derive specific
           idenities from this one.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-1, Values 80h-FFh";
    
        }
    
        identity connector-type {
          description
            "Indentifies the external optical or electrical cable connector
           provided as the media interface.
    
           This identity is abstract and MUST NOT be used to represent a
           connector type.";
          reference
            "SFF-8472 Rev 12.4, Section 5.3, Address A0h, Byte 2";
    
        }
    
        identity unknown-connector-type {
          base connector-type;
          description "Unknown or unspecified.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 00h";
    
        }
    
        identity subscriber-connector {
          base connector-type;
          description
            "SC (Subscriber Connector).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 01h";
    
        }
    
        identity fibre-channel-style-1-copper {
          base connector-type;
          description
            "Fibre Channel Style 1 copper connector.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 02h";
    
        }
    
        identity fibre-channel-style-2-copper {
          base connector-type;
          description
            "Fibre Channel Style 2 copper connector.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 03h";
    
        }
    
        identity bnc-tnc {
          base connector-type;
          description
            "BNC/TNC (Bayonet/Threaded Neill-Concelman).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 04h";
    
        }
    
        identity fibre-channel-coax-headers {
          base connector-type;
          description
            "Fibre Channel coax headers.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 05h";
    
        }
    
        identity fibre-jack {
          base connector-type;
          description "Fibre Jack.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 06h";
    
        }
    
        identity lucent-connector {
          base connector-type;
          description "LC (Lucent Connector).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 07h";
    
        }
    
        identity mt-rj {
          base connector-type;
          description
            "MT-RJ (Mechanical Transfer - Registered Jack).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 08h";
    
        }
    
        identity mu {
          base connector-type;
          description "MU (Multiple Optical).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 09h";
    
        }
    
        identity sg {
          base connector-type;
          description "SG.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 0Ah";
    
        }
    
        identity optical-pigtail {
          base connector-type;
          description "Optical Pigtail.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 0Bh";
    
        }
    
        identity mpo-1x12 {
          base connector-type;
          description
            "MPO 1x12 (Multifiber Parallel Optic).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 0Ch";
    
        }
    
        identity mpo-2x16 {
          base connector-type;
          description
            "MPO 2x16 (Multifiber Parallel Optic).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 0Dh";
    
        }
    
        identity hssdc-ii {
          base connector-type;
          description
            "HSSDC II (High Speed Serial Data Connector).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 20h";
    
        }
    
        identity copper-pigtail {
          base connector-type;
          description "Copper Pigtail.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 21h";
    
        }
    
        identity rj45 {
          base connector-type;
          description "RF45 (Registered Jack).";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 22h";
    
        }
    
        identity no-separable-connector {
          base connector-type;
          description "No separable connector.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 23h";
    
        }
    
        identity mxc-2x16 {
          base connector-type;
          description "MXC 2x16.";
          reference
            "SFF-8024 Rev 4.8a, Table 4-3, Value 24h";
    
        }
    
        grouping link-parameters {
          description
            "Management data nodes related to the physical link of the
           transceiver.";
          choice wavelength-or-specification-compliance {
            description
              "For optical variants, report the nominal transmitter output
             wavelength. For passive and active cable variants, report the
             specification compliance.";
            reference
              "SFF-8472 Rev 12.4, Section 8.1, Address A0h, Bytes 60-61";
    
            leaf unspecified {
              type empty;
              description
                "Neither the laser wavelength or cable specification
                 compliance is specified.";
            }
            leaf wavelength {
              type uint32;
              units "nm";
              description
                "For optical variants, this denotes the nominal
                 transmitter output wavelength at room temperature.";
            }
            leaf passive-cable-specification-compliance {
              type enumeration {
                enum "fc-pi-4-appendix-h" {
                  value 0;
                  description
                    "Compliant to FC-PI-4 Appendix H.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-1, Address A0h, Byte 60,
                    bit 1";
    
                }
                enum "sff-8431-appendix-e" {
                  value 1;
                  description
                    "Compliant to SFF-8431 Appendix E.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-1, Address A0h, Byte 60,
                    bit 0";
    
                }
              }
              description
                "For passive cable variants, this denotes the passive
                 cable specification compliance.";
              reference
                "SFF-8472 Rev 12.4, Table 8-1";
    
            }
            leaf active-cable-specification-compliance {
              type enumeration {
                enum "fc-pi-4-limiting" {
                  value 0;
                  description
                    "Compliant to FC-PI-4 Limiting.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-2, Address A0h, Byte 60,
                    bit 3";
    
                }
                enum "sff-8431-limiting" {
                  value 1;
                  description
                    "Compliant to SFF-8431 Limiting.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-2, Address A0h, Byte 60,
                    bit 2";
    
                }
                enum "fc-pi-4-appendix-h" {
                  value 2;
                  description
                    "Compliant to FC-PI-4 Appendix H.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-2, Address A0h, Byte 60,
                    bit 1";
    
                }
                enum "sff-8431-appendix-e" {
                  value 3;
                  description
                    "Compliant to SFF-8431 Appendix E.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-2, Address A0h, Byte 60,
                    bit 0";
    
                }
              }
              description
                "For active cable variants, this denotes the active cable
                 specification compliance.";
              reference
                "SFF-8472 Rev 12.4, Table 8-2";
    
            }
          }  // choice wavelength-or-specification-compliance
        }  // grouping link-parameters
    
        grouping transceiver-diagnostic-parameters {
          description
            "Management data nodes related to retrieving diagnostic data
           from the transceiver.";
          leaf temperature {
            type int32;
            units "0.001 degrees Celsius";
            config false;
            mandatory true;
            description
              "Internally measured transceiver temperature Temperature
             accuracy is vendor specific but must be better than +/- 3
             degrees Celsius over specified operating temperature and
             voltage. ";
            reference
              "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 96-97";
    
          }
    
          leaf supply-voltage {
            type uint16;
            units "100 uV";
            config false;
            mandatory true;
            description
              "Internally measured transceiver supply voltage. Practical
             considerations to be defined by transceiver manufacturer will
             tend to limit the actual bounds of the supply voltage
             measurement. Accuracy is vendor specific but must be better
             than +/- 3% of the manufacturer's nominal value over
             specified operating temperature and voltage. Note that in
             some transceivers, transmitter supply voltage and receiver
             supply voltage are isolated. In that case, only one supply
             is monitored. Refer to the device specification for more
             detail.";
            reference
              "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 98-99";
    
          }
        }  // grouping transceiver-diagnostic-parameters
    
        grouping link-diagnostic-parameters {
          description
            "Management data nodes related to retrieving diagnostic physical
           link data from the transceiver.";
          leaf tx-bias {
            type uint32;
            units "uA";
            config false;
            mandatory true;
            description
              "Measured TX bias current in mA. Accuracy is vendor specific
             but must be better than +/- 10% of the manufacturer's nominal
             value over specified operating temperature and voltage.";
            reference
              "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 100-101";
    
          }
    
          choice power {
            mandatory true;
            description
              "Measured receive (RX) and transmit (TX) power.";
            case power-in-mwatt {
              leaf tx-power {
                type uint16;
                units "0.1 mW";
                mandatory true;
                description
                  "Measured TX output power in mW. Data is assumed to be
                 based on measurement of laser monitor photodiode current.
                 It is factory calibrated to absolute units using the most
                 representative fiber output type. Accuracy is vendor
                 specific but must be better than +/- 3dB over specified
                 temperature and voltage. Data is not valid when the
                 transmitter is disabled.";
                reference
                  "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 102-
                  103";
    
              }
    
              leaf rx-power {
                type uint16;
                units "0.1 mW";
                mandatory true;
                description
                  "Measured received (RX) optical power in mW. Absolute
                 accuracy is dependent upon the exact optical wavelength.
                 For the vendor specified wavelength, accuracy shall be
                 better than +/- 3dB over specified temperature and
                 voltage. This accuracy shall be maintained for input
                 power levels up to the lesser of maximum transmitted or
                 maximum received optical power per the appropriate
                 standard. It shall be maintained down to the minimum
                 transmitted power minus cable plant loss (insertion  loss
                 or passive loss) per the appropriate standard. Absolute
                 accuracy beyond this minimum required received input
                 optical power range is vendor specific.";
                reference
                  "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 104-
                  105";
    
              }
            }  // case power-in-mwatt
          }  // choice power
    
          leaf laser-temperature {
            type int32;
            units "0.001 degrees Celsius";
            config false;
            description
              "Measured optional laser temperature. The relative and
             absolute accuracy are vendor specific but relative laser
             temperature accuracy must be better than +/- 0.2 degrees
             Celsius. [Relative temperature accuracy refers to the
             accuracy of the reported temperature changes relative to the
             actual laser temperature changes";
            reference
              "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 106-107";
    
          }
    
          leaf tec-current {
            type int16;
            units "0.1 mA";
            config false;
            description
              "Measured Thermoelectric Cooler (TEC) current. The format is
             signed two's complement with the LSB equal to 0.1 mA. Thus a
             range from -3276.8 to +3276.7 mA may be reported with a
             resolution of 0.1 mA. Reported TEC current is a positive
             number for cooling and a negative number for heating. The
             accuracy of the TEC current monitor is vendor specific but
             must be better than +/- 15% of the maximum TEC current as
             stored in the TEC current high alarm threshold.";
            reference
              "SFF-8472 Rev 12.4, Table 9-16, Address A2h, Bytes 108-109";
    
          }
        }  // grouping link-diagnostic-parameters
    
        grouping transceiver-alarm-diagnostic-parameters {
          description
            "Management data nodes related to retrieving diagnostic basic
           alarm data from the transceiver.";
          leaf-list alarm-flag {
            type identityref {
              base transceiver-alarm-warning;
            }
            config false;
            description
              "Alarm flags associated with transceiver temperature and
             supply voltage as well as reserved locations for future
             flags. Alarm flags indicate conditions likely to be
             associated with an in-operational link and cause for
             immediate action.";
            reference
              "SFF-8472 Rev 12.4, Table 9-7, Address A2h, Bytes 112-117;
              SFF-8436 Rev 4.9, Table 25, Page A0, Address 100-106";
    
          }
    
          leaf-list warning-flag {
            type identityref {
              base transceiver-alarm-warning;
            }
            config false;
            description
              "Warning flags associated with transceiver temperature and
             supply voltage as well as reserved locations for future
             flags. Warning flags indicate conditions outside the normally
             guaranteed bounds but not necessarily causes of immediate
             link failures. Certain warning flags may also be defined by
             the manufacturer as end-of-life indicators (such as for
             higher than expected bias currents in a constant power
             control loop).";
            reference
              "SFF-8472 Rev 12.4, Table 9-17, Address A2h, Bytes 112-117;
              SFF-8436 Rev 4.9, Table 25, Page A0, Address 100-106";
    
          }
        }  // grouping transceiver-alarm-diagnostic-parameters
    
        grouping link-alarm-diagnostic-parameters {
          description
            "Management data nodes related to retrieving diagnostic physical
           link alarm data from the transceiver.";
          leaf-list alarm-flag {
            type identityref {
              base link-alarm-warning;
            }
            config false;
            description
              "Alarm flags associated with transceiver TX bias current, TX
             output power and received optical power as well as reserved
             locations for future flags. Alarm flags indicate conditions
             likely to be associated with an in-operational link and cause
             for immediate action.";
            reference
              "SFF-8472 Rev 12.4, Table 9-7, Address A2h, Bytes 112-117;
              SFF-8436 Rev 4.9, Table 25, Page A0, Address 100-106";
    
          }
    
          leaf-list warning-flag {
            type identityref {
              base link-alarm-warning;
            }
            config false;
            description
              "Warning flags associated with TX bias current, TX output
             power and received optical power as well as reserved
             locations for future flags. Warning flags indicate conditions
             outside the normally guaranteed bounds but not necessarily
             causes of immediate link failures. Certain warning flags may
             also be defined by the manufacturer as end-of-life indicators
             (such as for higher than expected bias currents in a constant
             power control loop).";
            reference
              "SFF-8472 Rev 12.4, Table 9-7, Address A2h, Bytes 112-117;
              SFF-8436 Rev 4.9, Table 25, Page A0, Address 100-106";
    
          }
        }  // grouping link-alarm-diagnostic-parameters
    
        grouping transceiver-compliance-codes {
          description
            "Nodes which allow reporting of the transceivers compliance.";
          container compliance-codes {
            description
              "Compliance codes which collectively represent the electronic
             or optical interfaces that are supported by the
             transceiver.";
            reference
              "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Bytes 3-10, 36,
              62";
    
            leaf ten-gigabit-ethernet {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "10g-base-er" {
                  value 1;
                  description "10G Base-ER.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 7";
    
                }
                enum "10g-base-lrm" {
                  value 2;
                  description "10G Base-LRM.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 6";
    
                }
                enum "10g-base-lr" {
                  value 3;
                  description "10G Base-LR.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 5";
    
                }
                enum "10g-base-sr" {
                  value 4;
                  description "10G Base-SR.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 4";
    
                }
              }
              config false;
              description
                "10G Ethernet Compliance Codes.";
            }
    
            leaf infiniband {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "1x-sx" {
                  value 1;
                  description "1X SX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 3";
    
                }
                enum "1x-lx" {
                  value 2;
                  description "1X LX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 2";
    
                }
                enum "1x-copper-active" {
                  value 3;
                  description
                    "1X Copper Active.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 1";
    
                }
                enum "1x-copper-passive" {
                  value 4;
                  description
                    "1X Copper Passive.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 3,
                    bit 0";
    
                }
              }
              config false;
              description
                "Infiniband Compliance Codes.";
            }
    
            leaf escon {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "escon-mmf" {
                  value 1;
                  description
                    "ESCON MMF, 1310nm LED.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 7";
    
                }
                enum "escon-smf" {
                  value 2;
                  description
                    "ESCON SMF, 1310nm Laser.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 6";
    
                }
              }
              config false;
              description
                "ESCON Compliance Codes.";
            }
    
            leaf sonet {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "oc-192-short-reach" {
                  value 1;
                  description
                    "OC-192, short reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 5";
    
                }
                enum
                  "sonet-reach-specifier-bit1" {
                  value 2;
                  description
                    "SONET reach specifier bit 1.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 4";
    
                }
                enum
                  "sonet-reach-specifier-bit2" {
                  value 3;
                  description
                    "SONET reach specifier bit 2.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 3";
    
                }
                enum "oc-48-long-reach" {
                  value 4;
                  description
                    "OC-48, long reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 2";
    
                }
                enum "oc-48-intermediate-reach" {
                  value 5;
                  description
                    "OC-48, intermediate reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 1";
    
                }
                enum "oc-48-short-reach" {
                  value 6;
                  description
                    "OC-48, short reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 4,
                    bit 0";
    
                }
                enum
                  "oc-12-single-mode-long-reach" {
                  value 7;
                  description
                    "OC-12, single mode, long reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 5,
                    bit 6";
    
                }
                enum
                  "oc-12-single-mode-intermediate-reach" {
                  value 8;
                  description
                    "OC-12, single mode, intermediate reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 5,
                    bit 5";
    
                }
                enum "oc-12-short-reach" {
                  value 9;
                  description
                    "OC-12, short reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 5,
                    bit 4";
    
                }
                enum
                  "oc-3-single-mode-long-reach" {
                  value 10;
                  description
                    "OC-3, single mode, long reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 5,
                    bit 2";
    
                }
                enum
                  "oc-3-single-mode-intermediate-reach" {
                  value 11;
                  description
                    "OC-3, single mode, intermediate reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 5,
                    bit 1";
    
                }
                enum "oc-3-short-reach" {
                  value 12;
                  description
                    "OC-3, short reach.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 5,
                    bit 0";
    
                }
              }
              config false;
              description
                "SONET Compliance Codes.";
            }
    
            leaf ethernet {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "base-px" {
                  value 1;
                  description "BASE-PX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 7";
    
                }
                enum "base-bx10" {
                  value 2;
                  description "BASE-BX10.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 6";
    
                }
                enum "100base-fx" {
                  value 3;
                  description "100BASE-FX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 5";
    
                }
                enum "100base-lx-or-lx-10" {
                  value 4;
                  description
                    "100BASE-LX/LX-10.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 4";
    
                }
                enum "1000base-t" {
                  value 5;
                  description "1000BASE-T.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 3";
    
                }
                enum "1000base-cx" {
                  value 6;
                  description "1000BASE-CX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 2";
    
                }
                enum "1000base-lx" {
                  value 7;
                  description "1000BASE-LX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 1";
    
                }
                enum "1000base-sx" {
                  value 8;
                  description "1000BASE-SX.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 6,
                    bit 0";
    
                }
              }
              config false;
              description
                "Ethernet Compliance Codes.";
            }
    
            leaf fibre-channel-link-length {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "very-long-distance" {
                  value 1;
                  description
                    "Very long distance (V).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 7";
    
                }
                enum "short-distance" {
                  value 2;
                  description
                    "Short distance (S).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 6";
    
                }
                enum "intermediate-distance" {
                  value 3;
                  description
                    "Intermediate distance (I).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 5";
    
                }
                enum "long-distance" {
                  value 4;
                  description
                    "Long distance (L).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 4";
    
                }
                enum "medium-distance" {
                  value 5;
                  description
                    "Medium distance (M).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 3";
    
                }
              }
              config false;
              description
                "Fibre channel link length.";
            }
    
            leaf fibre-channel-technology {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "shortwave-laser-linear" {
                  value 1;
                  description
                    "Shortwave laser, linear (SA).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 2";
    
                }
                enum "longwave-laser-lc" {
                  value 2;
                  description
                    "Longwave laser (LC).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 1";
    
                }
                enum
                  "electrical-inter-enclosure" {
                  value 3;
                  description
                    "Electrical inter-enclosure (EL).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 7,
                    bit 0";
    
                }
                enum
                  "electrical-intra-enclosure" {
                  value 4;
                  description
                    "Electrical intra-enclosure (EL).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 8,
                    bit 7";
    
                }
                enum
                  "shortwave-laser-without-ofc" {
                  value 5;
                  description
                    "Shortwave laser w/o OFC (SN).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 8,
                    bit 6";
    
                }
                enum "shortwave-laser-with-ofc" {
                  value 6;
                  description
                    "Shortwave laser with OFC (SL).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 8,
                    bit 5";
    
                }
                enum "longwave-laser-ll" {
                  value 7;
                  description
                    "Longwave laser (LL).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 8,
                    bit 4";
    
                }
              }
              config false;
              description
                "Fibre channel technology.";
            }
    
            leaf sfp-plus-cable-technology {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "active-cable" {
                  value 1;
                  description "Active Cable.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 8,
                    bit 3";
    
                }
                enum "passive-cable" {
                  value 2;
                  description "Passive Cable.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 8,
                    bit 2";
    
                }
              }
              config false;
              description
                "SFP+ cable technology.";
            }
    
            leaf fibre-channel-transmission-media {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "twin-axial-pair" {
                  value 1;
                  description
                    "Twin Axial Pair (TW).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                    bit 7";
    
                }
                enum "twin-twisted-pair" {
                  value 2;
                  description
                    "Twin Twisted Pair (TP).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                    bit 6";
    
                }
                enum "miniature-coax" {
                  value 3;
                  description
                    "Miniature Coax (MI).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                    bit 5";
    
                }
                enum "video-coax" {
                  value 4;
                  description "Video Coax (TV).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                    bit 4";
    
                }
                enum "multimode-62.5um" {
                  value 5;
                  description
                    "Multimode, 62.5um (M6).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                    bit 3";
    
                }
                enum "multimode-50um" {
                  value 6;
                  description
                    "Multimode, 50um (M5 or M5E).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                    bit 2";
    
                }
                enum "single-mode" {
                  value 7;
                  description
                    "Single Mode (SM).";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 9,
                     bit 0";
    
                }
              }
              config false;
              description
                "Fibre channel transmission media.";
            }
    
            leaf fibre-channel-speed {
              type enumeration {
                enum "not-applicable" {
                  value 0;
                  description "Not applicable.";
                }
                enum "1200-mbytes-sec" {
                  value 1;
                  description "1200 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 7";
    
                }
                enum "800-mbytes-sec" {
                  value 2;
                  description "800 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 6";
    
                }
                enum "1000-mbytes-sec" {
                  value 3;
                  description "1600 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 5";
    
                }
                enum "400-mbytes-sec" {
                  value 4;
                  description "400 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 4";
    
                }
                enum "3200-mbytes-sec" {
                  value 5;
                  description "3200 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 3";
    
                }
                enum "200-mbytes-sec" {
                  value 6;
                  description "200 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 2";
    
                }
                enum "100-mbytes-sec" {
                  value 7;
                  description "100 MBytes/sec.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-3, Address A0h, Byte 10,
                    bit 0";
    
                }
              }
              config false;
              description "Fibre channel speed.";
            }
          }  // container compliance-codes
        }  // grouping transceiver-compliance-codes
    
        grouping identifiers-and-codes {
          description
            "Identifiers and codes specific to a given transceiver.";
          container identifiers-and-codes {
            description
              "Identifiers and codes specific to a given transceiver.";
            reference
              "SFF-8472 Rev 12.4, Section 5";
    
            leaf physical-device {
              type identityref {
                base physical-device;
              }
              config false;
              description
                "The identifier value specifies the physical device
               described by two-wire interface information.";
              reference
                "SFF-8472 Rev 12.4, Table 5-1, Address A0h, Byte 0";
    
            }
    
            leaf physical-device-extended-identifier {
              type enumeration {
                enum "not-specified" {
                  value 0;
                  description
                    "GBIC definition is not specified or the GBIC definition
                   is not compliant with a defined MOD_DEF.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 00h";
    
                }
                enum "mod-def1" {
                  value 1;
                  description
                    "GBIC is compliant with MOD_DEF 1.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 01h";
    
                }
                enum "mod-def2" {
                  value 2;
                  description
                    "GBIC is compliant with MOD_DEF 2.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 02h";
    
                }
                enum "mod-def3" {
                  value 3;
                  description
                    "GBIC is compliant with MOD_DEF 3.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 03h";
    
                }
                enum "two-wire-interface-id" {
                  value 4;
                  description
                    "GBIC/SFP function is defined by two-wire interface ID
                   only.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 04h";
    
                }
                enum "mod-def5" {
                  value 5;
                  description
                    "GBIC is compliant with MOD_DEF 5.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 05h";
    
                }
                enum "mod-def6" {
                  value 6;
                  description
                    "GBIC is compliant with MOD_DEF 6.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 06h";
    
                }
                enum "mod-def7" {
                  value 7;
                  description
                    "GBIC is compliant with MOD_DEF 7.";
                  reference
                    "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1,
                    Value 07h";
    
                }
              }
              config false;
              description
                "The extended identifier value provides additional
               information about the transceiver. The field should be set
               to 'two-wire-interface-id' for all SFP modules indicating
               two-wire interface ID module definition. In many cases, a
               GBIC elects to use MOD_DEF 4 to make additional information
               about the GBIC available, even though the GBIC is actually
               compliant with one of the six other MOD_DEF values defined
               for GBICs. The extended identifier allows the GBIC to
               explicitly specify such compliance without requiring the
               MOD_DEF value to be inferred from the other information
               provided.";
              reference
                "SFF-8472 Rev 12.4, Table 5-2, Address A0h, Byte 1";
    
            }
    
            leaf connector {
              type identityref {
                base connector-type;
              }
              config false;
              description
                "Indicates the external optical or electrical cable
               connector provided as the media interface.";
              reference
                "SFF-8472 Rev 12.4, Section 5.3 Address A0h, Byte 2";
    
            }
    
            uses transceiver-compliance-codes;
    
            leaf encoding {
              type enumeration {
                enum "unspecified" {
                  value 0;
                  description
                    "Unspecified encoding.";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, Common Value 00h";
    
                }
                enum "8b-10b" {
                  value 1;
                  description
                    "8-bit words to 10-bit symbols (8B/10B).";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, Common Value 01h";
    
                }
                enum "4b-5b" {
                  value 2;
                  description
                    "4-bits to 5-bits (4B/5B).";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, Common Value 02h";
    
                }
                enum "nrz" {
                  value 3;
                  description
                    "Non-return-to-zero (NRZ).";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, Common Value 03h";
    
                }
                enum "manchester" {
                  value 4;
                  description
                    "Manchester encoding.";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, SFF-8472 Value 04h;
                    SFF-8x36 Value 06h";
    
                }
                enum "sonet-scrambled" {
                  value 5;
                  description "SONET scrambled.";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, SFF-8472 Value 05h;
                    SFF-8x36 Value 04h";
    
                }
                enum "64b-66b" {
                  value 6;
                  description
                    "64-bit data to 66-bit line code (64B/66B).";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, SFF-8472 Value 06h;
                    SFF-8x36 Value 05h";
    
                }
                enum "256b-257b" {
                  value 7;
                  description
                    "4 66 bit line code blocks to 257-bit block
                   (256B/257B).";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, Common Value 07h";
    
                }
                enum "pam4" {
                  value 8;
                  description
                    "4-bit Pulse Amplitude Modulation (PAM4).";
                  reference
                    "SFF-8024 Rev 4.8a, Table 4-2, Common Value 08h";
    
                }
              }
              config false;
              description
                "The encoding value indicates the serial encoding mechanism
               that is the nominal design target of the particular
               transceiver. The value shall be contained in the two-wire
               interface data.";
              reference
                "SFF-8472 Rev 12.4, Section 5.5, Address A0h, Byte 11";
    
            }
    
            leaf nominal-bit-rate {
              type uint8;
              units "MBd";
              config false;
              description
                "The nominal bit (signaling) rate (BR, nominal) is specified
               in units of MBd. The bit rate includes those bits necessary
               to encode and delimit the signal as well as those bits
               carrying data information.
    
               For bit rates < 25.0 Gbps, the value will be reported in
               units of 100MBd to the nearest 100MBd.
    
               For bit rates >= 25.0 Gbps, the value will be reported in
               units of 250MBd to the nearest 250MBd.
    
               A value of 0 indicates that the bit rate is not specified
               and must be determined from the transceiver technology. The
               actual information transfer rate will depend on the
               encoding of the data, as defined by the encoding value.";
              reference
                "SFF-8472 Rev 12.4, Table 5-6, Address A0h, Byte 13;
                SFF-8472 Rev 12.4, Section 8.4, Address A0h, Byte 66";
    
            }
    
            leaf maximum-bit-rate {
              type uint8;
              units
                "1 percent above the nominal bit rate";
              config false;
              description
                "The upper bit rate limit at which the transceiver will
               still meet its specifications.";
              reference
                "SFF-8472 Rev 12.4, Section 8.4, Address A0h, Byte 66";
    
            }
    
            leaf minimum-bit-rate {
              type uint8;
              units
                "1 percent below the nominal bit rate";
              config false;
              description
                "The lower bit rate limit at which the transceiver will
               still meet its specifications.";
              reference
                "SFF-8472 Rev 12.4, Section 8.5, Address A0h, Byte 67";
    
            }
          }  // container identifiers-and-codes
        }  // grouping identifiers-and-codes
    
        grouping link-length {
          description
            "Nodes corresponding to link length.";
          container link-length {
            description
              "Link lengths for various modes of operation.";
            reference
              "SFF-8472 Rev 12.4, Section 5";
    
            leaf length-single-mode-km {
              type uint8;
              units "km";
              config false;
              description
                "This value specifies the link length that is supported by
               the transceiver while operating in compliance with the
               applicable standards using single mode fiber. The value is
               in units of kilometers. A value of 255 means that the
               transceiver supports a link length greater than 254 km. A
               value of zero means that the transceiver does not support
               single mode fiber or that the length information must be
               determined from the transceiver technology.";
              reference
                "SFF-8472 Rev 12.4, Section 6.1, Address A0h, Byte 14";
    
            }
    
            leaf length-single-mode-100m {
              type uint8;
              units "100 meters";
              config false;
              description
                "This value specifies the link length that is supported by
               the transceiver while operating in compliance with the
               applicable standards using single mode fiber. The value is
               in units of 100 meters. A value of 255 means that the
               transceiver supports a link length greater than 25.4 km. A
               value of zero means that the transceiver does not support
               single mode fiber or that the length information must be
               determined from the transceiver technology.";
              reference
                "SFF-8472 Rev 12.4, Section 6.2, Address A0h, Byte 15";
    
            }
    
            leaf length-50um-om2 {
              type uint8;
              units "10 meters";
              config false;
              description
                "This value specifies link length that is supported by the
               transceiver while operating in compliance with applicable
               standards using 50 micron multimode OM2 [500MHz*km at
               850nm] fiber. The value is in units of 10 meters. A value
               of 255 means that the transceiver supports a link length
               greater than 2.54 km. A value of zero means that the
               transceiver does not support 50 micron multimode fiber or
               that the length information must be determined from the
               transceiver technology.";
              reference
                "SFF-8472 Rev 12.4, Section 6.3, Address A0h, Byte 16";
    
            }
    
            leaf length-62.5um-om2 {
              type uint8;
              units "10 meters";
              config false;
              description
                "This value specifies link length that is supported by the
               transceiver while operating in compliance with applicable
               standards using 62.5 micron multimode OM1 [200 MHz*km at
               850nm, 500 MHz*km at 1310nm] fiber. The value is in units
               of 10 meters. A value of 255 means that the transceiver
               supports a link length greater than 2.54 km. A value of
               zero means that the transceiver does not support 62.5
               micron multimode fiber or that the length information must
               determined from the transceiver technology. It is common
               for a multimode transceiver to support OM1, OM2 and OM3
               fiber.";
              reference
                "SFF-8472 Rev 12.4, Section 6.4, Address A0h, Byte 17";
    
            }
    
            leaf length-50um-om4 {
              type uint8;
              units "10 meters";
              config false;
              description
                "This value specifies link length that is
               supported by the transceiver while operating in compliance
               with applicable standards using 50 micron multimode OM4
               [4700 MHz*km] fiber. The value is in units of 10 meters. A
               value of 255 means that the transceiver supports a link
               length greater than 2.54 km. A value of zero means that the
               transceiver does not support 50 micron multimode fiber or
               that the length information must be determined from the
               transceiver codes.";
              reference
                "SFF-8472 Rev 12.4, Section 6.5, Address A0h, Byte 18";
    
            }
    
            leaf length-active-cable-or-copper {
              type uint8;
              units "1 meter";
              config false;
              description
                "This value specifies minimum link length supported by the
               transceiver while operating in compliance with applicable
               standards using copper cable. For active cable, this value
               represents actual length. The value is in units of 1 meter.
               A value of 255 means the transceiver supports a link length
               greater than 254 meters. A value of zero means the
               transceiver does not support copper or active cables or the
               length information must be determined from transceiver
               technology. Further information about cable design,
               equalization, and connectors is usually required to
               guarantee meeting a particular length requirement.";
              reference
                "SFF-8472 Rev 12.4, Section 6.5, Address A0h, Byte 18";
    
            }
    
            leaf length-50um-om3 {
              type uint8;
              units "10 meters";
              config false;
              description
                "This value specifies link length that is supported by the
               transceiver while operating in compliance with applicable
               standards using 50 micron multimode OM3 [2000 MHz*km]
               fiber. The value is in units of 10 meters. A value of 255
               means that the transceiver supports a link length greater
               than 2.54 km. A value of zero means that the transceiver
               does not support 50 micron multimode fiber or that the
               length information must be determined from the transceiver
               technology.";
              reference
                "SFF-8472 Rev 12.4, Table 6-1, Address A0h, Byte 19";
    
            }
          }  // container link-length
        }  // grouping link-length
    
        grouping vendor-fields {
          description
            "Vendor specific transceiver data.";
          container vendor-fields {
            description
              "Transceiver information relative to the vendor. SFF-8472
             sections 7.1 to 7.4, 8.6 and 8.7 define this data. The
             following are already defined in the base ietf-hardware
             model for each component regardless of class.
    
             7.1 Vendor Name
             The vendor name is a 16 character field that contains ASCII
             characters, left-aligned and padded on the right with ASCII
             spaces (20h). The vendor name shall be the full name of the
             corporation, a commonly accepted abbreviation of the name of
             the corporation, the SCSI company code for the corporation,
             or the stock exchange code for the corporation. At least one
             of the vendor name or the vendor OUI fields shall contain
             valid data.
    
             This is reported via 'mfg-name'.
    
             7.4 Vendor Rev
             The vendor revision number (vendor rev) is a 4-byte field
             that contains ASCII characters, left-aligned and padded on
             the right with ASCII spaces (20h), defining the Vendor's
             product revision number. An empty string indicates that the
             vendor revision is unspecified.
    
             This is reported via 'hardware-rev'.
    
             8.6 Vendor SN
             The vendor serial number (vendor SN) is a 16 character field
             that contains ASCII characters, left-aligned and padded on
             the right with ASCII spaces (20h), defining the Vendor's
             serial number for the transceiver. An empty string indicates
             that the vendor SN is unspecified.
    
             This is reported via 'serial-num'.
    
             8.7 Date Code
             The date code is an 8-byte field that contains the Vendor's
             date code in ASCII characters. The date code is mandatory.
    
             This is reported via 'mfg-date'.";
            reference
              "SFF-8472 Rev 12.4, Section 7, 8.6, 8.7";
    
            leaf oui {
              type string {
                pattern
                  '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){2}';
              }
              config false;
              description
                "The vendor organizationally unique identifier field
               (Vendor OUI) is a 3-byte field that contains the IEEE
               Company Identifier for the vendor. A value of '00:00:00'
               indicates that the Vendor OUI is unspecified.";
              reference
                "SFF-8472 Rev 12.4, Section 7.2, Address 10h, Bytes 37-39";
    
            }
    
            leaf part-number {
              type string {
                pattern '[ -~]{0,16}';
              }
              config false;
              description
                "The vendor part number (vendor PN) is a 16-byte field that
               contains ASCII characters, left-aligned and padded on the
               right with ASCII spaces (20h), defining the vendor part
               number or product name. An empty string indicates that the
               vendor PN is unspecified.";
              reference
                "SFF-8472 Rev 12.4, Section 7.3, Address 10h, Bytes 40-45";
    
            }
    
            container eeprom {
              if-feature bbf-hw-xcvr:vendor-eeprom;
              config false;
              description
                "Data nodes reporting the contents of the vendor-specific
               EEPROM data fields.";
              reference
                "SFF-8472 Rev 12.4, Table 4-1, Address A0h, Bytes 96-127;
                SFF-8436 Rev 4.9, Table 29, Upper Memory Map Page 00h,
                Bytes 224-255;
                INF-8077i Rev 4.5, Table 46, Page 01h,
                Bytes 224-255";
    
              leaf string {
                if-feature bbf-hw-xcvr:vendor-eeprom-string;
                type string {
                  length "0..32";
                  pattern '[ -~]*';
                }
                description
                  "Contents of the vendor-specific EEPROM locations as a
                 sequence of an ASCII characters. Note that non-printable
                 characters will be ignored.
    
                 A zero length string indicates no octets are printable
                 ASCII characters
    
                 The binary representation provided by 'binary', if
                 supported, will return all octets regardless of value.";
              }
    
              leaf binary {
                if-feature bbf-hw-xcvr:vendor-eeprom-binary;
                type binary {
                  length "0..32";
                }
                description
                  "Contents of the vendor-specific EEPROM locations as a
                 sequence of octets.";
              }
            }  // container eeprom
          }  // container vendor-fields
        }  // grouping vendor-fields
    
        grouping thresholds {
          description "Transceiver thresholds.";
          container thresholds {
            description
              "Each diagnostic value has a corresponding high alarm, low
             alarm, high warning and low warning threshold. These factory
             preset values allow the user to determine when a particular
             value is outside of 'normal' limits as determined by the
             transceiver manufacturer. It is assumed that these values
             will vary with different technologies and different
             implementations. When external calibration is used, data may
             be compared to alarm and warning threshold values before or
             after calibration by the host. Comparison can be done
             directly before calibration. If comparison is to be done
             after calibration, calibration must first be applied to both
             data and threshold values.
    
             The values reported in the alarm and warning thresholds area
             (see below) may be temperature compensated or otherwise
             adjusted when setting warning and/or alarm flags. Any
             threshold compensation or adjustment is vendor specific and
             optional.";
            reference
              "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 0-39";
    
            leaf temperature-high-alarm {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature above which will trigger a high temperature
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 00-01";
    
            }
    
            leaf temperature-low-alarm {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature below which will trigger a low temperature
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 02-03";
    
            }
    
            leaf temperature-high-warning {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature above which will trigger a high temperature
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 04-05";
    
            }
    
            leaf temperature-low-warning {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature below which will trigger a low temperature
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 06-07";
    
            }
    
            leaf supply-voltage-high-alarm {
              type uint16;
              units "100 uV";
              config false;
              description
                "The voltage above which will trigger a high supply voltage
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 08-09";
    
            }
    
            leaf supply-voltage-low-alarm {
              type uint16;
              units "100 uV";
              config false;
              description
                "The voltage below which will trigger a low supply voltage
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 10-11";
    
            }
    
            leaf supply-voltage-high-warning {
              type uint16;
              units "100 uV";
              config false;
              description
                "The voltage above which will trigger a high supply voltage
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 12-13";
    
            }
    
            leaf supply-voltage-low-warning {
              type uint16;
              units "100 uV";
              config false;
              description
                "The voltage below which will trigger a low supply voltage
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 14-15";
    
            }
    
            leaf tx-bias-high-alarm {
              type uint16;
              units "uA";
              config false;
              description
                "The bias current above which will trigger a high transmit
               bias alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 16-17";
    
            }
    
            leaf tx-bias-low-alarm {
              type uint16;
              units "uA";
              config false;
              description
                "The bias current below which will trigger a low transmit
               bias alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 18-19";
    
            }
    
            leaf tx-bias-high-warning {
              type uint16;
              units "uA";
              config false;
              description
                "The bias current above which will trigger a high transmit
               bias warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 20-21";
    
            }
    
            leaf tx-bias-low-warning {
              type uint16;
              units "uA";
              config false;
              description
                "The bias current below which will trigger a low transmit
               bias warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 22-23";
    
            }
    
            leaf tx-power-high-alarm {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power above which will trigger a high transmit power
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 24-25";
    
            }
    
            leaf tx-power-low-alarm {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power below which will trigger a low transmit power
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 26-27";
    
            }
    
            leaf tx-power-high-warning {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power above which will trigger a high transmit power
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 28-29";
    
            }
    
            leaf tx-power-low-warning {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power below which will trigger a low transmit power
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 30-31";
    
            }
    
            leaf rx-power-high-alarm {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power above which will trigger a high receive power
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 32-33";
    
            }
    
            leaf rx-power-low-alarm {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power below which will trigger a low receive power
               alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 34-35";
    
            }
    
            leaf rx-power-high-warning {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power above which will trigger a high receive power
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 36-37";
    
            }
    
            leaf rx-power-low-warning {
              type uint16;
              units "0.1 uW";
              config false;
              description
                "The power below which will trigger a low receive power
               warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 38-39";
    
            }
    
            leaf laser-temperature-high-alarm {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature above which will trigger a high laser
               temperature alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 40-41";
    
            }
    
            leaf laser-temperature-low-alarm {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature below which will trigger a low laser
               temperature alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 42-43";
    
            }
    
            leaf laser-temperature-high-warning {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature above which will trigger a high laser
               temperature warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 44-45";
    
            }
    
            leaf laser-temperature-low-warning {
              type int32;
              units "0.001 degrees Celsius";
              config false;
              description
                "The temperature below which will trigger a low laser
               temperature warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 46-47";
    
            }
    
            leaf tec-current-high-alarm {
              type int16;
              units "0.1 mA";
              config false;
              description
                "The current above which will trigger a high Thermoelectric
               Cooler (TEC) current alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 48-49";
    
            }
    
            leaf tec-current-low-alarm {
              type int16;
              units "0.1 mA";
              config false;
              description
                "The current below which will trigger a low Thermoelectric
               Cooler (TEC) current alarm.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 50-51";
    
            }
    
            leaf tec-current-high-warning {
              type int16;
              units "0.1 mA";
              config false;
              description
                "The current above which will trigger a high Thermoelectric
               Cooler (TEC) current warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 52-53";
    
            }
    
            leaf tec-current-low-warning {
              type int16;
              units "0.1 mA";
              config false;
              description
                "The current below which will trigger a low Thermoelectric
               Cooler (TEC) current warning.";
              reference
                "SFF-8472 Rev 12.4, Table 9-5, Address A2h, Bytes 54-55";
    
            }
          }  // container thresholds
        }  // grouping thresholds
    
        grouping extended-information {
          description
            "Data nodes related to the extended information data fields of
           the pluggable module.";
          container extended-information {
            if-feature bbf-hw-xcvr:extended-information;
            config false;
            description
              "Data nodes related to the extended information of the
             pluggable module.";
            reference
              "SFF-8472 Rev 12.4, Section 10";
    
            container user-eeprom {
              if-feature bbf-hw-xcvr:user-eeprom;
              description
                "Data nodes reporting the contents of the user-writable
               EEPROM data fields.";
              reference
                "SFF-8472 Rev 12.4, Table 10-4, Address A2h, Page 00h/01h,
                Bytes 128-247;
                SFF-8436 Rev 4.9, Section 7.6.4 Upper Memory Map Page 02h,
                Bytes 128-255;
                INF-8077i Rev 4.5, Section 5.45 Upper Memory Map Table 02h,
                Bytes 128-255";
    
              leaf string {
                if-feature bbf-hw-xcvr:user-eeprom-string;
                type string {
                  length "0..128";
                  pattern '[ -~]*';
                }
                description
                  "Content of the user-writable EEPROM locations, excluding
                 the Common Language Equipment Identifier (CLEI) code, if
                 any, represented as a sequence of ASCII characters.
    
                 Note, the CLEI code, if any, is provided in the
                 hardware's component leaf 'uri'.
    
                 Note that non-printable characters will be ignored. A
                 zero length string indicates no octets are printable
                 ASCII characters.
    
                 The binary representation provided by 'binary', if
                 supported, will return all octets regardless of value.";
              }
    
              leaf binary {
                if-feature bbf-hw-xcvr:user-eeprom-binary;
                type binary {
                  length "0..128";
                }
                description
                  "Content of the user-writable EEPROM locations, excluding
                 the Common Language Equipment Identifier (CLEI) code, if
                 any, represented as a sequence of octets.
    
                 Note, the CLEI code, if any, is provided in the
                 hardware's component leaf 'uri'.";
              }
            }  // container user-eeprom
          }  // container extended-information
        }  // grouping extended-information
    
        augment /hw:hardware/hw:component {
          when
            "derived-from-or-self(hw:class,'bbf-hwt:transceiver')";
          description
            "Data nodes for hardware components of identity class
           'transceiver'.";
          container transceiver {
            description
              "Data nodes for hardware components of identity class
             'transceiver'.";
            uses identifiers-and-codes;
    
            uses link-length;
    
            uses vendor-fields;
    
            leaf diagnostics-monitoring-type {
              type bits {
                bit legacy {
                  position 0;
                  description
                    "Legacy diagnositics implementation.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-5, Address A0h, Byte 92,
                    bit 7";
    
                }
              }
              config false;
              description
                "Describes how diagnostic monitoring is implemented in the
               particular transceiver.";
              reference
                "SFF-8472 Rev 12.4, Section 8.8, Address A0h, Byte 92";
    
            }
    
            leaf enhanced-options {
              type bits {
                bit alarm-warning-flags {
                  position 0;
                  description
                    "Optional Alarm/warning flags implemented for all
                   monitored quantities (see Table 9-12).";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 7";
    
                }
                bit soft-tx-disable {
                  position 1;
                  description
                    "Optional soft TX_DISABLE control and monitoring
                   implemented.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 6";
    
                }
                bit soft-tx-fault {
                  position 2;
                  description
                    "Optional soft TX_FAULT monitoring implemented.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 5";
    
                }
                bit soft-rx-los {
                  position 3;
                  description
                    "Optional soft RX_LOS monitoring implemented.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 4";
    
                }
                bit soft-rate-select {
                  position 4;
                  description
                    "Optional soft RATE_SELECT control and monitoring
                   implemented.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 3";
    
                }
                bit application-select {
                  position 5;
                  description
                    "Optional Application Select control implemented per
                   SFF-8079.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 2";
    
                }
                bit alarm-rate-select-sff-8431 {
                  position 6;
                  description
                    "Optional soft Rate Select control implemented per
                   SFF-8431.";
                  reference
                    "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93,
                    bit 1";
    
                }
              }
              config false;
              description
                "The Enhanced Options are indicators which describe the
               optional digital diagnostic features implemented in the
               transceiver. Since transceivers will not necessarily
               implement all optional features, this field allows the host
               system to determine which functions are available over the
               2 wire serial bus.";
              reference
                "SFF-8472 Rev 12.4, Table 8-6, Address A0h, Byte 93";
    
            }
    
            container diagnostics {
              presence
                "If present, indicates that digital diagnostics monitoring
               has been implemented in the transceiver. Supply voltage
               monitoring and temperature monitoring must both be
               implemented.";
              description
                "Diagnostic data of the transceiver.";
              reference
                "SFF-8472 Rev 12.4, Section 8.8, Address A0h, Byte 92;
                SFF-8472 Rev 12.4, Section 9";
    
              uses transceiver-diagnostic-parameters;
    
              uses transceiver-alarm-diagnostic-parameters;
            }  // container diagnostics
    
            uses thresholds;
    
            uses extended-information;
          }  // container transceiver
        }
    
        augment /hw:hardware/hw:component {
          when
            "derived-from-or-self(hw:class,'bbf-hwt:transceiver-link')";
          description
            "Data nodes for hardware components of identity class
           'transceiver-link'.";
          container transceiver-link {
            description
              "Data nodes for hardware components of identity class
             'transceiver-link'.";
            uses link-parameters;
    
            container diagnostics {
              presence
                "If present, indicates that digital diagnostics monitoring
               has been implemented in the transceiver. Received power
               monitoring, transmit power monitoring and bias current
               monitoring must all be implemented.";
              description
                "Diagnostic data of the transceiver link.";
              reference
                "SFF-8472 Rev 12.4, Section 8.8, Address A0h, Byte 92;
                SFF-8472 Rev 12.4, Section 9";
    
              uses link-diagnostic-parameters;
    
              uses link-alarm-diagnostic-parameters;
            }  // container diagnostics
          }  // container transceiver-link
        }
      }  // module bbf-hardware-transceivers
    

© 2023 YumaWorks, Inc. All rights reserved.