-- vim: syntax=mib
-- ****************************************************************************
-- :CPQ,DEV:
--
-- * POWER DEVICE SNMP MANAGEMENT CARD MIB DEFINITIONS
--
-- * $Date: 2011/01/05 15:30:00 $
-- * $Revision: 1.64 $
--   Revised by Brian Vo
--   Hewlett-Packard Company
--   Confidential - Need To Know
-- :CPQ,ENDDEV:
-- ****************************************************************************
--
--            Power Device SNMP Management Card 
--         Management Information Base for SNMP Network Management
--
--
--      Copyright 2001, 2010 Hewlett-Packard Development Company, L.P.
--
--      Hewlett-Packard Company shall not be liable for technical or
--      editorial errors or omissions contained herein. The information in
--      this document is provided "as is" without warranty of any kind and
--      is subject to change without notice. The warranties for HP products
--      are set forth in the express limited warranty statements
--      accompanying such products. Nothing herein should be construed as
--      constituting an additional warranty.
--
--      Confidential computer software. Valid license from HP required for
--      possession, use or copying. Consistent with FAR 12.211 and 12.212,
--      Commercial Computer Software, Computer Software Documentation, and
--      Technical Data for Commercial Items are licensed to the U.S.
--      Government under vendor's standard commercial license.
--
--      Refer to the READMIB.RDM file for more information about the
--      organization of the information in the Compaq Enterprise.
--
--      The Compaq Enterprise number is 232.
--      The ASN.1 prefix to, and including the Compaq Enterprise is:
--           1.3.6.1.4.1.232
--
--      MIB Version 1.64
--    
--
--    *********************************************************************
-- :CPQ,DEV:
--    Release History
--    Date: October 25, 2005 (version 1.0) - Phi Nguyen
--    Date: December 05, 2005 (version 1.2) - Phi Nguyen
--    Date: Jan 17, 2008 (version 1.31) Add PDR - Brian Vo
--    Date: Feb 25, 2008 (version 1.40) Add Type 19 and trigger TestTrap - Brian Vo
--    Date: May 20, 2009 (version 1.61) Add new Modular PDU - Brian Vo
--    Date: Nov 19, 2009 (version 1.62) Add Input Rating, Redundant Status -Brian Vo
--    Date: Jan 05, 2011 (version 1.64) Add OIDs to support mPDU Rack information -Brian Vo
--
-- :CPQ,ENDDEV:
--    *********************************************************************
--
-- VARIABLES REQUIRED FOR HP MANAGEMENT
-- ===================================================================================
--
-- ===================================================================================
-- sysDescr (1.3.6.1.2.1.1.1) which is defined in RFC1213.MIB.
-- sysContact (1.3.6.1.2.1.1.4) which is defined in RFC1213.MIB.
-- sysName (1.3.6.1.2.1.1.5) is which is defined in RFC1213.MIB.
-- sysLocation (1.3.6.1.2.1.1.6) which is defined in RFC1213.MIB.
-- 
-- sysDescr OBJECT-TYPE
--     SYNTAX  DisplayString (SIZE (0..255))
--     ACCESS  read-only
--     STATUS  mandatory
--
--
--     DESCRIPTION
--             "A textual description of the entity.  This value
--             should include the full name and version
--             identification of the system's hardware type,
--             software operating-system, and networking
--             software.  It is mandatory that this only contain
--             printable ASCII characters."
--     ::= { system 1 }
--
-- sysContact OBJECT-TYPE
--     SYNTAX  DisplayString (SIZE (0..255))
--     ACCESS  read-write
--     STATUS  mandatory
--     DESCRIPTION
--             "The textual identification of the contact person
--             for this managed node, together with information
--             on how to contact this person."
--     ::= { system 4 }
--
-- sysName OBJECT-TYPE
--     SYNTAX  DisplayString (SIZE (0..255))
--
--
--     ACCESS  read-write
--     STATUS  mandatory
--     DESCRIPTION
--             "An administratively-assigned name for this
--             managed node.  By convention, this is the node's
--             fully-qualified domain name."
--     ::= { system 5 }
--
-- sysLocation OBJECT-TYPE
--     SYNTAX  DisplayString (SIZE (0..255))
--     ACCESS  read-write
--     STATUS  mandatory
--     DESCRIPTION
--             "The physical location of this node (e.g.,
--             `telephone closet, 3rd floor')."
--     ::= { system 6 }
-- ===================================================================================
--
-- ===================================================================================
-- cpqSiProductName (1.3.6.1.4.1.232.2.2.4.2) which is defined in CPQSINFO.MIB.
-- This is the PDU/UPS management module product model name 
-- (Defined but not used by SIM)
--
--  cpqSiProductName OBJECT-TYPE
--         SYNTAX  DisplayString (SIZE (0..255))
--         ACCESS  read-only
--         STATUS  mandatory
--         DESCRIPTION
--             "This device product name."
--         ::= { cpqSiSystemBoard 2 }
-- ====================================================================================
--
-- ====================================================================================
-- cpqSiSysSerialNum (1.3.6.1.4.1.232.2.2.2.1) which is defined in CPQSINFO.MIB.
-- This is the PDU/UPS management module serial number
-- (Defined but not used by SIM)
-- 
-- cpqSiSysSerialNum OBJECT-TYPE
--      SYNTAX  DisplayString (SIZE (0..255))
--      ACCESS  read-only
--      STATUS  mandatory
--      DESCRIPTION
--          "The serial number of the system unit.
--
--          The string will be empty if the system does not report the
--          serial number function."
--      ::= { cpqSiAsset 1 }
-- ====================================================================================
--
-- ====================================================================================
-- cpqHoGUID (1.3.6.1.4.1.232.11.2.10.3) which is defined in CPQHOST.MIB 
-- This field needs to be filled with the unique
-- PDU/UPS management module serial number (16 bytes)
--
-- cpqHoGUID OBJECT-TYPE
--         SYNTAX  OCTET STRING (SIZE (16))
--         ACCESS  read-write
--         STATUS  mandatory
--         DESCRIPTION
--             "The globally unique identifier of this device. SN of HP Management Module."

--         ::= { cpqHoSystemStatus 3 }
-- ====================================================================================
--
-- ====================================================================================
-- cpqHoMibStatusArray (1.3.6.1.4.1.232.11.2.10.1) which is defined in CPQHOST.MIB 
-- Pretty complicated to decipher if you do not have the guide.  We only use the first 
-- 4 octets.
--
-- Octet 0 = 00000001 (always)
-- Octet 1 = 00000000 through 00000100 depending on Device H/W Condition below
-- Octet 2 = 00000001 (always)
-- Octet 3 = 00010000 (always decimal 16 see table below)
--
-- For example: With a UPS device with OK status, the values of the 4 octets would be:
--
-- Octet 0 = 0x01 (fixed)
-- Octet 1 = 0x02 (OK overall status)
-- Octet 2 = 0x01 (fixed)
-- Octet 3 = 0x10 (Device type = 16 for UPS)
--
-- cpqHoMibStatusArray OBJECT-TYPE
--         SYNTAX  OCTET STRING (SIZE (4..256))
--         ACCESS  read-only
--         STATUS  mandatory
--         DESCRIPTION
--             "The MIB Status Array is an array of MIB status structures. Each
--             structure is made up of 4 octets.
--
--             Array element 0 is the status for all MIBs in the Compaq
--             Enterprise.
--
--             Device H/W Condition (Octet 1)
--                0 - Not available (e.g. Loss/lack of communication between card and device UPS/PDU)  
--                1 - Other (unknown) (mapped to device unknown status)
--                2 - OK 		(mapped to device normal status/events)
--                3 - Degraded 	(UPS: device warning status/events
--                                   PDU: overload warning, voltage out of tolerance)
--                4 - Failed 		(UPS: device critical status/events
--                                   PDU: overload condition)
--
--             Detailed Type (octet 3)
--                Bits 0-7    Detailed Type, only used if bit 0 in octect 2 is 1.
--
--             Type Values for Bits 0-4 (maps to CIM7 types)
--             Unknown                    =  0
--             Server                     =  1  (yes a duplicate of the server flag)
--             Desktop                    =  2
--             Workstation                =  3
--             Portable                   =  4
--             Router                     =  5
--             Cluster                    =  6
--             Printer                    =  7
--             Switch                     =  8  (network switch)
--             Repeater                   =  9
--             Remote Access Device       = 10
--             Other                      = 11
--             Management Processor       = 12  (rib, RILOE, iLo)
--             Rack                       = 13
--             Enclosure                  = 14
--             KVM Switch                 = 15  (IP enabled keyboard video mouse switch).
--             UPS                        = 16
--             Power Distribution Unit    = 17  (PDU)
--             Environmental Monitor      = 18  (eg CMC)
--             Power Distribution Rack    = 19  (PDR)"
--         ::= { cpqHoSystemStatus 1 }
-- ====================================================================================
-- All Traps, Objects of CPQPOWER.MIB start with  .1.3.6.1.4.1.232.165

CPQPOWER-MIB DEFINITIONS ::= BEGIN

IMPORTS
    compaq        FROM CPQHOST-MIB
--    enterprises   FROM RFC1155-SMI
--    IpAddress     FROM RFC1155-SMI
    TimeTicks     FROM RFC1155-SMI
    Gauge         FROM RFC1155-SMI
    Counter       FROM RFC1155-SMI
    DisplayString FROM RFC1213-MIB
    ifIndex       FROM RFC1213-MIB
    ifDescr       FROM RFC1213-MIB
    sysName       FROM RFC1213-MIB
    sysDescr      FROM RFC1213-MIB
    sysContact    FROM RFC1213-MIB
    sysLocation   FROM RFC1213-MIB  
    OBJECT-TYPE   FROM RFC-1212
    TRAP-TYPE     FROM RFC-1215;

--  compaq                  OBJECT IDENTIFIER ::= { enterprises 232 }
cpqPower                OBJECT IDENTIFIER       ::= {compaq 165}

--
-- Power device object identifiers
--
powerDevice             OBJECT IDENTIFIER       ::= {cpqPower 1}  

trapInfo                OBJECT IDENTIFIER       ::= {powerDevice 1}
managementModuleIdent   OBJECT IDENTIFIER       ::= {powerDevice 2}


--
-- PDU object identifiers
--
pdu                     OBJECT IDENTIFIER       ::= {cpqPower 2}  

pduIdent                OBJECT IDENTIFIER       ::= { pdu 1 }
pduInput                OBJECT IDENTIFIER       ::= { pdu 2 }
pduOutput               OBJECT IDENTIFIER       ::= { pdu 3 }


--
-- UPS object identifiers
--
ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  

upsIdent                OBJECT IDENTIFIER       ::= { ups 1 }
upsBattery              OBJECT IDENTIFIER       ::= { ups 2 }
upsInput                OBJECT IDENTIFIER       ::= { ups 3 }
upsOutput               OBJECT IDENTIFIER       ::= { ups 4 }
upsBypass               OBJECT IDENTIFIER       ::= { ups 5 }
upsEnvironment          OBJECT IDENTIFIER       ::= { ups 6 }
upsTest                 OBJECT IDENTIFIER       ::= { ups 7 }
upsControl              OBJECT IDENTIFIER       ::= { ups 8 }
upsConfig               OBJECT IDENTIFIER       ::= { ups 9 }
upsRecep                OBJECT IDENTIFIER       ::= { ups 10 }
upsTopology             OBJECT IDENTIFIER       ::= { ups 11 }


--
-- PDR object identifiers
--
pdr                     OBJECT IDENTIFIER       ::= {cpqPower 4}  

pdrIdent                OBJECT IDENTIFIER       ::= { pdr 1 }
pdrPanel                OBJECT IDENTIFIER       ::= { pdr 2 }
pdrBreaker              OBJECT IDENTIFIER       ::= { pdr 3 }


--
-- MPDU object identifiers
--
mpdu                     OBJECT IDENTIFIER       ::= {cpqPower 5}  

mpduIdent                OBJECT IDENTIFIER       ::= { mpdu 1 }
mpduOutput               OBJECT IDENTIFIER       ::= { mpdu 2 }
mpduDeviceIdent          OBJECT IDENTIFIER       ::= { mpdu 3 }
mpduSmExtBarOutlet       OBJECT IDENTIFIER       ::= { mpdu 4 }


-- ====================================================================================
--
-- powerDevice             OBJECT IDENTIFIER       ::= {cpqPower 1}  
-- trapInfo                OBJECT IDENTIFIER       ::= {powerDevice 1}
-- trap information group
-- OID= .1.3.6.1.4.1.232.165.1.1

trapCode OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
		"A number identifying the event for the trap that was sent.
		 Mapped unique trap code per unique event to be used by ISEE's
		 decoder ring."
	::= { trapInfo 1 }

trapDescription OBJECT-TYPE
	SYNTAX DisplayString (SIZE (0..255))
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
		"A string identifying the event for that last trap that was sent."
	::= { trapInfo 2 }

trapDeviceMgmtUrl OBJECT-TYPE
	SYNTAX DisplayString (SIZE (0..255))
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
	    "A string contains the URL for the management software."
	::= { trapInfo 3 }

trapDeviceDetails OBJECT-TYPE
	SYNTAX DisplayString (SIZE (0..255))
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
		"A string details information about the UPS such as SN (serial number), 
                 PN (part number), and MN (Model Name)."
	::= { trapInfo 4 }

trapDeviceName OBJECT-TYPE
	SYNTAX DisplayString (SIZE (0..255))
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
		"A string contains the name of the HP Management Module."
	::= { trapInfo 5 }

--
-- Device Traps
--
trapCritical TRAP-TYPE
	ENTERPRISE cpqPower
	VARIABLES  { sysName, 
	             trapCode, 
	             trapDescription, 
	             trapDeviceName,
	             trapDeviceDetails, 
	             trapDeviceMgmtUrl }
	DESCRIPTION
        "A critical alarm has occurred. Action: Check the Trap Details for more information."
    --#TYPE      "Critical Alarm"
    --#SEVERITY  CRITICAL
    --#CATEGORY  "PowerDevice"
        ::= 1

trapWarning TRAP-TYPE
	ENTERPRISE cpqPower
	VARIABLES  { sysName, 
	             trapCode, 
	             trapDescription, 
	             trapDeviceName,
	             trapDeviceDetails, 
	             trapDeviceMgmtUrl }
	DESCRIPTION
        "A warning alarm has occurred. Action: Check the Trap Details for more information."
    --#TYPE      "Warning Alarm"
    --#SEVERITY  MINOR
    --#CATEGORY  "PowerDevice"
	::= 2

trapInformation TRAP-TYPE
	ENTERPRISE cpqPower
	VARIABLES  { sysName, 
	             trapCode, 
	             trapDescription, 
	             trapDeviceName,
	             trapDeviceDetails, 
	             trapDeviceMgmtUrl }
	DESCRIPTION
        "An informational alarm has occurred. Action: Check the Trap Details for more information."
    --#TYPE      "Information Alarm"
    --#SEVERITY  INFORMATIONAL
    --#CATEGORY  "PowerDevice"
	::= 3

trapCleared TRAP-TYPE
	ENTERPRISE cpqPower
	VARIABLES  { sysName, 
	             trapCode, 
	             trapDescription, 
	             trapDeviceName,
	             trapDeviceDetails, 
	             trapDeviceMgmtUrl }
	DESCRIPTION
        "An alarm has cleared. Action: Check the Trap Details for more information."
    --#TYPE      "Cleared Alarm"
    --#SEVERITY  INFORMATIONAL
    --#CATEGORY  "PowerDevice"
	::= 4

trapTest TRAP-TYPE
        ENTERPRISE cpqPower
        VARIABLES  { sysName, 
                     trapCode,
		     trapDescription,
		     trapDeviceName,
                     trapDeviceDetails, 
                     trapDeviceMgmtUrl } 
        DESCRIPTION
        "Test trap sent to a trap receiver to check proper reception of traps"
    --#TYPE         "Test Trap"
    --#SEVERITY     INFORMATIONAL
    --#CATEGORY     "PowerDevice"
        ::= 5

deviceTrapInitialization TRAP-TYPE
	ENTERPRISE cpqPower
	VARIABLES   { sysName, deviceIdentName }
	DESCRIPTION
		"This trap is sent each time a power device is initialized."
    --#TYPE      "Device Initialization"
    --#SEVERITY  INFORMATIONAL
    --#CATEGORY  "PowerDevice"
	::= 6

-- ====================================================================================
--
-- powerDevice             OBJECT IDENTIFIER       ::= {cpqPower 1}  
-- managementModuleIdent   OBJECT IDENTIFIER       ::= {powerDevice 2}
-- Management module identification group
-- OID= .1.3.6.1.4.1.232.165.1.2

deviceManufacturer OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The device manufacturer."
    ::= { managementModuleIdent 1 }

deviceModel OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The device model."
    ::= { managementModuleIdent 2 }

deviceFirmwareVersion OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The device firmware version(s)."
    ::= { managementModuleIdent 3 }

deviceHardwareVersion OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
            "The device hardware version."
    ::= { managementModuleIdent 4 }

deviceIdentName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
           "A string identifying the device."
    ::= { managementModuleIdent 5 }

devicePartNumber OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The device part number."
    ::= { managementModuleIdent 6 }

deviceSerialNumber OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The device serial number."
    ::= { managementModuleIdent 7 }

deviceMACAddress OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The device MAC address."
    ::= { managementModuleIdent 8 }

-- ====================================================================================
--  
--  pdu                     OBJECT IDENTIFIER       ::= {cpqPower 2}  
--  pduIdent                OBJECT IDENTIFIER       ::= { pdu 1 }
--  PDU identification group
--  OID= .1.3.6.1.4.1.232.165.2.1

numOfPdu OBJECT-TYPE
    SYNTAX INTEGER (0..63)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of PDUs."
    ::= { pduIdent 1 }
    
pduIdentTable OBJECT-TYPE
    SYNTAX SEQUENCE OF PduIdentEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The Aggregate Object with number of entries equal to
	    NumOfPdu and including the PduIdent group."
    ::= { pduIdent 2 }

pduIdentEntry OBJECT-TYPE
    SYNTAX PduIdentEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The ident table entry containing the name,
	    model, manufacturer, firmware version, part number, etc."
    INDEX { pduIdentIndex }
    ::= { pduIdentTable 1 }

PduIdentEntry ::= SEQUENCE {
      pduIdentIndex         INTEGER,
      pduName               DisplayString,
      pduModel              DisplayString,
      pduManufacturer       DisplayString,
      pduFirmwareVersion    DisplayString,
      pduPartNumber         DisplayString,
      pduSerialNumber       DisplayString,
      pduStatus             INTEGER,
      pduControllable       INTEGER
    }

pduIdentIndex OBJECT-TYPE
    SYNTAX INTEGER	(0..100)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index for the PduIdentEntry table."
    ::= { pduIdentEntry 1 }

pduName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"The string identify the device."
    ::= { pduIdentEntry 2 }

pduModel OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device Model."
    ::= { pduIdentEntry 3 }

pduManufacturer OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device Manufacturer Name (e.g. Hewlett-Packard)."
    ::= { pduIdentEntry 4 }

pduFirmwareVersion OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The firmware revision level of the device."
    ::= { pduIdentEntry 5 }

pduPartNumber OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device part number."
    ::= { pduIdentEntry 6 }

pduSerialNumber OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The deice serial number."
    ::= { pduIdentEntry 7 }

pduStatus OBJECT-TYPE
    SYNTAX  INTEGER
    {
      other(1),    -- default
      ok(2),
      degraded(3),
      failed(4)
    }
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
    "The overall status of the device.  A value of OK(2) indicates the device is operating normally.
    A value of degraded(3) indicates the device is operating with warning indicators.  A value of
    failed(4) indicates the device is operating with critical indicators."
    ::= { pduIdentEntry 8 }

pduControllable OBJECT-TYPE
    SYNTAX  INTEGER 
    {
      yes(1),
      no(2)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "This object indicates whether or not the device is controllable."
    ::= { pduIdentEntry 9 }

-- ====================================================================================
--
--  pdu                     OBJECT IDENTIFIER       ::= {cpqPower 2}    
--  pduInput                OBJECT IDENTIFIER       ::= { pdu 2 }
--  PDU input group
--  OID= .1.3.6.1.4.1.232.165.2.2

pduInputTable OBJECT-TYPE
    SYNTAX SEQUENCE OF PduInputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
           "The Aggregate Object with number of entries equal to
	    NumOfPdu and including the PduInput group."
    ::= {pduInput 1}

pduInputEntry OBJECT-TYPE
    SYNTAX PduInputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION 
           "The input table entry containing the voltage and 
	    current for the PDU"
    INDEX { pduInputIndex }
    ::= { pduInputTable 1 }

PduInputEntry ::= SEQUENCE {
    pduInputIndex   INTEGER,
    inputVoltage    INTEGER,
    inputCurrent    INTEGER
    }

pduInputIndex OBJECT-TYPE
    SYNTAX INTEGER	(0..100)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index for the PduInputEntry table."
    ::= { pduInputEntry 1}

inputVoltage OBJECT-TYPE
    SYNTAX INTEGER  (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured input voltage from the PDU meters in volts."
    ::= {pduInputEntry 2}

inputCurrent OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Amp
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured input current from the PDU meters in amps."
    ::= {pduInputEntry 3}

-- ====================================================================================
--
--  pdu                     OBJECT IDENTIFIER       ::= {cpqPower 2}  
--  pduOutput               OBJECT IDENTIFIER       ::= { pdu 3 }
--  PDU Output group
--  OID= .1.3.6.1.4.1.232.165.2.3

pduOutputTable OBJECT-TYPE
    SYNTAX SEQUENCE OF PduOutputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The Aggregate Object with number of entries equal to
	    NumOfPdu and including the PduInput group."
    ::= {pduOutput 1}

pduOutputEntry OBJECT-TYPE
    SYNTAX PduOutputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION 
           "The input table entry containing the name,
	    heat load, current load, power load, firmware, etc."
    INDEX { pduOutputIndex }
    ::= { pduOutputTable 1 }

PduOutputEntry ::= SEQUENCE {
    pduOutputIndex         INTEGER,
    pduOutputLoad          INTEGER,
    pduOutputHeat          INTEGER,
    pduOutputPower         INTEGER,
    pduOutputNumBreakers   INTEGER
    }

pduOutputIndex OBJECT-TYPE
    SYNTAX INTEGER	(0..100)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index for the PduOutputEntry table."
    ::= { pduOutputEntry 1}

pduOutputLoad OBJECT-TYPE
    SYNTAX INTEGER (0..200)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device output load in percent of rated capacity.  A value of -1 will be
		returned if the heat load is unable to be measured."
    ::= { pduOutputEntry 2 }

pduOutputHeat OBJECT-TYPE
    SYNTAX  INTEGER   -- Units BTU
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
    "The total heat load measured on the PDU in BTUs.  A value of -1 will be
		returned if the heat load is unable to be measured."
    ::= { pduOutputEntry 3 }

pduOutputPower OBJECT-TYPE
    SYNTAX  INTEGER   -- Units Watts
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
    "The total power load measured on the PDU in watts.  A value of -1 will be
		returned if the power load is unable to be measured."
    ::= { pduOutputEntry 4 }

pduOutputNumBreakers OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The number of breakers for the device.  This variable indicates the number 
           of rows in the breakers table."
    ::= { pduOutputEntry 5 }

pduOutputBreakerTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF PduOutputBreakerEntry
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
           "List of breaker table entries.  The number of entries is given by pduOutputNumBreakers ."
    ::= { pduOutput 2 }

pduOutputBreakerEntry OBJECT-TYPE
    SYNTAX  PduOutputBreakerEntry 
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
           "An entry containing information applicable to an breaker."
    INDEX   { pduOutputIndex, breakerIndex }
    ::= { pduOutputBreakerTable 1 }

PduOutputBreakerEntry ::=
    SEQUENCE 
    {
      breakerIndex       INTEGER,
      breakerVoltage     INTEGER,
      breakerCurrent     INTEGER,
      breakerPercentLoad INTEGER,
      breakerStatus      INTEGER
    }

breakerIndex OBJECT-TYPE
    SYNTAX  INTEGER 	(0..100)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The breaker identifier."
    ::= { pduOutputBreakerEntry 1 }

breakerVoltage OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS Volts
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The breaker voltage in volts."
    ::= { pduOutputBreakerEntry 2 }

breakerCurrent OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS Amps
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The breaker current draw in Amps."
    ::= { pduOutputBreakerEntry 3 }

breakerPercentLoad OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS Percent
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The breaker load in percent."
    ::= { pduOutputBreakerEntry 4 }

breakerStatus OBJECT-TYPE
    SYNTAX  INTEGER 
    {
      normal(1),
      overloadWarning(2),
	  overloadCritical(3),
      voltageRangeWarning(4),
      voltageRangeCritical(5)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "This object indicates the status of the breaker.  A value of normal(1)
		indicates the breaker is operating normally.  A value of overloadWarning(2)
		indicates the breaker has an overload warning.  A value of overloadCritical(3)
		indicates the breaker is overloaded.  A value of voltageRangeWarning(4)
		indicates the breaker voltage is out of tolerance by 10-20%.  A value of
		voltageRangeCritical(5) indicates the breaker voltage is out of tolerance
		by more than 20%.  Note: Overload status has priority over voltage tolerance
		status."
    ::= { pduOutputBreakerEntry 5 }

-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsIdent                OBJECT IDENTIFIER       ::= { ups 1 }
--  UPS Identification group
--  OID= .1.3.6.1.4.1.232.165.3.1

upsIdentManufacturer OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..31))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The UPS Manufacturer Name (e.g. Hewlett-Packard)."
    ::= { upsIdent 1 }

upsIdentModel OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The UPS Model;Part number;Serial number (e.g. HP R5500 XR;204451-B21;B00123456W)."
    ::= { upsIdent 2 }

upsIdentSoftwareVersions OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The firmware revision level(s) of the UPS microcontroller(s)."
    ::= { upsIdent 3 }

upsIdentOemCode OBJECT-TYPE
    SYNTAX INTEGER (0..255)  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"A binary code indicating vendor. This should be a ?0x0c? for HP"
    ::= { upsIdent 4 }

-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsBattery              OBJECT IDENTIFIER       ::= { ups 2 }
--  UPS Battery group
--  OID= .1.3.6.1.4.1.232.165.3.2

upsBatTimeRemaining OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS seconds
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Battery run time in seconds before UPS turns off due
	 to low battery."
    ::= { upsBattery 1 }

upsBatVoltage OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS Volts DC
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Battery voltage as reported by the UPS meters."
    ::= { upsBattery 2 }

upsBatCurrent OBJECT-TYPE
    SYNTAX INTEGER (-2147483648..2147483647)   -- UNITS Amp DC
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Battery Current as reported by the UPS metering.
	 Current is positive when discharging, negative
	 when recharging the battery."
    ::= { upsBattery 3 }

upsBatCapacity OBJECT-TYPE
    SYNTAX INTEGER (0..100)    -- UNITS percent
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Battery percent charge."
    ::= { upsBattery 4 }

upsBatteryAbmStatus OBJECT-TYPE
    SYNTAX  INTEGER {
    batteryCharging(1),
    batteryDischarging(2),
    batteryFloating(3),
    batteryResting(4),
    unknown(5)
	}
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"Gives the status of the Advanced Battery Management;
	 batteryFloating(3) status means that the charger is temporarily 
	 charging the battery to its float voltage; batteryResting(4) is the 
	 state when the battery is fully charged and none of the other actions 
	 (charging/discharging/floating) is being done."
    ::= { upsBattery 5 }

-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsInput                OBJECT IDENTIFIER       ::= { ups 3 }
--  UPS Input group
--  OID= .1.3.6.1.4.1.232.165.3.3

upsInputFrequency OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 Hertz
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The utility line frequency in tenths of Hz."
    ::= { upsInput 1 }

upsInputLineBads OBJECT-TYPE
    SYNTAX Counter
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of times the Input was out of tolerance
	in voltage or frequency."
    ::= { upsInput 2 }

upsInputNumPhases OBJECT-TYPE
    SYNTAX INTEGER (0..6)
    ACCESS read-only
    STATUS mandatory
    ::= { upsInput 3 }

upsInputTable OBJECT-TYPE
    SYNTAX SEQUENCE OF UpsInputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The Aggregate Object with number of entries equal to
	         NumPhases and including the UpsInput group."
    ::= { upsInput 4 }

upsInputEntry OBJECT-TYPE
    SYNTAX UpsInputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The input table entry containing the current, voltage, etc."
    INDEX { upsInputPhase }
    ::= { upsInputTable 1 }

UpsInputEntry ::= SEQUENCE {
    upsInputPhase     INTEGER,
    upsInputVoltage   INTEGER,
    upsInputCurrent   INTEGER,
    upsInputWatts     INTEGER
    }

upsInputPhase OBJECT-TYPE
    SYNTAX INTEGER  (0..6)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of the phase.  Serves as index for input table."
    ::= { upsInputEntry 1 }

upsInputVoltage OBJECT-TYPE
    SYNTAX INTEGER  (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured input voltage from the UPS meters in volts."
    ::= { upsInputEntry 2 }

upsInputCurrent OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Amp
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured input current from the UPS meters in amps."
    ::= { upsInputEntry 3 }

upsInputWatts OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS Watts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured input real power in watts. Most UPSs do not report
         this XCP data"
    ::= { upsInputEntry 4 }

upsInputSource OBJECT-TYPE
    SYNTAX  INTEGER {
    other(1),

    none(2),                	-- For example, Utility failure
    primaryUtility(3),		-- Normal utility feed to the UPS
    bypassFeed(4),          	-- Bypass utility, separate from primaryUtility
    secondaryUtility(5),    	-- Secondary utility feed (on a dual AC input UPS)
    generator(6),			-- Power provided by a generator
    flywheel(7),			-- Power provided by a flywheel (not necessarily AC)
    fuelcell(8) 			-- Power provided by fuel cell(s) (not necessarily AC)
    }
    ACCESS  read-only

    STATUS  mandatory
    DESCRIPTION
	   "The present external source of input power.  The enumeration
	       none(2) indicates that there is no external source of 
	       power, for example, the UPS is On Battery (an internal source).
	       The bypassFeed(4) can only be used when the Bypass source is known
	       to be a separate utility feed than the primaryUtility(3)."
    ::= { upsInput 5 }


-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsOutput               OBJECT IDENTIFIER       ::= { ups 4 }
--  UPS Output group
--  OID= .1.3.6.1.4.1.232.165.3.4

upsOutputLoad OBJECT-TYPE
    SYNTAX INTEGER (0..200)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The UPS output load in percent of rated capacity."
    ::= { upsOutput 1 }

upsOutputFrequency OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 Hertz
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured UPS output frequency in tenths of Hz."
    ::= { upsOutput 2 }

upsOutputNumPhases OBJECT-TYPE
    SYNTAX INTEGER  (0..6)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of metered output phases, serves as the table
	 index."
    ::= { upsOutput 3 }

upsOutputTable OBJECT-TYPE
    SYNTAX SEQUENCE OF UpsOutputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
	"The Aggregate Object with number of entries equal to NumPhases
	and including the UpsOutput group."
    ::= { upsOutput 4 }

upsOutputEntry OBJECT-TYPE
    SYNTAX UpsOutputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
	"Output Table Entry containing voltage, current, etc."
    INDEX { upsOutputPhase }
    ::= { upsOutputTable 1 }

UpsOutputEntry ::= SEQUENCE {
    upsOutputPhase       INTEGER,
    upsOutputVoltage     INTEGER,
    upsOutputCurrent     INTEGER,
    upsOutputWatts       INTEGER
    }

upsOutputPhase OBJECT-TYPE
    SYNTAX INTEGER (0..6)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number {1..3} of the output phase."
    ::= { upsOutputEntry 1 }

upsOutputVoltage OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured output voltage from the UPS metering in volts."
    ::= { upsOutputEntry 2 }

upsOutputCurrent OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Amp
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured UPS output current in amps."
    ::= { upsOutputEntry 3 }

upsOutputWatts OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS Watts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured real output power in watts."
    ::= { upsOutputEntry 4 }

upsOutputSource OBJECT-TYPE
    SYNTAX  INTEGER {
    other(1),
    none(2),
    normal(3),				-- normal, single UPS module output
    bypass(4),
    battery(5),
    booster(6),				-- Single or Double Boost, line-interactive UPSs only
    reducer(7),				-- Buck, line-interactive UPSs only
    parallelCapacity(8),		-- normal enhanced by Parallel for Capacity operation
    parallelRedundant(9),		-- normal enhanced by Redundant Parallel operation
    highEfficiencyMode(10)		-- normal enhanced by High Efficiency mode
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	   "The present source of output power.  The enumeration
	       none(2) indicates that there is no source of output
	       power (and therefore no output power), for example,
	       the system has opened the output breaker."
    ::= { upsOutput  5 }


-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsBypass               OBJECT IDENTIFIER       ::= { ups 5 }
--  UPS Bypass group
--  OID= .1.3.6.1.4.1.232.165.3.5

upsBypassFrequency OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 Hertz
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The bypass frequency in tenths of Hz."
    ::= { upsBypass 1 }

upsBypassNumPhases OBJECT-TYPE
    SYNTAX INTEGER (0..6)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of lines in the UPS bypass table."
    ::= { upsBypass 2 }

upsBypassTable OBJECT-TYPE
    SYNTAX SEQUENCE OF UpsBypassEntry
    ACCESS not-accessible 
    STATUS mandatory
    ::= { upsBypass 3 }

upsBypassEntry OBJECT-TYPE
    SYNTAX UpsBypassEntry
    ACCESS not-accessible 
    STATUS mandatory
    DESCRIPTION
	"Entry in the UpsBypassTable."
    INDEX { upsBypassPhase }
    ::= { upsBypassTable  1 }

UpsBypassEntry ::= SEQUENCE {
    upsBypassPhase    INTEGER,
    upsBypassVoltage  INTEGER
    }

upsBypassPhase OBJECT-TYPE
    SYNTAX INTEGER (0..6)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Bypass Phase, index for the table."
    ::= { upsBypassEntry 1 }

upsBypassVoltage OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured UPS bypass voltage in volts."
    ::= { upsBypassEntry 2 }


-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsEnvironment          OBJECT IDENTIFIER       ::= { ups 6 }
--  UPS Environment group
--  OID= .1.3.6.1.4.1.232.165.3.6

upsEnvAmbientTemp OBJECT-TYPE
    SYNTAX  INTEGER (-100..200)   -- UNITS Degrees Centigrade
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
       "The reading of the ambient temperature in the vicinity of the 
        UPS or SNMP agent."
    ::= { upsEnvironment  1 }

upsEnvAmbientLowerLimit OBJECT-TYPE
    SYNTAX  INTEGER (-100..200)   -- UNITS Degrees Centigrade
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
       "The Lower Limit of the ambient temperature; if UpsEnvAmbientTemp 
	falls below this value, the UpsAmbientTempBad alarm will occur."
    ::= { upsEnvironment  2 }

upsEnvAmbientUpperLimit OBJECT-TYPE
    SYNTAX  INTEGER (-100..200)   -- UNITS Degrees Centigrade
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
       "The Upper Limit of the ambient temperature; if UpsEnvAmbientTemp 
	rises above this value, the UpsAmbientTempBad alarm will occur.
	This value should be greater than UpsEnvAmbientLowerLimit."
    ::= { upsEnvironment  3 }

upsEnvAmbientHumidity OBJECT-TYPE
    SYNTAX  INTEGER (0..100)   -- UNITS %
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
       "The reading of the ambient humidity in the vicinity of the 
        UPS or SNMP agent."
    ::= { upsEnvironment  4 }

upsEnvRemoteTemp OBJECT-TYPE
    SYNTAX  INTEGER (-100..200)   -- UNITS Degrees Centigrade
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
       "The reading of a remote temperature sensor connected to the  
        UPS or SNMP agent."
    ::= { upsEnvironment  5 }

upsEnvRemoteHumidity OBJECT-TYPE
    SYNTAX  INTEGER (0..100)   -- UNITS %
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
       "The reading of a remote humidity sensor connected to the 
        UPS or SNMP agent."
    ::= { upsEnvironment  6 }

--
-- The Environmental Contact Sensing Table
--      Contains the table for monitoring all contacts (digital 
--      inputs).
--

upsEnvNumContacts OBJECT-TYPE
    SYNTAX  INTEGER (1..1024)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	   "The number of Contacts in the UpsContactsTable.
		This object indicates the number of rows in the 
		UpsContactsTable."
    ::= { upsEnvironment  7 }

upsContactsTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF UpsContactsTableEntry
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
	   "A list of Contact Sensing table entries.  
		The number of entries is given by the value of 
		UpsEnvNumContacts."
    ::= { upsEnvironment  8 }

upsContactsTableEntry OBJECT-TYPE
    SYNTAX  UpsContactsTableEntry
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
	   "An entry containing information applicable 
		to a particular Contact input."
    INDEX   { upsContactIndex }
    ::= { upsContactsTable  1 }

UpsContactsTableEntry ::= SEQUENCE {
    upsContactIndex     INTEGER,
    upsContactType      INTEGER,
    upsContactState     INTEGER,
    upsContactDescr     DisplayString
    }

upsContactIndex OBJECT-TYPE
    SYNTAX  INTEGER (1..1024)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	   "The Contact identifier; identical to the Contact Number."
    ::= { upsContactsTableEntry  1 }

upsContactType OBJECT-TYPE
    SYNTAX  INTEGER {
    normallyOpen(1),            -- or Input Normally High
    normallyClosed(2),          -- or Input Normally Low
    anyChange(3),               -- No normal Open/Closed state
    notUsed(4)                  -- Contact not in service
    }
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
	   "The normal state for this contact.  The 'other'
	    state is the Active state for generating the UpstdContactActiveNotice
	    trap.  If anyChange(3) is selected, then this trap is sent
        any time the contact changes to either Open or Closed.
        No traps are sent if the Contact is set to notUsed(4).
        In many cases, the configuration for Contacts may be done by other 
        means, so this object may be read-only."
    ::= { upsContactsTableEntry  2 }

upsContactState OBJECT-TYPE
    SYNTAX  INTEGER {
    open(1),
    closed(2),
    openWithNotice(3),
    closedWithNotice(4)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	   "The current state of the Contact input;
		the value is based on the open/closed input state 
		and the setting for UpsContactType.
		When entering the openWithNotice(3) and closedWithNotice(4) 
        states, no entries added to the UpsAlarmTable, but
        the UpstdContactActiveNotice trap is sent."
    ::= { upsContactsTableEntry  3 }

upsContactDescr OBJECT-TYPE
    SYNTAX  DisplayString (SIZE (0..63))
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
	   "A label identifying the Contact.  This object should be
	    set by the administrator."
    ::= { upsContactsTableEntry  4 }

upsEnvRemoteTempLowerLimit OBJECT-TYPE
    SYNTAX  INTEGER (-100..200)   -- UNITS Degrees Centigrade
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
       "The Lower Limit of the remote temperature; if UpsEnvRemoteTemp 
	falls below this value, the UpsRemoteTempBad alarm will occur."
    ::= { upsEnvironment  9 }

upsEnvRemoteTempUpperLimit OBJECT-TYPE
    SYNTAX  INTEGER (-100..200)   -- UNITS Degrees Centigrade
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
       "The Upper Limit of the remote temperature; if UpsEnvRemoteTemp 
	rises above this value, the UpsRemoteTempBad alarm will occur.
	This value should be greater than UpsEnvRemoteTempLowerLimit."
    ::= { upsEnvironment  10 }

upsEnvRemoteHumidityLowerLimit OBJECT-TYPE
    SYNTAX  INTEGER (0..100)   -- UNITS %
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
       "The Lower Limit of the remote humidity reading; if UpsEnvRemoteHumidity
	falls below this value, the UpsRemoteHumidityBad alarm will occur."
    ::= { upsEnvironment  11 }

upsEnvRemoteHumidityUpperLimit OBJECT-TYPE
    SYNTAX  INTEGER (0..100)   -- UNITS %
    ACCESS  read-write
    STATUS  mandatory
    DESCRIPTION
       "The Upper Limit of the remote humidity reading; if UpsEnvRemoteHumidity 
	rises above this value, the UpsRemoteHumidityBad alarm will occur.
	This value should be greater than UpsEnvRemoteHumidityLowerLimit."
    ::= { upsEnvironment  12 }


-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsTest                 OBJECT IDENTIFIER       ::= { ups 7 }
--  UPS Test group
--  OID= .1.3.6.1.4.1.232.165.3.7


upsTestBattery OBJECT-TYPE
    SYNTAX INTEGER { startTest (1) }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this variable to startTest initiates the
	 battery test.  All other set values are invalid."
    ::= { upsTest 1 }

upsTestBatteryStatus OBJECT-TYPE
    SYNTAX INTEGER {
    unknown (1),
    passed (2),
    failed (3),
    inProgress (4),
    notSupported (5),
    inhibited (6),
	scheduled (7)
    }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Reading this enumerated value gives an indication of the
	 UPS Battery test status."
    ::= { upsTest 2 }

upsTestTrap OBJECT-TYPE
    SYNTAX INTEGER { startTestTrap (1) }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this variable to startTestTrap initiates a TrapTest
	 is sent out from HPMM.  All other set values are invalid."
    ::= { upsTest 3 }

-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsControl              OBJECT IDENTIFIER       ::= { ups 8 }
--  UPS Control group
--  OID= .1.3.6.1.4.1.232.165.3.8


upsControlOutputOffDelay OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this value to other than zero will cause the UPS
	 output to turn off after the number of seconds.
	 Setting it to 0 will cause an attempt to abort a pending
	 shutdown."
    ::= { upsControl 1 }

upsControlOutputOnDelay OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this value to other than zero will cause the UPS
	 output to turn on after the number of seconds.
	 Setting it to 0 will cause an attempt to abort a pending
	 startup."
    ::= { upsControl 2 }

upsControlOutputOffTrapDelay OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"When UpsControlOutputOffDelay reaches this value, a trap will
	 be sent."
    ::= { upsControl 3 }

upsControlOutputOnTrapDelay OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS deprecated
    DESCRIPTION
	"When UpsControlOutputOnDelay reaches this value, a
	 UpsOutputOff trap will be sent."
    ::= { upsControl 4 }

upsControlToBypassDelay OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this value to other than zero will cause the UPS
	 output to go to Bypass after the number of seconds.
		 If the Bypass is unavailable, this may cause the UPS
		 to not supply power to the load.
	 Setting it to 0 will cause an attempt to abort a pending
	 shutdown."
    ::= { upsControl 5 }

upsLoadShedSecsWithRestart OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this value will cause the UPS output to turn off 
	 after the set number of seconds, then restart (after a UPS-defined
	 'down time') when the utility is again available.  
	 Unlike UpsControlOutputOffDelay, which might or might not,
       this object always maps to the XCP 0x8A Load Dump & Restart command,
       so the desired shutdown and restart behavior is guaranteed to happen.
	 Once set, this command cannot be aborted.
       This is the preferred Control object to use when performing an On
       Battery OS Shutdown."
    ::= { upsControl 6 }


-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsConfig               OBJECT IDENTIFIER       ::= { ups 9 }
--  UPS Config group
--  OID= .1.3.6.1.4.1.232.165.3.9


upsConfigOutputVoltage OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The nominal UPS Output voltage per phase in volts."
    ::= { upsConfig 1 }

upsConfigInputVoltage OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The nominal UPS Input voltage per phase in volts."
    ::= { upsConfig 2 }

upsConfigOutputWatts OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS Watts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The nominal UPS available real power output in watts."
    ::= { upsConfig  3}

upsConfigOutputFreq OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 Hertz
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The nominal output frequency in tenths of Hz."
    ::= { upsConfig 4 }

upsConfigDateAndTime OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..22))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Date and time information for the UPS.  Setting this variable
	 will initiate a set UPS date and time to this value.  Reading
	 this variable will return the UPS time and date.  This value
	 is not referenced to sysUpTime.  It is simply the clock value
	 from the UPS real time clock.
	 Format is as follows: MM/DD/YYYY:HH:MM:SS."
    ::= { upsConfig 5 }

upsConfigLowOutputVoltageLimit OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Lower limit for acceptable Output Voltage, per the UPS
	 specifications."
    ::= { upsConfig 6 }

upsConfigHighOutputVoltageLimit OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Upper limit for acceptable Output Voltage, per the UPS
	 specifications."
    ::= { upsConfig 7 }


-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsRecep                OBJECT IDENTIFIER       ::= { ups 10 }
--  UPS Recep group
--
--  (Note that the terms Receptacle, Outlet, and Load Group are used interchangeably
--  here and all mean "one of a set of controllable, power-switched outputs")
--  OID= .1.3.6.1.4.1.232.165.3.10


upsNumReceptacles OBJECT-TYPE
	SYNTAX INTEGER (0..64)
	ACCESS read-only
	STATUS mandatory
    DESCRIPTION
	"The number of independently controllable Receptacles, as described in the 
	UpsRecepTable."
	::= { upsRecep 1 }
	
upsRecepTable OBJECT-TYPE
	SYNTAX SEQUENCE OF UpsRecepEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION "The Aggregate Object with number of entries equal to
		    NumReceptacles and including the UpsRecep group."
	::={ upsRecep 2 }
	
upsRecepEntry OBJECT-TYPE
	SYNTAX UpsRecepEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION "The Recep table entry, etc."
	INDEX { upsRecepIndex }
	::= { upsRecepTable 1 }

UpsRecepEntry ::= SEQUENCE {
    upsRecepIndex                   INTEGER,
    upsRecepStatus                  INTEGER,
    upsRecepOffDelaySecs            INTEGER,
    upsRecepOnDelaySecs             INTEGER,
    upsRecepAutoOffDelay            INTEGER,
    upsRecepAutoOnDelay             INTEGER,
    upsRecepShedSecsWithRestart     INTEGER 
	}
	
upsRecepIndex OBJECT-TYPE
	SYNTAX INTEGER (1..64)
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
	"The number of the Receptacle. Serves as index for Receptacle table."
	::= { upsRecepEntry 1 }
	
upsRecepStatus OBJECT-TYPE
    SYNTAX INTEGER {
		on(1), off(2), pendingOff(3), pendingOn(4), unknown(5) }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
    "The Recep Status 1=On/Close, 2=Off/Open, 3=On w/Pending Off, 
    4=Off w/Pending ON, 5=Unknown."
	::={ upsRecepEntry 2 }		

upsRecepOffDelaySecs OBJECT-TYPE
    SYNTAX INTEGER (-1..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"The Delay until the Receptacle is turned Off.  Setting 
	this value to other than -1 will cause the UPS output to 
	turn off after the number of seconds (0 is immediately).  
	Setting it to -1 will cause an attempt to abort a pending shutdown.
	When this object is set while the UPS is On Battery, it is not necessary
	to set UpsRecepOnDelaySecs, since the outlet will turn back on 
	automatically when power is available again."
	::= { upsRecepEntry 3 }

upsRecepOnDelaySecs OBJECT-TYPE
    SYNTAX INTEGER (-1..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	" The Delay until the Receptacle is turned On.  Setting 
	this value to other than -1 will cause the UPS output to 
	turn on after the number of seconds (0 is immediately).  
	Setting it to -1 will cause an attempt to abort a pending restart."
	::={ upsRecepEntry 4 }


upsRecepAutoOffDelay OBJECT-TYPE
    SYNTAX INTEGER (-1..32767)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"The delay after going On Battery until the Receptacle is 
	automatically turned Off.  A value of -1 means that this Output should 
	never be turned Off automatically, but must be turned Off only by command.
	Values from 0 to 30 are valid, but probably innappropriate.
	The AutoOffDelay can be used to prioritize loads in the event of a prolonged 
	power outage; less critical loads will turn off earlier to extend battery 
	time for the more critical loads. If the utility power is restored before the 
	AutoOff delay counts down to 0 on an outlet, that outlet will not turn Off."
	::= { upsRecepEntry 5 }
	
upsRecepAutoOnDelay OBJECT-TYPE
    SYNTAX INTEGER (-1..32767)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Seconds delay after the Outlet is signaled to turn On before the Output is
	Automatically turned ON. A value of -1 means that this Output should never
	be turned On automatically, but only when specifically commanded to do so.
	A value of 0 means that the Receptacle should come On immediately
	at power-up or for an On command."
	::= { upsRecepEntry 6 }

-- UpsRecepAutoOnDelay has three purposes: 
-- 1. To coordinate the automatic startup of various outlets, when the normal 
-- auto-sequencing of 1 second per outlet is not adequate. For example, they may 
-- be used to power up hard disk arrays before CPU units are started. 
-- 2. To force additional 'Down Time' during UpsRecepOffDelaySecs commands, for 
-- equipment to be reset, when the standard 'Down Time' is not long enough. 
-- 3. For the -1 value, to ensure that loads won?t be powered until commanded, 
-- following power-up or a UpsRecepOffDelaySecs command.

upsRecepShedSecsWithRestart OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)    -- UNITS seconds
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"Setting this value will cause the UPS output to turn off 
	 after the set number of seconds, then restart (after a UPS-defined
	 'down time') when the utility is again available.  
	 Unlike UpsRecepOffDelaySecs, which might or might not,
       this object always maps to the XCP 0x8A Load Dump & Restart command,
       so the desired shutdown and restart behavior is guaranteed to happen.
	 Once set, this command cannot be aborted."
    ::= { upsRecepEntry 7 }



-- ====================================================================================
--
--  ups                     OBJECT IDENTIFIER       ::= {cpqPower 3}  
--  upsTopology             OBJECT IDENTIFIER       ::= { ups 11 }
--  UPS Topology group
--  OID= .1.3.6.1.4.1.232.165.3.11


upsTopologyType OBJECT-TYPE
	SYNTAX INTEGER (0..32767)
	ACCESS read-only
	STATUS mandatory
    DESCRIPTION
	"Value which denotes the type of UPS by its power topology.  Values are the
	same as those described in the XCP Topology block's Overall Topology field."
	::= { upsTopology 1 }

upsTopoMachineCode OBJECT-TYPE
	SYNTAX INTEGER (0..32767)
	ACCESS read-only
	STATUS mandatory
    DESCRIPTION
  	"ID Value which denotes the Compaq/HP model of the UPS for software.  Values 
	are the same as those described in the XCP Configuration block's Machine Code 
	field."
	::= { upsTopology 2 }

upsTopoUnitNumber OBJECT-TYPE
	SYNTAX INTEGER (0..64)
	ACCESS read-only
	STATUS mandatory
    DESCRIPTION
	"Identifies which unit and what type of data is being reported.
	A value of 0 means that this MIB information comes from the top-level system 
	view (eg, manifold module or system bypass cabinet reporting total system 
	output).  Standalone units also use a value of 0, since they are the 'full 
	system' view.
	A value of 1 or higher indicates the number of the module in the system
	which is reporting only its own data in the HP MIB objects."
	::= { upsTopology 3 }

upsTopoPowerStrategy OBJECT-TYPE
    SYNTAX INTEGER {
		highAlert(1), standard(2), enableHighEfficiency(3),
		immediateHighEfficiency(4) }
	ACCESS read-write
	STATUS mandatory
    DESCRIPTION
	"Value which denotes which Power Strategy is currently set for the UPS.
	The values are:
	highAlert(1) - The UPS shall optimize its operating state to maximize its 
			power-protection levels.  This mode will be held for at most 24 hours.
	standard(2) - Balanced, normal power protection strategy. UPS will not enter 
			HE operating mode from this setting.
	enableHighEfficiency(3) - The UPS is enabled to enter HE operating mode to 
			optimize its operating state to maximize its efficiency, when 
			conditions change to permit it (as determined by the UPS).
	forceHighEfficiency(4) - If this value is permitted to be Set for this UPS,
			and if conditions permit, requires the UPS to enter High Efficiency 
			mode now, without delay (for as long as utility conditions permit).
			After successfully set to forceHighEfficiency(4), 
			UpsTopoPowerStrategy changes to value enableHighEfficiency(3).
	UpsOutputSource will indicate if the UPS status is actually operating in 
	High Efficiency mode."
	::= { upsTopology 4 }

-- ====================================================================================
-- 
--  pdr                     OBJECT IDENTIFIER       ::= {cpqPower 4}  
--  pdrIdent                OBJECT IDENTIFIER       ::= { pdr 1 }
--  PDR identification group
--  OID= .1.3.6.1.4.1.232.165.4.1

pdrName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
	"The string identify the device."
    ::= { pdrIdent 1 }

pdrModel OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device Model."
    ::= { pdrIdent 2 }

pdrManufacturer OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device Manufacturer Name (e.g. Hewlett-Packard)."
    ::= { pdrIdent 3 }

pdrFirmwareVersion OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The firmware revision level of the device."
    ::= { pdrIdent 4 }

pdrPartNumber OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device part number."
    ::= { pdrIdent 5 }

pdrSerialNumber OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..63))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The PDR's serial number."
    ::= { pdrIdent 6 }

pdrVARating OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS Volts-amps
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The VA Rating of this PDR (all phases)"
    ::= { pdrIdent 7 }

pdrNominalOutputVoltage OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The nominal Output Voltage may differ from the nominal 
         Input Voltage if the PDR has an input transformer"
    ::= { pdrIdent 8 }

pdrNumPhases OBJECT-TYPE
    SYNTAX INTEGER (1..3)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of phases for this PDR"
    ::= { pdrIdent 9 }

pdrNumPanels OBJECT-TYPE
    SYNTAX INTEGER (0..100)  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of panels or subfeeds in this PDR"
    ::= { pdrIdent 10 }

pdrNumBreakers OBJECT-TYPE
    SYNTAX INTEGER (0..100)  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of breakers in this PDR"
    ::= { pdrIdent 11 }

-- ====================================================================================
--
--  pdr                     OBJECT IDENTIFIER       ::= {cpqPower 4}  
--  pdrPanel                OBJECT IDENTIFIER       ::= { pdr 2 }
--  PDR Panel Meters
--  OID= .1.3.6.1.4.1.232.165.4.2

pdrPanelTable OBJECT-TYPE
    SYNTAX SEQUENCE OF PdrPanelEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "Aggregate Object with number of entries equal to
	         pdrNumPanels"
    ::= { pdrPanel 1 }

pdrPanelEntry OBJECT-TYPE
    SYNTAX PdrPanelEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION 
           "The panel table entry containing all power parameters 
            for each panel."
    INDEX { pdrPanelIndex }
    ::= { pdrPanelTable 1 }

PdrPanelEntry ::= SEQUENCE {
    pdrPanelIndex             INTEGER,
    pdrPanelFrequency         INTEGER,
    pdrPanelPower             INTEGER,
    pdrPanelRatedCurrent      INTEGER,
    pdrPanelMonthlyKWH        INTEGER,
    pdrPanelYearlyKWH         INTEGER,
    pdrPanelTotalKWH          INTEGER,
    pdrPanelVoltageA          INTEGER,
    pdrPanelVoltageB          INTEGER,
    pdrPanelVoltageC          INTEGER,
    pdrPanelCurrentA          INTEGER,
    pdrPanelCurrentB          INTEGER,
    pdrPanelCurrentC          INTEGER,
    pdrPanelLoadA             INTEGER,
    pdrPanelLoadB             INTEGER,
    pdrPanelLoadC             INTEGER
    }

pdrPanelIndex OBJECT-TYPE
    SYNTAX INTEGER	(0..10)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index for the pdrPanelEntry table."
    ::= { pdrPanelEntry 1}

pdrPanelFrequency OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS  0.1 Hertz
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The present frequency reading for the panel voltage."
    ::= { pdrPanelEntry 2 }

pdrPanelPower OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.1 KW
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The present power of the panel."
    ::= { pdrPanelEntry 3 }

pdrPanelRatedCurrent OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.1 A
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The present rated current of the panel."
    ::= { pdrPanelEntry 4 }

pdrPanelMonthlyKWH OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.01 KWH
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The accumulated KWH for this panel since the beginning of this 
         calendar month or since the last reset."
    ::= { pdrPanelEntry 5 }

pdrPanelYearlyKWH OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.01 KWH
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The accumulated KWH for this panel since the beginning of this 
         calendar year or since the last reset."
    ::= { pdrPanelEntry 6 }

pdrPanelTotalKWH OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.01 KWH
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The accumulated KWH for this panel since it was put into service 
         or since the last reset."
    ::= { pdrPanelEntry 7 }

pdrPanelVoltageA OBJECT-TYPE
    SYNTAX INTEGER  (0..2147483647)  -- UNITS 0.1 V
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured panel output voltage."
    ::= {pdrPanelEntry 8}

pdrPanelVoltageB OBJECT-TYPE
    SYNTAX INTEGER  (0..2147483647)  -- UNITS 0.1 V
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured panel output voltage."
    ::= {pdrPanelEntry 9}

pdrPanelVoltageC OBJECT-TYPE
    SYNTAX INTEGER  (0..2147483647)  -- UNITS 0.1 V
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured panel output voltage."
    ::= {pdrPanelEntry 10}

pdrPanelCurrentA OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 A
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured panel output current."
    ::= {pdrPanelEntry 11}

pdrPanelCurrentB OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 A
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured panel output current."
    ::= {pdrPanelEntry 12}

pdrPanelCurrentC OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS 0.1 A
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured panel output current."
    ::= {pdrPanelEntry 13}

pdrPanelLoadA OBJECT-TYPE
    SYNTAX INTEGER (0..200)  -- UNITS 0.1 percent
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The percentage of load is the ratio of each output 
         current to the rated output current to the panel."
    ::= {pdrPanelEntry 14}

pdrPanelLoadB OBJECT-TYPE
    SYNTAX INTEGER (0..200)  -- UNITS 0.1 percent
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The percentage of load is the ratio of each output  
         current to the rated output current to the panel."
    ::= {pdrPanelEntry 15}

pdrPanelLoadC OBJECT-TYPE
    SYNTAX INTEGER (0..200)  -- UNITS 0.1 percent
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The percentage of load is the ratio of each output  
         current to the rated output current to the panel."
    ::= {pdrPanelEntry 16}


-- ====================================================================================
--
--  pdr                     OBJECT IDENTIFIER       ::= {cpqPower 4}  
--  pdrBreaker              OBJECT IDENTIFIER       ::= { pdr 3 }
--  Based on physical installed Breakers
--  OID= .1.3.6.1.4.1.232.165.4.3

pdrBreakerTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF PdrBreakerEntry
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
           "List of breaker table entries.  The number of entries 
            is given by pdrNumBreakers for this panel."
    ::= { pdrBreaker 1 }

pdrBreakerEntry OBJECT-TYPE
    SYNTAX  PdrBreakerEntry 
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
           "An entry containing information applicable to a
            particular output breaker of a particular panel."
    INDEX   { pdrPanelIndex, pdrBreakerIndex }
    ::= { pdrBreakerTable 1 }

PdrBreakerEntry ::= SEQUENCE {
    pdrBreakerIndex           	INTEGER,
    pdrBreakerPanel	      	INTEGER,
    pdrBreakerNumPosition      	INTEGER,
    pdrBreakerNumPhases       	INTEGER,
    pdrBreakerNumSequence      	INTEGER,
    pdrBreakerRatedCurrent    	INTEGER,
    pdrBreakerMonthlyKWH      	INTEGER,
    pdrBreakerYearlyKWH       	INTEGER,
    pdrBreakerTotalKWH        	INTEGER,
    pdrBreakerCurrent         	INTEGER,
    pdrBreakerCurrentPercent  	INTEGER,
    pdrBreakerPower           	INTEGER,
    pdrBreakerPercentWarning    INTEGER,
    pdrBreakerPercentOverload   INTEGER
    }

pdrBreakerIndex OBJECT-TYPE
    SYNTAX  INTEGER 	(0..200)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The index of breakers. 42 breakers in each panel,
            arranged in odd and even columns"
    ::= { pdrBreakerEntry 1 }

pdrBreakerPanel OBJECT-TYPE
    SYNTAX  INTEGER	
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The index of panel that these breakers are installed on."
    ::= { pdrBreakerEntry 2 }

pdrBreakerNumPosition OBJECT-TYPE
    SYNTAX  INTEGER	
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The position of this breaker in the panel, 1-phase breaker
	    or n-m breaker for 2-phase or n-m-k breaker for 3-phase."
    ::= { pdrBreakerEntry 3 }

pdrBreakerNumPhases OBJECT-TYPE
    SYNTAX  INTEGER	
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The number of phase for this particular breaker."
    ::= { pdrBreakerEntry 4 }

pdrBreakerNumSequence OBJECT-TYPE
    SYNTAX  INTEGER	
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The sequence of this breaker. i.e. 1 for single phase
	    1,2 for 2-phase or 1,2,3 for 3-phase."
    ::= { pdrBreakerEntry 5 }

pdrBreakerRatedCurrent OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS 0.1 A
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The rated current in Amps for this particular breaker."
    ::= { pdrBreakerEntry 6 }

pdrBreakerMonthlyKWH OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.01 KWH
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The accumulated KWH for this breaker since the beginning of this 
         calendar month or since the last reset."
    ::= { pdrBreakerEntry 7 }

pdrBreakerYearlyKWH OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.01 KWH
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The accumulated KWH for this breaker since the beginning of this 
         calendar year or since the last reset."
    ::= { pdrBreakerEntry 8 }

pdrBreakerTotalKWH OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)  -- Units 0.01 KWH
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
	"The accumulated KWH for this breaker since it was put into service 
         or since the last reset."
    ::= { pdrBreakerEntry 9 }

pdrBreakerCurrent OBJECT-TYPE
    SYNTAX INTEGER (0..2147483647)  -- UNITS RMS 0.1 A
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured output current for this breaker Current."
    ::= { pdrBreakerEntry 10 }

pdrBreakerCurrentPercent OBJECT-TYPE
    SYNTAX INTEGER (0..200)  -- UNITS 0.1 Percent
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The ratio of output current over rated 
         current for each breaker."
    ::= { pdrBreakerEntry 11 }

pdrBreakerPower OBJECT-TYPE
    SYNTAX INTEGER   -- UNITS Watts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The power for this breaker in Watts."
    ::= { pdrBreakerEntry 12 }

pdrBreakerPercentWarning OBJECT-TYPE
    SYNTAX  INTEGER (0..200)	-- UNITS 0.1 Percent
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The percentage of Warning set for this breaker."
    ::= { pdrBreakerEntry 13 }

pdrBreakerPercentOverload OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS 0.1 Percent
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The percentage of Overload set for this breaker."
    ::= { pdrBreakerEntry 14 }


-- ====================================================================================
--
--  mpdu                     OBJECT IDENTIFIER       ::= {cpqPower 5}    
--  mpduIdent                OBJECT IDENTIFIER       ::= { mpdu 1 }
--  MPDU (or iPDU) identification group
--  OID= .1.3.6.1.4.1.232.165.5.1

mpduNumMPDU OBJECT-TYPE
    SYNTAX INTEGER
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The number of Modular PDUs (Core) detected."
    ::= { mpduIdent 1 }
    
mpduIdentTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MpduIdentEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "Indexed by mpduNumMPDU. So aggregate objects for each entry equal to mpduNumMPDU 
                 before go to the next entry. i.e if 4 MPDU detected, display 4 indexes, 4 
                 Manufacturers, 4 Models..., start with 1."
    ::= { mpduIdent 2 }

mpduIdentEntry OBJECT-TYPE
    SYNTAX MpduIdentEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The table entry containing the identifications of each MPDU as well 
                 as names of PDR panel, location of MPDU in a Data Center."
    INDEX { mpduIdentIndex }
    ::= { mpduIdentTable 1 }

MpduIdentEntry ::= SEQUENCE {
	mpduIdentIndex			INTEGER,
	mpduManufacturer		DisplayString,
	mpduModel			DisplayString,
	mpduName			DisplayString,
	mpduFirmwareVersion		DisplayString,
	mpduHardwareVersion		DisplayString,
	mpduPartNumber			DisplayString,
	mpduSerialNumber		DisplayString,
	mpduUUID			DisplayString,
	mpduIP				DisplayString,
	mpduMACAddress			DisplayString,
	mpduControlStatus		DisplayString,
	mpduRegion			DisplayString,
	mpduType			DisplayString,
	mpduPowerRating			DisplayString,
	mpduInputRating			DisplayString,
	mpduInputPlug			DisplayString,
	mpduNumBreakers			INTEGER, 
	mpduNumOutlet			INTEGER, 
	mpduUHeight			INTEGER,
	mpduRedundantStatus		DisplayString,
	mpduNumSmartExtBar		INTEGER, 
	mpduPanelName			DisplayString,
	mpduPanelBreakerName		DisplayString,
	mpduPanelBreakerRating		DisplayString,
	mpduACFeedName			DisplayString,
	mpduFloorName			DisplayString,
	mpduRoomName			DisplayString,
	mpduRow				DisplayString,
	mpduRowPosition			DisplayString,
	mpduRackName			DisplayString,
        mpduRackHeight			DisplayString,
        mpduRackID			DisplayString,
	mpduUPosition			INTEGER,
	mpduPairedPDUUUID		DisplayString,
	mpduPairedPDUIP			DisplayString,
	mpduInstalledLocation		INTEGER,
      	mpduTotalPowerWatt		INTEGER,
      	mpduTotalPowerVA  		INTEGER,
      	mpduTotalPercentLoad    	INTEGER
    }

mpduIdentIndex OBJECT-TYPE
    SYNTAX INTEGER (0..100)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index for the MpduIdentEntry table. Start with 1"
    ::= { mpduIdentEntry 1 }

mpduManufacturer OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           " The Core PDU manufacturer. StringLength=[21]"
    ::= { mpduIdentEntry 2 }

mpduModel OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Core PDU model, marketing name. StringLength=[40]."
    ::= { mpduIdentEntry 3 }

mpduName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Core PDU name, descriptive name or hostname. StringLength=[16]."
    ::= { mpduIdentEntry 4 }

mpduFirmwareVersion OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Core PDU firmware version(s). StringLength=[12]."
    ::= { mpduIdentEntry 5 }

mpduHardwareVersion OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
            "The Core PDU hardware version. StringLength=[8]."
    ::= { mpduIdentEntry 6 }

mpduPartNumber OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Core PDU part number. StringLength=[21]."
    ::= { mpduIdentEntry 7 }

mpduSerialNumber OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU external serial number. StringLength=[21]."
    ::= { mpduIdentEntry 8 }

mpduUUID OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's UUID equals PN add SN. StringLength=[17]."
    ::= { mpduIdentEntry 9 }

mpduIP OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's assigned IP. StringLength=[16]."
    ::= { mpduIdentEntry 10 }

mpduMACAddress OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Core PDU MAC address. StringLength=[18]."
    ::= { mpduIdentEntry 11 }

mpduControlStatus OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Core PDU Control Status: master or slave units.
              StringLength=[31]."
    ::= { mpduIdentEntry 12 }

mpduRegion OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's Region: NA, Intl, Japan... StringLength=[7]."
    ::= { mpduIdentEntry 13 }

mpduType OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's Type: Delta, Wye, single, Wye+lowline.
            StringLength=[24]."
    ::= { mpduIdentEntry 14 }

mpduPowerRating OBJECT-TYPE
    SYNTAX  DisplayString  --UNITS 0.01 KVA
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's Power Rating in KVA (Name Plate). Value is presented 
            in 1/100 of the KVA. i.e. 1750 means 17.50 KVA"
    ::= { mpduIdentEntry 15 }

mpduInputRating OBJECT-TYPE
    SYNTAX  DisplayString  --UNITS A
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's Input Current Rating in A (Name Plate)"
    ::= { mpduIdentEntry 16 }

mpduInputPlug OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The PDU's Input Plug: IEC60309 516P6,NEMA L15-30P...
             StringLength=[16]."
    ::= { mpduIdentEntry 17 }

mpduNumBreakers OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The number of breakers used in each MPDU (6 by default)."
    ::= { mpduIdentEntry 18 }

mpduNumOutlet OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The number of outlets of each MPDU (6 by default)."
    ::= { mpduIdentEntry 19 }

mpduUHeight OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The MPDU U Height 1U or 2 U (1U by default)."
    ::= { mpduIdentEntry 20 }

mpduRedundantStatus OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Status of Core PDU in paired or not: Stand-alone or Redundant.
             StringLength=[12]."
    ::= { mpduIdentEntry 21 }

mpduNumSmartExtBar OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "total number of  detected Smart Sticks connecting to each PDU."
    ::= { mpduIdentEntry 22 }

mpduPanelName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Name of Panel that was entered by customer in GUI.
             StringLength=[50]."
    ::= { mpduIdentEntry 23 }

mpduPanelBreakerName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Name of breakers or Panel Position entered by customer in GUI.
             StringLength=[50]."
    ::= { mpduIdentEntry 24 }

mpduPanelBreakerRating OBJECT-TYPE
    SYNTAX	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "Breaker rating of the PDR Panel."
    ::= { mpduIdentEntry 25 }

mpduACFeedName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "it would be A, B, Red, or White...
             StringLength=[50]."
    ::= { mpduIdentEntry 26 }

mpduFloorName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Name of building floor entered by customer in GUI.
             StringLength=[50]."
    ::= { mpduIdentEntry 27 }

mpduRoomName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Name of the room entered by customer in GUI. StringLength=[50]."
    ::= { mpduIdentEntry 28 }

mpduRow OBJECT-TYPE
    SYNTAX	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "Data Center Row entered by customer in GUI.
             StringLength=[11]."
    ::= { mpduIdentEntry 29 }

mpduRowPosition OBJECT-TYPE
    SYNTAX	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "Position in Row entered by customer in GUI. Null will be returned 
            if not detected. StringLength=[11]."
    ::= { mpduIdentEntry 30 }

mpduRackName OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Name of the Rack entered by customer in GUI. Null will be returned 
            if not detected. StringLength=[50]."
    ::= { mpduIdentEntry 31 }

mpduRackHeight OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Rack Type (22U, 42U, 50U...). Null will be returned if not detected.
             StringLength=[3]."
    ::= { mpduIdentEntry 32 }

mpduRackID OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "An unique ID to identify a rack, i.e. Rack SN. Null will be returned if 
            not detected. StringLength=[50]."
    ::= { mpduIdentEntry 33 }

mpduUPosition OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "PDU Rack bottom U Start position, core U position. Null will be returned if not detected."
    ::= { mpduIdentEntry 34 }

mpduPairedPDUUUID OBJECT-TYPE
    SYNTAX	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "UUID of the PDU paired with this one. Null will be returned if not detected.
             StringLength=[50]."
    ::= { mpduIdentEntry 35 }

mpduPairedPDUIP OBJECT-TYPE
    SYNTAX	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "IP address of the PDU paired with this one. Null will be returned if not detected.
             StringLength=[16]."
    ::= { mpduIdentEntry 36 }

mpduInstalledLocation OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "0=Left 0U side area or rack frame, 1= Right 0U side area or rack frame, 2= front RETMA rail, 
            3=back RETMA rail) - spatial location. A value of -1 will be returned if not detected."
    ::= { mpduIdentEntry 37 }

mpduTotalPowerWatt OBJECT-TYPE
    SYNTAX  INTEGER   -- Units Watts
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
    	"The total power for the whole iPDU in Watts.  A value 
         of -1 will be returned if the power is unable to be calculated."
    ::= { mpduIdentEntry 38 }

mpduTotalPowerVA OBJECT-TYPE
    SYNTAX  INTEGER   -- Units VA
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
    	"The total power for the whole iPDU in VA.  A value 
         of -1 will be returned if the power is unable to be calculated."
    ::= { mpduIdentEntry 39 }

mpduTotalPercentLoad OBJECT-TYPE
    SYNTAX INTEGER   --UNITS 0.1 Percents
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The whole iPDU's load in percent of rated capacity. Value is 
         presented in 1/10 of the percentage i.e. 125 is 12.5%.  A value 
         of -1 will be returned if the current is unable to be measured."
    ::= { mpduIdentEntry 40 }


-- ====================================================================================
--
--  mpdu                     OBJECT IDENTIFIER       ::= {cpqPower 5}      
--  mpduOutput               OBJECT IDENTIFIER       ::= { mpdu 2 }
--  MPDU (or iPDU) Output Measurements (6 Load Segments by default)
--  OID= .1.3.6.1.4.1.232.165.5.2

mpduOutputTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MpduOutputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
           "Indexed by mpduNumOutlet. So aggregate objects for each entry equal to (mpduNumMPDU 
            multiplies mpduNumOutlet) before go to the next entry. i.e if 4 MPDU detected, 
            display 6x4 indexes, 6x4 OutputStatus, 6x4 OutputBreakerRating...start with 1."
    ::= { mpduOutput 1 }

mpduOutputEntry OBJECT-TYPE
    SYNTAX MpduOutputEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION 
           "The output table entry containing the voltage, current, PF,
            percent load, VA, Watts for the Modular PDU."
 
    INDEX { mpduIdentIndex, mpduOutputIndex }
    ::= { mpduOutputTable 1 }

MpduOutputEntry ::= SEQUENCE {
      mpduOutputIndex  			INTEGER,
      mpduOutputStatus    		DisplayString,
      mpduOutputBreakerRating  		INTEGER,
      mpduOutputSmartDevice		DisplayString,
      mpduOutputPercentLoad    		INTEGER,
      mpduOutputVoltage    		INTEGER,
      mpduOutputCurrent   		INTEGER,
      mpduOutputPowerVA	    		INTEGER,
      mpduOutputPowerWatt      		INTEGER,
      mpduOutputPowerFactor    		INTEGER,
      mpduOutputWarningThreshold    	INTEGER,
      mpduOutputCriticalThreshold    	INTEGER
    }

mpduOutputIndex OBJECT-TYPE
    SYNTAX INTEGER  (0..100)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index for the MpduOutputEntry table."
    ::= { mpduOutputEntry 1 }

mpduOutputStatus OBJECT-TYPE
    SYNTAX  	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
    "The overall status of the device: off, on, problem. StringLength=[7]."
    ::= { mpduOutputEntry 2 }

mpduOutputBreakerRating OBJECT-TYPE
    SYNTAX	INTEGER    --UNITS A
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The rating of each MPDU Output in Ampere."
    ::= { mpduOutputEntry 3 }

mpduOutputSmartDevice OBJECT-TYPE
    SYNTAX	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "A smart cord device detected: False, True. StringLength=[5]."
    ::= { mpduOutputEntry 4 }

mpduOutputPercentLoad OBJECT-TYPE
    SYNTAX INTEGER	 --UNITS 0.1 Percents
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The MPDU's each output load in percent of rated capacity. Value is 
         presented in 1/10 of the percentage i.e. 125 is 12.5%.  A value 
         of -1 will be returned if the current is unable to be measured."
    ::= { mpduOutputEntry 5 }

mpduOutputVoltage OBJECT-TYPE
    SYNTAX INTEGER    -- UNITS RMS 0.1 Volts
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured output voltage from the PDU meters in volts. Value is 
         presented in 1/10 of the Volt i.e. 2095 is 209.5 V.  A value 
         of -1 will be returned if the voltage is unable to be measured."
    ::= { mpduOutputEntry 6 }

mpduOutputCurrent OBJECT-TYPE
    SYNTAX INTEGER    -- UNITS RMS 0.01 Amp
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The measured output current from the PDU meters in amps. Value is 
         presented in 1/100 of the Ampere i.e. 175 is 1.75 A.  A value 
         of -1 will be returned if the current is unable to be measured."
    ::= { mpduOutputEntry 7 }

mpduOutputPowerVA OBJECT-TYPE
    SYNTAX  INTEGER   -- Units VA
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
    	"The total VA load (VI) measured on the PDU in VA.  A value 
         of -1 will be returned if the power is unable to be calculated."
    ::= { mpduOutputEntry 8 }

mpduOutputPowerWatt OBJECT-TYPE
    SYNTAX  INTEGER   -- Units Watts
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
    	"The total power load measured on the PDU in Watts.  A value 
         of -1 will be returned if the power is unable to be calculated."
    ::= { mpduOutputEntry 9 }

mpduOutputPowerFactor OBJECT-TYPE
    SYNTAX INTEGER    -- 0.01 UNITS
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The power factor is presented in 1/100 of the unit i.e.
         98 is 0.98.  A value of -1 will be returned if the power factor is unable 
         to be measured."
    ::= { mpduOutputEntry 10 }

mpduOutputWarningThreshold OBJECT-TYPE
    SYNTAX INTEGER    -- Percents
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Report the User-set threshhold limit for Warning in percentage"
    ::= { mpduOutputEntry 11 }

mpduOutputCriticalThreshold OBJECT-TYPE
    SYNTAX INTEGER    -- Percents
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Report the User-set threshhold limit for Critical in percentage"
    ::= { mpduOutputEntry 12 }


-- ====================================================================================
--  
--  mpdu                     OBJECT IDENTIFIER       ::= {cpqPower 5}    
--  mpduDeviceIdent          OBJECT IDENTIFIER       ::= { mpdu 3 }
--  ID of all Devices (power extension bars, servers) connected to MPDU Core's outlets
--  Smart Devices are those blades/servers/storage encl with smart power cord
--  OID= .1.3.6.1.4.1.232.165.5.3

    
mpduDeviceIdentTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MpduDeviceIdentEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "Indexed by mpduNumOutlet. So aggregate objects for each entry equal 
                 to (mpduNumMPDU multiplies mpduNumOutlet) before go to the next entry. 
                 i.e if 4 MPDU detected, display 6x4 indexes, 6x4 mpduDeviceStatus, 6x4 
                 DeviceUIDStatus...start with 1."
    ::= { mpduDeviceIdent 1 }

mpduDeviceIdentEntry OBJECT-TYPE
    SYNTAX MpduDeviceIdentEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION "The ident table entry containing the name, model, 
                 manufacturer, firmware version, part number... for
                 each smart device, null value for unknown device."

    INDEX { mpduIdentIndex, mpduDeviceIdentIndex }
    ::= { mpduDeviceIdentTable 1 }

MpduDeviceIdentEntry ::= SEQUENCE {
      mpduDeviceIdentIndex         INTEGER,
      mpduDeviceStatus             DisplayString,
      mpduDeviceUIDStatus          DisplayString,
      mpduDeviceNumOutlet          INTEGER,
      mpduDeviceUHeight            INTEGER,
      mpduDevicePowerRating        DisplayString,
      mpduDeviceManufacturer       DisplayString,
      mpduDeviceType		   DisplayString,
      mpduDeviceModel              DisplayString,
      mpduDeviceName               DisplayString,
      mpduDeviceFirmwareVersion    DisplayString,
      mpduDeviceHardwareVersion    DisplayString,
      mpduDevicePartNumber         DisplayString,
      mpduDeviceSerialNumber       DisplayString,
      mpduDeviceUUID		   DisplayString,
      mpduDeviceIP	           DisplayString,
      mpduDeviceMAC	           DisplayString,
      mpduDevicePSUSlotNo          INTEGER,
      mpduDeviceUPosition          INTEGER
     }

mpduDeviceIdentIndex OBJECT-TYPE
    SYNTAX INTEGER  (0..100)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"Index is based on the total number of Smart Extension Bars plus
         smart devices (with smart power cord i.e. blades) detected."
    ::= { mpduDeviceIdentEntry 1 }

mpduDeviceStatus OBJECT-TYPE
    SYNTAX  	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
    "The overall status of the device: off, on, problem. StringLength=[8]."
    ::= { mpduDeviceIdentEntry 2 }

mpduDeviceUIDStatus OBJECT-TYPE
    SYNTAX  	DisplayString
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
    "The overall status of the device UID: off, on, blink. StringLength=[8]."
    ::= { mpduDeviceIdentEntry 3 }

mpduDeviceNumOutlet OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The number of outlets of detected the device.  This variable 
            indicates the number of rows in the breakers table. Default is 5"
    ::= { mpduDeviceIdentEntry 4 }

mpduDeviceUHeight OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "The Unit height of ext bar or device."
    ::= { mpduDeviceIdentEntry 5 }

mpduDevicePowerRating OBJECT-TYPE
    SYNTAX DisplayString 
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device's Power Rating in VA. Null will be returned if not detected.
         StringLength=[8]."
    ::= { mpduDeviceIdentEntry 6 }

mpduDeviceManufacturer OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device Manufacturer Name (e.g. Hewlett-Packard).
	 Null will be returned if not detected. StringLength=[16]."
    ::= { mpduDeviceIdentEntry 7 }

mpduDeviceType OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device's Type: Ext Bar, server, or network device...
          StringLength=[16]."
    ::= { mpduDeviceIdentEntry 8 }

mpduDeviceModel OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device Model is Managed or Non-managed Ext Bar. 
         Null will be returned if not detected. StringLength=[24]."
    ::= { mpduDeviceIdentEntry 9 }

mpduDeviceName OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The string identify the Device. i.e. 'BAR#1' (descriptive name)
         Null will be returned if not detected. StringLength=[32]."
    ::= { mpduDeviceIdentEntry 10 }

mpduDeviceFirmwareVersion OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The firmware revision level of Sm Ext Bar. Null will be returned if 
         not detected. StringLength=[8]."
    ::= { mpduDeviceIdentEntry 11 }

mpduDeviceHardwareVersion OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The hardware version of Sm Ext Bar. Null will be returned if not 
         detected. StringLength=[8]."
    ::= { mpduDeviceIdentEntry 12 }

mpduDevicePartNumber OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device's part number. Null will be returned if not detected.
          StringLength=[21]."
    ::= { mpduDeviceIdentEntry 13 }

mpduDeviceSerialNumber OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device's serial number. Null will be returned if not detected.
          StringLength=[21]."
    ::= { mpduDeviceIdentEntry 14 }

mpduDeviceUUID OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device's UUID. Null will be returned if not detected.
          StringLength=[37]."
    ::= { mpduDeviceIdentEntry 15 }

mpduDeviceIP OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device's IP Address. Null will be returned if not detected.
          StringLength=[16]."
    ::= { mpduDeviceIdentEntry 16 }

mpduDeviceMAC OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The device mgmt processor MAC Address. Null will be returned if 
         not detected. StringLength=[18]."
    ::= { mpduDeviceIdentEntry 17 }

mpduDevicePSUSlotNo OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "Device power supply logical slot number."
    ::= { mpduDeviceIdentEntry 18 }

mpduDeviceUPosition OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "Device U start position."
    ::= { mpduDeviceIdentEntry 19 }


-- ====================================================================================
--
--  mpdu                     OBJECT IDENTIFIER       ::= {cpqPower 5}    
--  mpduSmExtBarOutlet       OBJECT IDENTIFIER       ::= { mpdu 4 }
--  Outputs measurements for each Smart Extension Bar's Outlet and
--  Identification of Smart Device connected to Smart Extension Bar.
--  OID= .1.3.6.1.4.1.232.165.5.4


mpduSmExtBarOutletTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF MpduSmExtBarOutletEntry
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
           "Indexed by mpduDeviceNumOutlet. So aggregate objects for each entry equal to 
            (mpduNumMPDU multiplies mpduNumOutlet multiplies mpduDeviceNumOutlet) before 
            go to the next entry. i.e if 4 MPDU detected, display 5x6x4 indexes, 5x6x4
            mpduSmExtBarOutletStatus, 5x6x4 mpduSmExtBarOutletUIDStatus...start with 1."
    ::= { mpduSmExtBarOutlet 1 }

mpduSmExtBarOutletEntry OBJECT-TYPE
    SYNTAX  MpduSmExtBarOutletEntry 
    ACCESS  not-accessible
    STATUS  mandatory
    DESCRIPTION
           "Entries contain status, measurements for each outlet (no PowerVA)
            Display null if it can't be measured or no device detected."
    INDEX   { mpduIdentIndex, mpduOutputIndex, mpduSmExtBarOutletIndex }
    ::= { mpduSmExtBarOutletTable 1 }

MpduSmExtBarOutletEntry ::= SEQUENCE {
	mpduSmExtBarOutletIndex       		  INTEGER,
      	mpduSmExtBarOutletStatus      		  DisplayString,
      	mpduSmExtBarOutletUIDStatus      	  DisplayString,
      	mpduSmExtBarOutletRating   		  INTEGER,
      	mpduSmExtBarOutletVoltage     		  INTEGER,
      	mpduSmExtBarOutletCurrent     		  INTEGER,
      	mpduSmExtBarOutletPowerWatt     	  INTEGER,
      	mpduSmExtBarOutletPowerFactor   	  INTEGER,
      	mpduSmExtBarOutletDeviceName      	  DisplayString,    
      	mpduSmExtBarOutletDeviceUUID      	  DisplayString,
      	mpduSmExtBarOutletDeviceProduct   	  DisplayString,
      	mpduSmExtBarOutletDeviceIP		  DisplayString,
      	mpduSmExtBarOutletAutoDiscovered  	  INTEGER,
      	mpduSmExtBarOutletDeviceMAC		  DisplayString,    
      	mpduSmExtBarOutletDeviceSN        	  DisplayString,    
      	mpduSmExtBarOutletDevicePSSlotNo  	  INTEGER,
      	mpduSmExtBarOutletDeviceUPosition	  INTEGER,
      	mpduSmExtBarOutletDeviceUHeight		  INTEGER,
      	mpduSmExtBarOutletDeviceInstalledLocation INTEGER
    }

mpduSmExtBarOutletIndex OBJECT-TYPE
    SYNTAX  INTEGER  (0..100)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Index of Smart Extension Bar."
    ::= { mpduSmExtBarOutletEntry 1 }

mpduSmExtBarOutletStatus OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The overall status of the Smart Extension Bar's outlet: off, on, problem...
             StringLength=[3]."
    ::= { mpduSmExtBarOutletEntry 2 }

mpduSmExtBarOutletUIDStatus OBJECT-TYPE
    SYNTAX  DisplayString
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The overall status of the Smart Extension Bar's UID: off, on, blink...
             StringLength=[8]."
    ::= { mpduSmExtBarOutletEntry 3 }

mpduSmExtBarOutletRating OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS A
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Sm Ext Bar Outlet's Rating in Amp.  A value of -1 will be returned 
            if the stick is unable to detect. StringLength=[8]."
    ::= { mpduSmExtBarOutletEntry 4 }

mpduSmExtBarOutletVoltage OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS 0.1 Volts
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The SM Ext Bar voltage in volts. Value is presented 1/10 of the Volt 
            i.e. 2098 means 209.8 V.  A value of -1 will be returned if the voltage is unable 
            to be measured."
    ::= { mpduSmExtBarOutletEntry 5 }

mpduSmExtBarOutletCurrent OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS 0.01 Amps
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The SM Ext Bar current draw in Amps. Value is presented in 1/100 of the Ampere
          i.e. 127 means 1.27 A.  A value of -1 will be returned if the current is unable 
           to be measured."
    ::= { mpduSmExtBarOutletEntry 6 }

mpduSmExtBarOutletPowerWatt OBJECT-TYPE
    SYNTAX  INTEGER	-- UNITS Watts
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The Sm Ext Bar's Power measured in Watts. A value of -1 will be returned if the 
            power is unable to be measured."
    ::= { mpduSmExtBarOutletEntry 7 }

mpduSmExtBarOutletPowerFactor OBJECT-TYPE
    SYNTAX  INTEGER    -- 0.01 UNITS
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "The outlet's power factor in 0.01 unit. It is presented in 1/100 of the unit. 
          i.e. 98 means 0.98.  A value of -1 will be returned if the voltage is unable 
            to be measured."
    ::= { mpduSmExtBarOutletEntry 8 }

mpduSmExtBarOutletDeviceName OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) Name that connects to this 
         Sm Ext Bar Outlet. Null will be returned if not detected. StringLength=[50]."
    ::= { mpduSmExtBarOutletEntry 9 }

mpduSmExtBarOutletDeviceUUID OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) UUID that connects to this 
         Sm Ext Bar Outlet. Null will be returned if not detected. StringLength=[37]."
    ::= { mpduSmExtBarOutletEntry 10 }

mpduSmExtBarOutletDeviceProduct OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) Model that connects to this 
         Sm Ext Bar Outlet. Null will be returned if not detected. StringLength=[40]."
    ::= { mpduSmExtBarOutletEntry 11 }

mpduSmExtBarOutletDeviceIP OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) IP of iLO that connects to this 
         Sm Ext Bar Outlet. Null will be returned if not detected. StringLength=[16]."
    ::= { mpduSmExtBarOutletEntry 12 }

mpduSmExtBarOutletAutoDiscovered OBJECT-TYPE
    SYNTAX  INTEGER    
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Boolean values of 0 or 1. 1 means this Sm Ext Bar Outlet is able to get information 
            from a blade with smart power supply (auto discovery is enabled)..."
    ::= { mpduSmExtBarOutletEntry 13 }

mpduSmExtBarOutletDeviceMAC OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) MAC address that connects to this 
         Sm Ext Bar Outlet. Null will be returned if not detected. StringLength=[18]."
    ::= { mpduSmExtBarOutletEntry 14 }

mpduSmExtBarOutletDeviceSN OBJECT-TYPE
    SYNTAX DisplayString  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) Serial Number that connects to this 
         Sm Ext Bar Outlet. Null will be returned if not detected. StringLength=[21]."
    ::= { mpduSmExtBarOutletEntry 15 }

mpduSmExtBarOutletDevicePSSlotNo OBJECT-TYPE
    SYNTAX INTEGER  
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
	"The Device (Blade/Server/Storage) Power Supply' Slot Number that connects to this 
         Sm Ext Bar Outlet. A value of -1 will be returned if not detected."
    ::= { mpduSmExtBarOutletEntry 16 }


mpduSmExtBarOutletDeviceUPosition OBJECT-TYPE
    SYNTAX  INTEGER   
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Device U start position. A value of -1 will be returned if not detected."
    ::= { mpduSmExtBarOutletEntry 17 }

mpduSmExtBarOutletDeviceUHeight OBJECT-TYPE
    SYNTAX  INTEGER  
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
           "Device U height. Enter -1 if not detected"
    ::= { mpduSmExtBarOutletEntry 18 }

mpduSmExtBarOutletDeviceInstalledLocation OBJECT-TYPE
    SYNTAX	INTEGER
    ACCESS	read-only
    STATUS	mandatory
    DESCRIPTION
           "0=Left 0U side area or rack frame, 1= Right 0U side area or rack frame, 2= front RETMA rail, 
            3=back RETMA rail) - spatial location. A value of -1 will be returned if not detected."
    ::= { mpduSmExtBarOutletEntry 19 }


END
