netconfcentral logo

ieee802-ethernet-pse@2017-10-18



  module ieee802-ethernet-pse {

    yang-version 1.1;

    namespace
      "urn:ieee:std:802.3:yang:ieee802-ethernet-pse";

    prefix pse;

    import ietf-interfaces {
      prefix if;
    }
    import ieee802-ethernet-interface {
      prefix eth-if;
    }

    organization
      "IEEE 802.3 Ethernet Working Group
     Web URL: http://www.ieee802.org/3/";

    contact
      "Web URL: http://www.ieee802.org/3/cf/";

    description
      "This module contains YANG defintions for configuring and
     managing ports with Power Over Ethernet feature defined by
     IEEE 802.3. It provides functionality roughly equivalent to
     that of the POWER-ETHERNET-MIB defined in RFC3621.";

    revision "2017-10-18" {
      description
        "Restructed to be NMDA compliant.";
      reference
        "IEEE P802.3.2 (IEEE 802.3cf) YANG Data Model Definitions Task
        Force";

    }

    revision "2017-09-11" {
      description "revision for D1.2";
      reference
        "P802.3.2 D1.2";

    }

    revision "2017-03-02" {
      description
        "Initial revision of YANG module for IEEE 802.3 PSE.";
      reference
        "IEEE P802.3.2 (IEEE P802.3cf) YANG Data Model Definitions Task
        Force";

    }

    revision "2017-01-25" {
      description
        "revision for IEEE 802.3 PSE.

       changes from previous version:
       - remove power management into a separate module.
       - provide the pse module for both multi-pair PSE and single pair PSE
       (PoDL PSE). ";
      reference
        "IEEE P802.3.2 (IEEE 802.3cf) YANG Data Model Definitions Task
        Force";

    }

    revision "2016-12-26" {
      description
        "Initial revision of YANG model for IEEE 802.3 multi-pair PSE.

       changes from previous version:
       - augement from ieee802-ethernet-interface and keep consist with it.
       - change the module name to multi-pair pse.";
      reference
        "IEEE P802.3.2 (IEEE 802.3cf) YANG Data Model Definitions Task
        Force";

    }


    typedef pse-detection-state {
      type enumeration {
        enum "disabled" {
          value 1;
          description "PSE disabled";
        }
        enum "searching" {
          value 2;
          description "PSE is searching";
        }
        enum "deliveringPower" {
          value 3;
          description
            "PSE is delivering power";
        }
        enum "fault" {
          value 4;
          description "PSE fault detected";
        }
        enum "test" {
          value 5;
          description "PSE test mode";
        }
        enum "otherFault" {
          value 6;
          description
            "PSE implementation specific fault detected";
        }
      }
      description
        "detection state of a multi-pair PSE";
      reference
        "IEEE Std 802.3, 30.9.1.1.5";

    }

    typedef podl-detection-state {
      type enumeration {
        enum "unkown" {
          value 1;
          description "true state unknown";
        }
        enum "disabled" {
          value 2;
          description "PoDL PSE is disabled";
        }
        enum "searching" {
          value 3;
          description "PoDL PSE searching";
        }
        enum "deliveringPower" {
          value 4;
          description
            "PoDL PSE delivering power";
        }
        enum "sleep" {
          value 5;
          description "PoDL PSE sleep";
        }
        enum "idle" {
          value 6;
          description "PoDL PSE idle";
        }
        enum "error" {
          value 7;
          description "PoDL PSE error";
        }
      }
      description
        "detection state of a PoDL PSE";
      reference
        "IEEE Std 802.3, 30.15.1.3";

    }

    typedef power-class {
      type enumeration {
        enum "class0" {
          value 1;
          description "class 0";
        }
        enum "class1" {
          value 2;
          description "class 1";
        }
        enum "class2" {
          value 3;
          description "class 2";
        }
        enum "class3" {
          value 4;
          description "class 3";
        }
        enum "class4" {
          value 5;
          description "class 4";
        }
        enum "class5" {
          value 6;
          description "class 5";
        }
        enum "class6" {
          value 7;
          description "class 6";
        }
        enum "class7" {
          value 8;
          description "class 7";
        }
        enum "class8" {
          value 9;
          description "class 8";
        }
        enum "class9" {
          value 10;
          description
            "class 9 only for PoDL PSE";
        }
      }
      description "power class";
      reference
        "IEEE Std 802.3, 30.9.1.1.6 aPSEPowerClassification";

    }

    identity pse-pair-mode {
      base 
      description
        "Base type for wire pair mode for pse power to pd.";
    }

    identity multi-pair-mode {
      base 
      description
        "Pse using 2 or 4 pair wire to supply power to pd.";
    }

    identity podl-mode {
      base 
      description
        "Pse using only 1 pair wire to supply power to pd.";
    }

    augment /if:interfaces/if:interface/eth-if:ethernet {
      description
        "Augements ethernet interface configuration model with
       nodes specific to DTE Power via MDI devices and ports";
      container poe-pse {
        description
          "DTE Power via MDI port configuration";
        reference
          "IEEE Std 802.3, 30.9.1 Multi-pair PSE & IEEE Std 802.3, 30.15.1 PoDL
          PSE";

        leaf pse-pair-mode {
          type identityref {
            base pse:pse-pair-mode;
          }
          config false;
          description
            "Pse may use multi-pair or single pair wire to power pd.";
        }

        container multi-pair {
          presence
            "Pse port working in multi-pair mode.";
          description
            "Multi-pair PSE port configuration in IEEE Std 802.3, 30.9.1.";
          leaf pse-enable {
            type boolean;
            default 'false';
            description
              "whether to enable the PSE function on the interface.";
            reference
              "IEEE Std 802.3, 30.9.1.1.2 aPSEAdminState";

          }

          leaf powering-pairs {
            type enumeration {
              enum "signal" {
                value 1;
                description
                  "the signal pair is in use";
              }
              enum "spare" {
                value 2;
                description
                  "the spare pair is in use";
              }
              enum "both" {
                value 3;
                description
                  "4-pair powering which is for .bt devices";
              }
            }
            description
              "Describes or controls the pairs in use. If the value of
             pethPsePortPowerPairsControl is true, this object is writeable";
            reference
              "IEEE Std 802.3, 30.9.1.1.4 aPSEPowerPairs";

          }

          leaf pairs-control-ability {
            type boolean;
            default 'true';
            config false;
            description
              "Describes the capability of controlling the power pairs
             functionality to switch pins for sourcing power.";
            reference
              "IEEE Std 802.3, 30.9.1.1.3 aPSEPowerPairsControlAbility";

          }

          leaf detection-status {
            type pse-detection-state;
            config false;
            description
              "Describes the operational status of the port
             PD detection.";
            reference
              "IEEE Std 802.3, 30.9.1.1.5 aPSEPowerDetectionStatus";

          }

          leaf classifications {
            when
              "../detection-status = 'deliveringPower'" {
              description
                "This node only apply when the detection status is
               delivering power.";
            }
            type power-class;
            config false;
            description
              "power class of the port";
            reference
              "IEEE Std 802.3, 30.9.1.1.6 aPSEPowerClassfication";

          }

          container poe-statistics {
            config false;
            description
              "statistics information of the pse port";
            leaf power-denied {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               enters the state POWER_DENIED";
              reference
                "IEEE Std 802.3, 30.9.1.1.8 aPSEPowerDeniedCounter";

            }

            leaf invalid-signature {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               enters the state SIGNATURE_INVALID.";
              reference
                "IEEE Std 802.3, 30.9.1.1.7 aPSEInvalidSignatureCounter";

            }

            leaf mps-absent {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               transitions directly from the state POWER_ON to the
               state IDLE due to tmpdo_timer_done being asserted";
              reference
                "IEEE Std 802.3, 30.9.1.1.11 aPSEMPSAbsentCounter";

            }

            leaf overload {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               enters the state ERROR_DELAY_OVER.";
              reference
                "IEEE Std 802.3, 30.9.1.1.9 aPSEOverLoadCounter";

            }

            leaf short {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               enters the state ERROR_DELAY_SHORT.";
              reference
                "IEEE Std 802.3, 30.9.1.1.10 aPSEShortCounter";

            }

            leaf cumulative-energy {
              type uint32;
              units "millijoule";
              description
                "The cumulative energy supplied by the PSE as measured at the
               MDI in millijoules.";
              reference
                "IEEE Std 802.3, 30.9.1.1.14 aPSECumulativeEnergy";

            }
          }  // container poe-statistics

          leaf actual-power {
            type decimal64 {
              fraction-digits 4;
            }
            units "milliwatt";
            config false;
            description
              "the actual power drawn by a PD over the port";
            reference
              "IEEE Std 802.3, 30.9.1.1.12 aPSEActualPower";

          }

          leaf power-accuracy {
            type uint32;
            units "milliwatt";
            config false;
            description
              "An integer value indicating the accuracy
             associated with aPSEActualPower in +/- milliwatts.";
            reference
              "IEEE Std 802.3, 30.9.1.1.13 aPSEPowerAccuracy";

          }
        }  // container multi-pair

        container single-pair {
          presence
            "Pse port working in single-pair mode.";
          description
            "PoDL PSE configuration as defined in IEEE Std 802.3, 30.15.1";
          leaf pse-enable {
            type boolean;
            default 'false';
            description
              "whether to enable the PSE function on the interface.";
            reference
              "IEEE Std 802.3, 30.15.1.1.2 aPoDLPSEAdminState";

          }

          leaf detection-status {
            type podl-detection-state;
            config false;
            description
              "Indicates the current status of the PoDL PSE.";
            reference
              "IEEE Std 802.3, 30.15.1.1.3 aPoDLPSEPowerDetectionStatus";

          }

          leaf pse-type {
            type enumeration {
              enum "unknown" {
                value 0;
                description
                  "unknown pse type";
              }
              enum "typeA" {
                value 1;
                description "typeA";
              }
              enum "typeB" {
                value 2;
                description "typeB";
              }
              enum "typeC" {
                value 3;
                description "typeC";
              }
              enum "typeD" {
                value 4;
                description "typeD";
              }
            }
            config false;
            description
              "PSE type specified in IEEE Std 802.3, 104.4.1.";
          }

          leaf detected-pd-type {
            when
              "../detection-status = 'deliveringPower'" {
              description
                "This node only apply when the detection status is
               delivering power.";
            }
            type enumeration {
              enum "unknown" {
                value 0;
                description "unknown";
              }
              enum "typeA" {
                value 1;
                description "typeA";
              }
              enum "typeB" {
                value 2;
                description "typeB";
              }
              enum "typeC" {
                value 3;
                description "typeC";
              }
              enum "typeD" {
                value 4;
                description "typeD";
              }
            }
            config false;
            description
              "indicates the Type of the detected PoDL PD as specified in IEEE
             Std 802.3, 104.5.1.";
            reference
              "IEEE Std 802.3, 30.15.1.1.5 aPoDLPSEDetectedPDType";

          }

          leaf pd-power-class {
            when
              "../detection-status = 'deliveringPower'" {
              description
                "This node only apply when the detection status is
               delivering power.";
            }
            type power-class;
            config false;
            description
              "power class of the port";
            reference
              "IEEE Std 802.3, 30.9.1.1.6 aPSEPowerClassfication";

          }

          container poe-statistics {
            config false;
            description
              "statistics information of the PoDL PSE";
            leaf power-denied {
              type uint32;
              description
                "This counter is incremented when the PoDL PSE state diagram
               variable power_available transitions from true to false (see
               IEEE Std 802.3, 104.4.3.3)";
              reference
                "IEEE Std 802.3, 30.15.1.1.9 aPoDLPSEPowerDeniedCounter";

            }

            leaf invalid-signature {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               enters the state SIGNATURE_INVALID.";
              reference
                "IEEE Std 802.3, 30.15.1.1.7 aPoDLPSEInvalidSignatureCounter";

            }

            leaf invalid-class {
              type uint32;
              description
                "This counter is incremented when the PoDL PSE state diagram
               variable tclass_timer_done transitions from false to true or
               when the valid_class variable transitions from true to false
               (see IEEE Std 802.3, 104.4.3.3)";
              reference
                "IEEE Std 802.3, 30.15.1.1.8 aPoDLPSEInvalidClassCounter";

            }

            leaf overload {
              type uint32;
              description
                "This counter is incremented when the PSE state diagram
               variable overload_held transitions from false to true (see
               IEEE Std 802.3, 104.4.3.3)";
              reference
                "IEEE Std 802.3, 30.15.1.1.10 aPoDLPSEOverLoadCounter";

            }

            leaf fvs-absence {
              type uint32;
              description
                "Maintain Full Voltage Signature absent counter.
               This counter is incremented when the PoDL PSE state diagram
               variable mfvs_timeout  transitions from false to true (see
               IEEE Std 802.3, 104.4.3.3)";
              reference
                "IEEE Std 802.3, 30.15.1.1.11
                aPoDLPSEMaintainFullVoltageSignatureAbsentCounter";

            }

            leaf cumulative-energy {
              type uint32;
              description
                "A count of the cumulative energy supplied by the PoDL PSE,
               measured at the MDI, and  expressed in units of millijoules";
              reference
                "IEEE Std 802.3, 30.15.1.1.14 aPoDLPSECumulativeEnergy";

            }
          }  // container poe-statistics

          leaf actual-power {
            type decimal64 {
              fraction-digits 4;
            }
            units "watt";
            config false;
            description
              "An integer value indicating present (actual) power being
             supplied by the PoDL PSE as measured at the MDI in milliwatts";
            reference
              "IEEE Std 802.3, 30.15.1.1.12 aPoDLPSEActualPower";

          }

          leaf power-accuracy {
            type uint32;
            units "milliwatt";
            config false;
            description
              "A signed integer value indicating the accuracy associated with
             aPoDLPSEActualPower in  milliwatts..";
            reference
              "IEEE Std 802.3, 30.15.1.1.13 aPoDLPSEPowerAccuracy";

          }
        }  // container single-pair
      }  // container poe-pse
    }
  }  // module ieee802-ethernet-pse