--MibName=cpqPower
-- ****************************************************************************
--
--            Power Device SNMP Management Card 
--         Management Information Base for SNMP Network Management
--
--
--      Copyright 2001,2005 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.0
--
--    *********************************************************************
--
-- 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 
--
--  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
--
-- 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."

--         ::= { 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
--             Environmental Monitor      = 18  (eg CMC)"
--
--         ::= { cpqHoSystemStatus 1 }
-- ====================================================================================

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 }


--
-- trapInfo                OBJECT IDENTIFIER       ::= {powerDevice 1}
-- trap information group
--
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 device, including model, 
		 serial number, part number, etc...."
	::= { trapInfo 4 }

trapDeviceName OBJECT-TYPE
	SYNTAX DisplayString (SIZE (0..255))
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION
		"A string contains the name of the device."
	::= { 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


--
-- managementModuleIdent   OBJECT IDENTIFIER       ::= {powerDevice 2}
-- Management module identification group
--
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 }


--  
--  pduIdent                OBJECT IDENTIFIER       ::= { pdu 1 }
--  PDU identification group
--
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
    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 }


--  
--  pduInput                OBJECT IDENTIFIER       ::= { pdu 2 }
--  PDU input group
--
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
    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}

--
--  pduOutput               OBJECT IDENTIFIER       ::= { pdu 3 }
--  PDU Output group:
--
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
    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 
    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 }


--
--  upsIdent                OBJECT IDENTIFIER       ::= { ups 1 }
--  UPS Identification group
--
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 }


--
--  upsBattery              OBJECT IDENTIFIER       ::= { ups 2 }
--  UPS Battery group
--
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 }

--
--  upsInput                OBJECT IDENTIFIER       ::= { ups 3 }
--  UPS Input group
--
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."
    ::= { 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 }


--
--  upsOutput               OBJECT IDENTIFIER       ::= { ups 4 }
--  UPS Output group
--
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 }


--
--  upsBypass               OBJECT IDENTIFIER       ::= { ups 5 }
--  UPS Bypass group
--
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 }


--
--  upsEnvironment          OBJECT IDENTIFIER       ::= { ups 6 }
--  UPS Environment group
--
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 }


--
--  upsTest                 OBJECT IDENTIFIER       ::= { ups 7 }
--  UPS Test group
--
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 }


--
--  upsControl              OBJECT IDENTIFIER       ::= { ups 8 }
--  UPS Control group
--
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 }


--
--  upsConfig               OBJECT IDENTIFIER       ::= { ups 9 }
--  UPS Config group
--
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 }


--
--  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")
--
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 }


--
--  upsTopology             OBJECT IDENTIFIER       ::= { ups 11 }
--  UPS Topology group
--
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 }

END
