-- extracted from rfc1628.txt
-- at Mon Nov 15 17:11:52 1999

UPS-MIB DEFINITIONS ::= BEGIN

IMPORTS
	DisplayString,
	TimeStamp,
	TimeInterval,
	TestAndIncr,
	AutonomousType,
	TEXTUAL-CONVENTION
		FROM SNMPv2-TC
	MODULE-IDENTITY,
	OBJECT-IDENTITY,
	OBJECT-TYPE,
	NOTIFICATION-TYPE,
	Counter32,
	Gauge32,
	Integer32
		FROM SNMPv2-SMI
	OBJECT-GROUP,
	NOTIFICATION-GROUP,
	MODULE-COMPLIANCE
		FROM SNMPv2-CONF;

upsMIB MODULE-IDENTITY
	LAST-UPDATED "9402230000Z"	-- Feb 23, 1994 12:00:00 AM
	ORGANIZATION "IETF UPS MIB Working Group"
	CONTACT-INFO
		"Jeffrey D. Case

		Postal: SNMP Research, Incorporated
		        3001 Kimberlin Heights Road
		        Knoxville, TN  37920
		        US

		   Tel: +1 615 573 1434
		   Fax: +1 615 573 9197

		E-mail: case@snmp.com"
	DESCRIPTION
		"The MIB module to describe Uninterruptible Power
		Supplies."
	-- 1.3.6.1.2.1.33
::= { 1  3  6  1  2  1  33 }


NonNegativeInteger ::= TEXTUAL-CONVENTION
	DISPLAY-HINT "d"
	STATUS  current
	DESCRIPTION
		"This data type is a non-negative value."
	SYNTAX INTEGER (0..2147483647)


PositiveInteger ::= TEXTUAL-CONVENTION
	DISPLAY-HINT "d"
	STATUS  current
	DESCRIPTION
		"This data type is a non-zero and non-negative value."
	SYNTAX INTEGER (1..2147483647)


upsObjects OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1
::= { upsMIB 1 }

--
-- The Device Identification group.
--      All objects in this group except for upsIdentName and
--      upsIdentAttachedDevices are set at device initialization
--      and remain static.
--

upsIdent OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.1
::= { upsObjects 1 }

upsIdentManufacturer OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..31))
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The name of the UPS manufacturer."
	-- 1.3.6.1.2.1.33.1.1.1
::= { upsIdent 1 }


upsIdentModel OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..63))
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The UPS Model designation."
	-- 1.3.6.1.2.1.33.1.1.2
::= { upsIdent 2 }


upsIdentUPSSoftwareVersion OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..63))
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The UPS firmware/software version(s).  This variable
		may or may not have the same value as
		upsIdentAgentSoftwareVersion in some implementations."
	-- 1.3.6.1.2.1.33.1.1.3
::= { upsIdent 3 }


upsIdentAgentSoftwareVersion OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..63))
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The UPS agent software version.  This variable may or
		may not have the same value as
		upsIdentUPSSoftwareVersion in some implementations."
	-- 1.3.6.1.2.1.33.1.1.4
::= { upsIdent 4 }


upsIdentName OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..63))
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"A string identifying the UPS.  This object should be
		set by the administrator."
	-- 1.3.6.1.2.1.33.1.1.5
::= { upsIdent 5 }


upsIdentAttachedDevices OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..63))
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"A string identifying the devices attached to the
		output(s) of the UPS.  This object should be set by
		the administrator."
	-- 1.3.6.1.2.1.33.1.1.6
::= { upsIdent 6 }


--
-- Battery Group
--

upsBattery OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.2
::= { upsObjects 2 }

upsBatteryStatus OBJECT-TYPE
	SYNTAX  INTEGER {
			unknown(1),
			batteryNormal(2),
			batteryLow(3),
			batteryDepleted(4) }
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The indication of the capacity remaining in the UPS
		system's batteries.   A value of batteryNormal
		indicates that the remaining run-time is greater than
		upsConfigLowBattTime.  A value of batteryLow indicates
		that the remaining battery run-time is less than or
		equal to upsConfigLowBattTime.  A value of
		batteryDepleted indicates that the UPS will be unable
		to sustain the present load when and if the utility
		power is lost (including the possibility that the
		utility power is currently absent and the UPS is
		unable to sustain the output)."
	-- 1.3.6.1.2.1.33.1.2.1
::= { upsBattery 1 }


upsSecondsOnBattery OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"seconds"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"If the unit is on battery power, the elapsed time
		since the UPS last switched to battery power, or the
		time since the network management subsystem was last
		restarted, whichever is less.  Zero shall be returned
		if the unit is not on battery power."
	-- 1.3.6.1.2.1.33.1.2.2
::= { upsBattery 2 }


upsEstimatedMinutesRemaining OBJECT-TYPE
	SYNTAX  PositiveInteger
	UNITS	"minutes"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"An estimate of the time to battery charge depletion
		under the present load conditions if the utility power
		is off and remains off, or if it were to be lost and
		remain off."
	-- 1.3.6.1.2.1.33.1.2.3
::= { upsBattery 3 }


upsEstimatedChargeRemaining OBJECT-TYPE
	SYNTAX  INTEGER (0..100)
	UNITS	"percent"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"An estimate of the battery charge remaining expressed
		as a percent of full charge."
	-- 1.3.6.1.2.1.33.1.2.4
::= { upsBattery 4 }


upsBatteryVoltage OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 Volt DC"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The magnitude of the present battery voltage."
	-- 1.3.6.1.2.1.33.1.2.5
::= { upsBattery 5 }


upsBatteryCurrent OBJECT-TYPE
	SYNTAX  Integer32
	UNITS	"0.1 Amp DC"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present battery current."
	-- 1.3.6.1.2.1.33.1.2.6
::= { upsBattery 6 }


upsBatteryTemperature OBJECT-TYPE
	SYNTAX  Integer32
	UNITS	"degrees Centigrade"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The ambient temperature at or near the UPS Battery
		casing."
	-- 1.3.6.1.2.1.33.1.2.7
::= { upsBattery 7 }


--
-- Input Group
--

upsInput OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.3
::= { upsObjects 3 }

upsInputLineBads OBJECT-TYPE
	SYNTAX  Counter32
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"A count of the number of times the input entered an
		out-of-tolerance condition as defined by the
		manufacturer.  This count is incremented by one each
		time the input transitions from zero out-of-tolerance
		lines to one or more input lines out-of-tolerance."
	-- 1.3.6.1.2.1.33.1.3.1
::= { upsInput 1 }


upsInputNumLines OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The number of input lines utilized in this device.
		This variable indicates the number of rows in the
		input table."
	-- 1.3.6.1.2.1.33.1.3.2
::= { upsInput 2 }


upsInputTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF UpsInputEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A list of input table entries.  The number of entries
		is given by the value of upsInputNumLines."
	-- 1.3.6.1.2.1.33.1.3.3
::= { upsInput 3 }


upsInputEntry OBJECT-TYPE
	SYNTAX  UpsInputEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"An entry containing information applicable to a
		particular input line."
	INDEX {
		upsInputLineIndex }
	-- 1.3.6.1.2.1.33.1.3.3.1
::= { upsInputTable 1 }


UpsInputEntry ::= SEQUENCE {

	upsInputLineIndex PositiveInteger,
	upsInputFrequency NonNegativeInteger,
	upsInputVoltage   NonNegativeInteger,
	upsInputCurrent   NonNegativeInteger,
	upsInputTruePower NonNegativeInteger }


upsInputLineIndex OBJECT-TYPE
	SYNTAX  PositiveInteger
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"The input line identifier."
	-- 1.3.6.1.2.1.33.1.3.3.1.1
::= { upsInputEntry 1 }


upsInputFrequency OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 Hertz"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present input frequency."
	-- 1.3.6.1.2.1.33.1.3.3.1.2
::= { upsInputEntry 2 }


upsInputVoltage OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The magnitude of the present input voltage."
	-- 1.3.6.1.2.1.33.1.3.3.1.3
::= { upsInputEntry 3 }


upsInputCurrent OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 RMS Amp"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The magnitude of the present input current."
	-- 1.3.6.1.2.1.33.1.3.3.1.4
::= { upsInputEntry 4 }


upsInputTruePower OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"Watts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The magnitude of the present input true power."
	-- 1.3.6.1.2.1.33.1.3.3.1.5
::= { upsInputEntry 5 }


--
-- The Output group.
--

upsOutput OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.4
::= { upsObjects 4 }

upsOutputSource OBJECT-TYPE
	SYNTAX  INTEGER {
			other(1),
			none(2),
			normal(3),
			bypass(4),
			battery(5),
			booster(6),
			reducer(7) }
	MAX-ACCESS read-only
	STATUS  current
	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."
	-- 1.3.6.1.2.1.33.1.4.1
::= { upsOutput 1 }


upsOutputFrequency OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 Hertz"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present output frequency."
	-- 1.3.6.1.2.1.33.1.4.2
::= { upsOutput 2 }


upsOutputNumLines OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The number of output lines utilized in this device.
		This variable indicates the number of rows in the
		output table."
	-- 1.3.6.1.2.1.33.1.4.3
::= { upsOutput 3 }


upsOutputTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF UpsOutputEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A list of output table entries.  The number of
		entries is given by the value of upsOutputNumLines."
	-- 1.3.6.1.2.1.33.1.4.4
::= { upsOutput 4 }


upsOutputEntry OBJECT-TYPE
	SYNTAX  UpsOutputEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"An entry containing information applicable to a
		particular output line."
	INDEX {
		upsOutputLineIndex }
	-- 1.3.6.1.2.1.33.1.4.4.1
::= { upsOutputTable 1 }


UpsOutputEntry ::= SEQUENCE {

	upsOutputLineIndex   PositiveInteger,
	upsOutputVoltage     NonNegativeInteger,
	upsOutputCurrent     NonNegativeInteger,
	upsOutputPower       NonNegativeInteger,
	upsOutputPercentLoad INTEGER }


upsOutputLineIndex OBJECT-TYPE
	SYNTAX  PositiveInteger
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"The output line identifier."
	-- 1.3.6.1.2.1.33.1.4.4.1.1
::= { upsOutputEntry 1 }


upsOutputVoltage OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present output voltage."
	-- 1.3.6.1.2.1.33.1.4.4.1.2
::= { upsOutputEntry 2 }


upsOutputCurrent OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 RMS Amp"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present output current."
	-- 1.3.6.1.2.1.33.1.4.4.1.3
::= { upsOutputEntry 3 }


upsOutputPower OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"Watts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present output true power."
	-- 1.3.6.1.2.1.33.1.4.4.1.4
::= { upsOutputEntry 4 }


upsOutputPercentLoad OBJECT-TYPE
	SYNTAX  INTEGER (0..200)
	UNITS	"percent"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The percentage of the UPS power capacity presently
		being used on this output line, i.e., the greater of
		the percent load of true power capacity and the
		percent load of VA."
	-- 1.3.6.1.2.1.33.1.4.4.1.5
::= { upsOutputEntry 5 }


--
-- The Bypass group.
--

upsBypass OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.5
::= { upsObjects 5 }

upsBypassFrequency OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 Hertz"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present bypass frequency."
	-- 1.3.6.1.2.1.33.1.5.1
::= { upsBypass 1 }


upsBypassNumLines OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The number of bypass lines utilized in this device.
		This entry indicates the number of rows in the bypass
		table."
	-- 1.3.6.1.2.1.33.1.5.2
::= { upsBypass 2 }


upsBypassTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF UpsBypassEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A list of bypass table entries.  The number of
		entries is given by the value of upsBypassNumLines."
	-- 1.3.6.1.2.1.33.1.5.3
::= { upsBypass 3 }


upsBypassEntry OBJECT-TYPE
	SYNTAX  UpsBypassEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"An entry containing information applicable to a
		particular bypass input."
	INDEX {
		upsBypassLineIndex }
	-- 1.3.6.1.2.1.33.1.5.3.1
::= { upsBypassTable 1 }


UpsBypassEntry ::= SEQUENCE {

	upsBypassLineIndex PositiveInteger,
	upsBypassVoltage   NonNegativeInteger,
	upsBypassCurrent   NonNegativeInteger,
	upsBypassPower     NonNegativeInteger }


upsBypassLineIndex OBJECT-TYPE
	SYNTAX  PositiveInteger
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"The bypass line identifier."
	-- 1.3.6.1.2.1.33.1.5.3.1.1
::= { upsBypassEntry 1 }


upsBypassVoltage OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present bypass voltage."
	-- 1.3.6.1.2.1.33.1.5.3.1.2
::= { upsBypassEntry 2 }


upsBypassCurrent OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 RMS Amp"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present bypass current."
	-- 1.3.6.1.2.1.33.1.5.3.1.3
::= { upsBypassEntry 3 }


upsBypassPower OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"Watts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present true power conveyed by the bypass."
	-- 1.3.6.1.2.1.33.1.5.3.1.4
::= { upsBypassEntry 4 }


--
-- The Alarm group.
--

upsAlarm OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.6
::= { upsObjects 6 }

upsAlarmsPresent OBJECT-TYPE
	SYNTAX  Gauge32
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The present number of active alarm conditions."
	-- 1.3.6.1.2.1.33.1.6.1
::= { upsAlarm 1 }


upsAlarmTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF UpsAlarmEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A list of alarm table entries.  The table contains
		zero, one, or many rows at any moment, depending upon
		the number of alarm conditions in effect.  The table
		is initially empty at agent startup.  The agent
		creates a row in the table each time a condition is
		detected and deletes that row when that condition no
		longer pertains.  The agent creates the first row with
		upsAlarmId equal to 1, and increments the value of
		upsAlarmId each time a new row is created, wrapping to
		the first free value greater than or equal to 1 when
		the maximum value of upsAlarmId would otherwise be
		exceeded.  Consequently, after multiple operations,
		the table may become sparse, e.g., containing entries
		for rows 95, 100, 101, and 203 and the entries should
		not be assumed to be in chronological order because
		upsAlarmId might have wrapped.

		Alarms are named by an AutonomousType (OBJECT
		IDENTIFIER), upsAlarmDescr, to allow a single table to
		reflect well known alarms plus alarms defined by a
		particular implementation, i.e., as documented in the
		private enterprise MIB definition for the device.  No
		two rows will have the same value of upsAlarmDescr,
		since alarms define conditions.  In order to meet this
		requirement, care should be taken in the definition of
		alarm conditions to insure that a system cannot enter
		the same condition multiple times simultaneously.

		The number of rows in the table at any given time is
		reflected by the value of upsAlarmsPresent."
	-- 1.3.6.1.2.1.33.1.6.2
::= { upsAlarm 2 }


upsAlarmEntry OBJECT-TYPE
	SYNTAX  UpsAlarmEntry
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"An entry containing information applicable to a
		particular alarm."
	INDEX {
		upsAlarmId }
	-- 1.3.6.1.2.1.33.1.6.2.1
::= { upsAlarmTable 1 }


UpsAlarmEntry ::= SEQUENCE {

	upsAlarmId    PositiveInteger,
	upsAlarmDescr AutonomousType,
	upsAlarmTime  TimeStamp }


upsAlarmId OBJECT-TYPE
	SYNTAX  PositiveInteger
	MAX-ACCESS not-accessible
	STATUS  current
	DESCRIPTION
		"A unique identifier for an alarm condition.  This
		value must remain constant."
	-- 1.3.6.1.2.1.33.1.6.2.1.1
::= { upsAlarmEntry 1 }


upsAlarmDescr OBJECT-TYPE
	SYNTAX  AutonomousType
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"A reference to an alarm description object.  The
		object referenced should not be accessible, but rather
		be used to provide a unique description of the alarm
		condition."
	-- 1.3.6.1.2.1.33.1.6.2.1.2
::= { upsAlarmEntry 2 }


upsAlarmTime OBJECT-TYPE
	SYNTAX  TimeStamp
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The value of sysUpTime when the alarm condition was
		detected.  If the alarm condition was detected at the
		time of agent startup and presumably existed before
		agent startup, the value of upsAlarmTime shall equal
		0."
	-- 1.3.6.1.2.1.33.1.6.2.1.3
::= { upsAlarmEntry 3 }


--
-- Well known alarm conditions.
--

upsWellKnownAlarms OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.6.3
::= { upsAlarm 3 }

upsAlarmBatteryBad OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"One or more batteries have been determined to require
		replacement."
	-- 1.3.6.1.2.1.33.1.6.3.1
::= { upsWellKnownAlarms 1 }

upsAlarmOnBattery OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The UPS is drawing power from the batteries."
	-- 1.3.6.1.2.1.33.1.6.3.2
::= { upsWellKnownAlarms 2 }

upsAlarmLowBattery OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The remaining battery run-time is less than or equal
		to upsConfigLowBattTime."
	-- 1.3.6.1.2.1.33.1.6.3.3
::= { upsWellKnownAlarms 3 }

upsAlarmDepletedBattery OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The UPS will be unable to sustain the present load
		when and if the utility power is lost."
	-- 1.3.6.1.2.1.33.1.6.3.4
::= { upsWellKnownAlarms 4 }

upsAlarmTempBad OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"A temperature is out of tolerance."
	-- 1.3.6.1.2.1.33.1.6.3.5
::= { upsWellKnownAlarms 5 }

upsAlarmInputBad OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"An input condition is out of tolerance."
	-- 1.3.6.1.2.1.33.1.6.3.6
::= { upsWellKnownAlarms 6 }

upsAlarmOutputBad OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"An output condition (other than OutputOverload) is
		out of tolerance."
	-- 1.3.6.1.2.1.33.1.6.3.7
::= { upsWellKnownAlarms 7 }

upsAlarmOutputOverload OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The output load exceeds the UPS output capacity."
	-- 1.3.6.1.2.1.33.1.6.3.8
::= { upsWellKnownAlarms 8 }

upsAlarmOnBypass OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The Bypass is presently engaged on the UPS."
	-- 1.3.6.1.2.1.33.1.6.3.9
::= { upsWellKnownAlarms 9 }

upsAlarmBypassBad OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The Bypass is out of tolerance."
	-- 1.3.6.1.2.1.33.1.6.3.10
::= { upsWellKnownAlarms 10 }

upsAlarmOutputOffAsRequested OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The UPS has shutdown as requested, i.e., the output
		is off."
	-- 1.3.6.1.2.1.33.1.6.3.11
::= { upsWellKnownAlarms 11 }

upsAlarmUpsOffAsRequested OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The entire UPS has shutdown as commanded."
	-- 1.3.6.1.2.1.33.1.6.3.12
::= { upsWellKnownAlarms 12 }

upsAlarmChargerFailed OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"An uncorrected problem has been detected within the
		UPS charger subsystem."
	-- 1.3.6.1.2.1.33.1.6.3.13
::= { upsWellKnownAlarms 13 }

upsAlarmUpsOutputOff OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The output of the UPS is in the off state."
	-- 1.3.6.1.2.1.33.1.6.3.14
::= { upsWellKnownAlarms 14 }

upsAlarmUpsSystemOff OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The UPS system is in the off state."
	-- 1.3.6.1.2.1.33.1.6.3.15
::= { upsWellKnownAlarms 15 }

upsAlarmFanFailure OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The failure of one or more fans in the UPS has been
		detected."
	-- 1.3.6.1.2.1.33.1.6.3.16
::= { upsWellKnownAlarms 16 }

upsAlarmFuseFailure OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The failure of one or more fuses has been detected."
	-- 1.3.6.1.2.1.33.1.6.3.17
::= { upsWellKnownAlarms 17 }

upsAlarmGeneralFault OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"A general fault in the UPS has been detected."
	-- 1.3.6.1.2.1.33.1.6.3.18
::= { upsWellKnownAlarms 18 }

upsAlarmDiagnosticTestFailed OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The result of the last diagnostic test indicates a
		failure."
	-- 1.3.6.1.2.1.33.1.6.3.19
::= { upsWellKnownAlarms 19 }

upsAlarmCommunicationsLost OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"A problem has been encountered in the communications
		between the agent and the UPS."
	-- 1.3.6.1.2.1.33.1.6.3.20
::= { upsWellKnownAlarms 20 }

upsAlarmAwaitingPower OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The UPS output is off and the UPS is awaiting the
		return of input power."
	-- 1.3.6.1.2.1.33.1.6.3.21
::= { upsWellKnownAlarms 21 }

upsAlarmShutdownPending OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"A upsShutdownAfterDelay countdown is underway."
	-- 1.3.6.1.2.1.33.1.6.3.22
::= { upsWellKnownAlarms 22 }

upsAlarmShutdownImminent OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The UPS will turn off power to the load in less than
		5 seconds; this may be either a timed shutdown or a
		low battery shutdown."
	-- 1.3.6.1.2.1.33.1.6.3.23
::= { upsWellKnownAlarms 23 }

upsAlarmTestInProgress OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"A test is in progress, as initiated and indicated by
		the Test Group.  Tests initiated via other
		implementation-specific mechanisms can indicate the
		presence of the testing in the alarm table, if
		desired, via a OBJECT-IDENTITY macro in the MIB
		document specific to that implementation and are
		outside the scope of this OBJECT-IDENTITY."
	-- 1.3.6.1.2.1.33.1.6.3.24
::= { upsWellKnownAlarms 24 }

--
-- The Test Group
--

upsTest OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.7
::= { upsObjects 7 }

upsTestId OBJECT-TYPE
	SYNTAX  OBJECT IDENTIFIER
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The test is named by an OBJECT IDENTIFIER which
		allows a standard mechanism for the initiation of
		tests, including the well known tests identified in
		this document as well as those introduced by a
		particular implementation, i.e., as documented in the
		private enterprise MIB definition for the device.

		Setting this variable initiates the named test. Sets
		to this variable require the presence of
		upsTestSpinLock in the same SNMP message.

		The set request will be rejected with an appropriate
		error message if the requested test cannot be
		performed, including attempts to start a test when
		another test is already in progress.  The status of
		the current or last test is maintained in
		upsTestResultsSummary. Tests in progress may be
		aborted by setting the upsTestId variable to
		upsTestAbortTestInProgress.

		Read operations return the value of the name of the
		test in progress if a test is in progress or the name
		of the last test performed if no test is in progress,
		unless no test has been run, in which case the well
		known value upsTestNoTestsInitiated is returned."
	-- 1.3.6.1.2.1.33.1.7.1
::= { upsTest 1 }


-- see [6] for more information on the semantics of objects with
-- syntax of TestAndIncr

upsTestSpinLock OBJECT-TYPE
	SYNTAX  TestAndIncr
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"A spin lock on the test subsystem.  The spinlock is
		used as follows.

		Before starting a test, a manager-station should make
		sure that a test is not in progress as follows:

		    try_again:
		      get (upsTestSpinLock)
		      while (upsTestResultsSummary == inProgress) {
		        /* loop while a test is running for another
		manager */
		        short delay
		        get (upsTestSpinLock)
		      }
		      lock_value = upsTestSpinLock
		      /* no test in progress, start the test */
		      set (upsTestSpinLock = lock_value, upsTestId =
		requested_test)
		      if (error_index == 1) { /* (upsTestSpinLock
		failed) */
		        /* if problem is not access control, then
		            some other manager slipped in ahead of us
		*/
		        goto try_again
		      }
		      if (error_index == 2) { /* (upsTestId) */
		        /* cannot perform the test */
		        give up
		      }
		      /* test started ok */
		      /* wait for test completion by polling

		upsTestResultsSummary */
		      get (upsTestSpinLock, upsTestResultsSummary,
		upsTestResultsDetail)
		      while (upsTestResultsSummary == inProgress) {
		        short delay
		        get (upsTestSpinLock, upsTestResultsSummary,
		upsTestResultsDetail)
		      }
		      /* when test completes, retrieve any additional
		test results */
		      /* if upsTestSpinLock == lock_value + 1, then
		these are our test */
		      /* results (as opposed to another manager's */
		      The initial value of upsTestSpinLock at agent
		initialization shall
		      be 1."
	-- 1.3.6.1.2.1.33.1.7.2
::= { upsTest 2 }


upsTestResultsSummary OBJECT-TYPE
	SYNTAX  INTEGER {
			donePass(1),
			doneWarning(2),
			doneError(3),
			aborted(4),
			inProgress(5),
			noTestsInitiated(6) }
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The results of the current or last UPS diagnostics
		test performed.  The values for donePass(1),
		doneWarning(2), and doneError(3) indicate that the
		test completed either successfully, with a warning, or
		with an error, respectively.  The value aborted(4) is
		returned for tests which are aborted by setting the
		value of upsTestId to upsTestAbortTestInProgress.
		Tests which have not yet concluded are indicated by
		inProgress(5).  The value noTestsInitiated(6)
		indicates that no previous test results are available,
		such as is the case when no tests have been run since
		the last reinitialization of the network management
		subsystem and the system has no provision for non-
		volatile storage of test results."
	-- 1.3.6.1.2.1.33.1.7.3
::= { upsTest 3 }


upsTestResultsDetail OBJECT-TYPE
	SYNTAX  DisplayString (SIZE (0..255))
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"Additional information about upsTestResultsSummary.
		If no additional information available, a zero length
		string is returned."
	-- 1.3.6.1.2.1.33.1.7.4
::= { upsTest 4 }


upsTestStartTime OBJECT-TYPE
	SYNTAX  TimeStamp
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The value of sysUpTime at the time the test in
		progress was initiated, or, if no test is in progress,
		the time the previous test was initiated.  If the
		value of upsTestResultsSummary is noTestsInitiated(6),
		upsTestStartTime has the value 0."
	-- 1.3.6.1.2.1.33.1.7.5
::= { upsTest 5 }


upsTestElapsedTime OBJECT-TYPE
	SYNTAX  TimeInterval
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The amount of time, in TimeTicks, since the test in
		progress was initiated, or, if no test is in progress,
		the previous test took to complete.  If the value of
		upsTestResultsSummary is noTestsInitiated(6),
		upsTestElapsedTime has the value 0."
	-- 1.3.6.1.2.1.33.1.7.6
::= { upsTest 6 }


--
-- Well known tests.
--

upsWellKnownTests OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.7.7
::= { upsTest 7 }

upsTestNoTestsInitiated OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"No tests have been initiated and no test is in
		progress."
	-- 1.3.6.1.2.1.33.1.7.7.1
::= { upsWellKnownTests 1 }

upsTestAbortTestInProgress OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The test in progress is to be aborted / the test in
		progress was aborted."
	-- 1.3.6.1.2.1.33.1.7.7.2
::= { upsWellKnownTests 2 }

upsTestGeneralSystemsTest OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The manufacturer's standard test of UPS device
		systems."
	-- 1.3.6.1.2.1.33.1.7.7.3
::= { upsWellKnownTests 3 }

upsTestQuickBatteryTest OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"A test that is sufficient to determine if the battery
		needs replacement."
	-- 1.3.6.1.2.1.33.1.7.7.4
::= { upsWellKnownTests 4 }

upsTestDeepBatteryCalibration OBJECT-IDENTITY
	STATUS  current
	DESCRIPTION
		"The system is placed on battery to a discharge level,
		set by the manufacturer, sufficient to determine
		battery replacement and battery run-time with a high
		degree of confidence.  WARNING:  this test will leave
		the battery in a low charge state and will require
		time for recharging to a level sufficient to provide
		normal battery duration for the protected load."
	-- 1.3.6.1.2.1.33.1.7.7.5
::= { upsWellKnownTests 5 }

--
-- The Control group.
--

upsControl OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.8
::= { upsObjects 8 }

upsShutdownType OBJECT-TYPE
	SYNTAX  INTEGER {
			output(1),
			system(2) }
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"This object determines the nature of the action to be
		taken at the time when the countdown of the
		upsShutdownAfterDelay and upsRebootWithDuration
		objects reaches zero.

		Setting this object to output(1) indicates that
		shutdown requests should cause only the output of the
		UPS to turn off.  Setting this object to system(2)
		indicates that shutdown requests will cause the entire
		UPS system to turn off."
	-- 1.3.6.1.2.1.33.1.8.1
::= { upsControl 1 }


upsShutdownAfterDelay OBJECT-TYPE
	SYNTAX  INTEGER (-1..2147483648)
	UNITS	"seconds"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"Setting this object will shutdown (i.e., turn off)
		either the UPS output or the UPS system (as determined
		by the value of upsShutdownType at the time of
		shutdown) after the indicated number of seconds, or
		less if the UPS batteries become depleted. Setting
		this object to 0 will cause the shutdown to occur
		immediately.  Setting this object to -1 will abort the
		countdown.  If the system is already in the desired
		state at the time the countdown reaches 0, then
		nothing will happen.  That is, there is no additional
		action at that time if upsShutdownType = system and
		the system is already off.  Similarly, there is no
		additional action at that time if upsShutdownType =
		output and the output is already off.  When read,
		upsShutdownAfterDelay will return the number of
		seconds remaining until shutdown, or -1 if no shutdown
		countdown is in effect.  On some systems, if the agent
		is restarted while a shutdown countdown is in effect,
		the countdown may be aborted.  Sets to this object
		override any upsShutdownAfterDelay already in effect."
	-- 1.3.6.1.2.1.33.1.8.2
::= { upsControl 2 }


upsStartupAfterDelay OBJECT-TYPE
	SYNTAX  INTEGER (-1..2147483648)
	UNITS	"seconds"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"Setting this object will start the output after the
		indicated number of seconds, including starting the
		UPS, if necessary.  Setting this object to 0 will
		cause the startup to occur immediately.  Setting this
		object to -1 will abort the countdown.  If the output
		is already on at the time the countdown reaches 0,
		then nothing will happen.  Sets to this object
		override the effect of any upsStartupAfterDelay
		countdown or upsRebootWithDuration countdown in
		progress.  When read, upsStartupAfterDelay will return
		the number of seconds until startup, or -1 if no
		startup countdown is in effect.  If the countdown
		expires during a utility failure, the startup shall
		not occur until the utility power is restored.  On
		some systems, if the agent is restarted while a
		startup countdown is in effect, the countdown is
		aborted."
	-- 1.3.6.1.2.1.33.1.8.3
::= { upsControl 3 }


upsRebootWithDuration OBJECT-TYPE
	SYNTAX  INTEGER (-1..300)
	UNITS	"seconds"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"Setting this object will immediately shutdown (i.e.,
		turn off) either the UPS output or the UPS system (as
		determined by the value of upsShutdownType at the time
		of shutdown) for a period equal to the indicated
		number of seconds, after which time the output will be
		started, including starting the UPS, if necessary.  If
		the number of seconds required to perform the request
		is greater than the requested duration, then the
		requested shutdown and startup cycle shall be
		performed in the minimum time possible, but in no case
		shall this require more than the requested duration
		plus 60 seconds.  When read, upsRebootWithDuration
		shall return the number of seconds remaining in the
		countdown, or -1 if no countdown is in progress.  If
		the startup should occur during a utility failure, the
		startup shall not occur until the utility power is
		restored."
	-- 1.3.6.1.2.1.33.1.8.4
::= { upsControl 4 }


upsAutoRestart OBJECT-TYPE
	SYNTAX  INTEGER {
			on(1),
			off(2) }
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"Setting this object to 'on' will cause the UPS system
		to restart after a shutdown if the shutdown occurred
		during a power loss as a result of either a
		upsShutdownAfterDelay or an internal battery depleted
		condition.  Setting this object to 'off' will prevent
		the UPS system from restarting after a shutdown until
		an operator manually or remotely explicitly restarts
		it.  If the UPS is in a startup or reboot countdown,
		then the UPS will not restart until that delay has
		been satisfied."
	-- 1.3.6.1.2.1.33.1.8.5
::= { upsControl 5 }


--
-- The Configuration group.
--

upsConfig OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.1.9
::= { upsObjects 9 }

upsConfigInputVoltage OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The magnitude of the nominal input voltage.  On those
		systems which support read-write access to this
		object, if there is an attempt to set this variable to
		a value that is not supported, the request must be
		rejected and the agent shall respond with an
		appropriate error message, i.e., badValue for SNMPv1,
		or inconsistentValue for SNMPv2."
	-- 1.3.6.1.2.1.33.1.9.1
::= { upsConfig 1 }


upsConfigInputFreq OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 Hertz"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The nominal input frequency.  On those systems which
		support read-write access to this object, if there is
		an attempt to set this variable to a value that is not
		supported, the request must be rejected and the agent
		shall respond with an appropriate error message, i.e.,
		badValue for SNMPv1, or inconsistentValue for SNMPv2."
	-- 1.3.6.1.2.1.33.1.9.2
::= { upsConfig 2 }


upsConfigOutputVoltage OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The magnitude of the nominal output voltage.  On
		those systems which support read-write access to this
		object, if there is an attempt to set this variable to
		a value that is not supported, the request must be
		rejected and the agent shall respond with an
		appropriate error message, i.e., badValue for SNMPv1,
		or inconsistentValue for SNMPv2."
	-- 1.3.6.1.2.1.33.1.9.3
::= { upsConfig 3 }


upsConfigOutputFreq OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"0.1 Hertz"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The nominal output frequency.  On those systems which
		support read-write access to this object, if there is
		an attempt to set this variable to a value that is not
		supported, the request must be rejected and the agent
		shall respond with an appropriate error message, i.e.,
		badValue for SNMPv1, or inconsistentValue for SNMPv2."
	-- 1.3.6.1.2.1.33.1.9.4
::= { upsConfig 4 }


upsConfigOutputVA OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"Volt-Amps"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The magnitude of the nominal Volt-Amp rating."
	-- 1.3.6.1.2.1.33.1.9.5
::= { upsConfig 5 }


upsConfigOutputPower OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"Watts"
	MAX-ACCESS read-only
	STATUS  current
	DESCRIPTION
		"The magnitude of the nominal true power rating."
	-- 1.3.6.1.2.1.33.1.9.6
::= { upsConfig 6 }


upsConfigLowBattTime OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"minutes"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The value of upsEstimatedMinutesRemaining at which a
		lowBattery condition is declared.  For agents which
		support only discrete (discontinuous) values, then the
		agent shall round up to the next supported value.  If
		the requested value is larger than the largest
		supported value, then the largest supported value
		shall be selected."
	-- 1.3.6.1.2.1.33.1.9.7
::= { upsConfig 7 }


upsConfigAudibleStatus OBJECT-TYPE
	SYNTAX  INTEGER {
			disabled(1),
			enabled(2),
			muted(3) }
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The requested state of the audible alarm.  When in
		the disabled state, the audible alarm should never
		sound.  The enabled state is self-describing.  Setting
		this object to muted(3) when the audible alarm is
		sounding shall temporarily silence the alarm.  It will
		remain muted until it would normally stop sounding and
		the value returned for read operations during this
		period shall equal muted(3).  At the end of this
		period, the value shall revert to enabled(2).  Writes
		of the value muted(3) when the audible alarm is not
		sounding shall be accepted but otherwise shall have no
		effect."
	-- 1.3.6.1.2.1.33.1.9.8
::= { upsConfig 8 }


upsConfigLowVoltageTransferPoint OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The minimum input line voltage allowed before the UPS
		system transfers to battery backup."
	-- 1.3.6.1.2.1.33.1.9.9
::= { upsConfig 9 }


upsConfigHighVoltageTransferPoint OBJECT-TYPE
	SYNTAX  NonNegativeInteger
	UNITS	"RMS Volts"
	MAX-ACCESS read-write
	STATUS  current
	DESCRIPTION
		"The maximum line voltage allowed before the UPS
		system transfers to battery backup."
	-- 1.3.6.1.2.1.33.1.9.10
::= { upsConfig 10 }


--
-- notifications, i.e., traps
--

upsTraps OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.2
::= { upsMIB 2 }

--
-- conformance information
--

upsConformance OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3
::= { upsMIB 3 }

upsCompliances OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3.1
::= { upsConformance 1 }

--
-- units of conformance
--
-- summary at a glance:
--                                      subset  basic   adv
--upsIdentManufacturer                  x       x       x
--upsIdentModel                         x       x       x
--upsIdentUPSSoftwareVersion                    x       x
--upsIdentAgentSoftwareVersion          x       x       x
--upsIdentName                          x       x       x
--upsIdentAttachedDevices               x               x
--
--upsBatteryStatus                      x       x       x  notes
--upsSecondsOnBattery                   x       x       x
--upsEstimatedMinutesRemaining                          x
--upsEstimatedChargeRemaining                           x
--upsBatteryVoltage
--upsBatteryCurrent
--upsBatteryTemperature
--
--upsInputLineBads                      x       x       x
--upsInputNumLines                              x       x
--upsInputFrequency                             x       x
--upsInputVoltage                               x       x
--upsInputCurrent
--upsInputTruePower
--
--upsOutputSource                       x       x       x  notes
--upsOutputFrequency                            x       x
--upsOutputNumLines                             x       x
--upsOutputVoltage                              x       x
--upsOutputCurrent                                      x
--upsOutputPower                                        x
--upsOutputPercentLoad                                  x
--
--
--upsBypassFrequency                            x       x  notes
--upsBypassNumLines                             x       x
--upsBypassVoltage                              x       x
--upsBypassCurrent
--upsBypassPower
--
--
--upsAlarmsPresent                      x       x       x
--upsAlarmDescr                         x       x       x  notes
--upsAlarmTime                          x       x       x
--
--upsTestId                                     x       x  notes
--upsTestSpinLock                               x       x
--upsTestResultsSummary                         x       x
--upsTestResultsDetail                          x       x
--upsTestStartTime                              x       x
--upsTestElapsedTime                            x       x
--
--upsShutdownType                       x       x       x  notes
--upsShutdownAfterDelay                 x       x       x
--upsStartupAfterDelay                          x       x
--upsRebootWithDuration                         x       x
--upsAutoRestart                        x       x       x  notes
--
--upsConfigInputVoltage                 x       x       x  notes
--upsConfigInputFreq                    x       x       x  notes
--upsConfigOutputVoltage                x       x       x  notes
--upsConfigOutputFreq                   x       x       x  notes
--upsConfigOutputVA                     x       x       x
--upsConfigOutputPower                  x       x       x
--upsConfigLowBattTime                          x       x  notes
--upsConfigAudibleStatus                        x       x
--upsConfigLowVoltageTransferPoint
--upsConfigHighVoltageTransferPoint
-- units of conformance

upsGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3.2
::= { upsConformance 2 }

upsSubsetGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3.2.1
::= { upsGroups 1 }

upsBasicGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3.2.2
::= { upsGroups 2 }

upsFullGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3.2.3
::= { upsGroups 3 }

upsNotifyGroups OBJECT IDENTIFIER 
	-- 1.3.6.1.2.1.33.3.2.4
::= { upsGroups 4 }


-- This section defines the well-known notifications sent by
-- UPS agents.
-- Care must be taken to insure that no particular notification
-- is sent to a single receiving entity more often than once
-- every five seconds.

upsTrapOnBattery NOTIFICATION-TYPE
	OBJECTS {
		upsEstimatedMinutesRemaining,
		upsSecondsOnBattery,
		upsConfigLowBattTime}
	STATUS  current
	DESCRIPTION
		"The UPS is operating on battery power.  This trap is
		persistent and is resent at one minute intervals until
		the UPS either turns off or is no longer running on
		battery."
	-- 1.3.6.1.2.1.33.2.1
::= { upsTraps 1 }


upsTrapTestCompleted NOTIFICATION-TYPE
	OBJECTS {
		upsTestId,
		upsTestSpinLock,
		upsTestResultsSummary,
		upsTestResultsDetail,
		upsTestStartTime,
		upsTestElapsedTime}
	STATUS  current
	DESCRIPTION
		"This trap is sent upon completion of a UPS diagnostic
		test."
	-- 1.3.6.1.2.1.33.2.2
::= { upsTraps 2 }


upsTrapAlarmEntryAdded NOTIFICATION-TYPE
	OBJECTS {
		upsAlarmId,
		upsAlarmDescr}
	STATUS  current
	DESCRIPTION
		"This trap is sent each time an alarm is inserted into
		to the alarm table.  It is sent on the insertion of
		all alarms except for upsAlarmOnBattery and
		upsAlarmTestInProgress."
	-- 1.3.6.1.2.1.33.2.3
::= { upsTraps 3 }


upsTrapAlarmEntryRemoved NOTIFICATION-TYPE
	OBJECTS {
		upsAlarmId,
		upsAlarmDescr}
	STATUS  current
	DESCRIPTION
		"This trap is sent each time an alarm is removed from
		the alarm table.  It is sent on the removal of all
		alarms except for upsAlarmTestInProgress."
	-- 1.3.6.1.2.1.33.2.4
::= { upsTraps 4 }

upsSubsetIdentGroup OBJECT-GROUP
	OBJECTS {
		upsIdentManufacturer,
		upsIdentModel,
		upsIdentAgentSoftwareVersion,
		upsIdentName,
		upsIdentAttachedDevices }
	STATUS  current
	DESCRIPTION
		"The upsSubsetIdentGroup defines objects which are
		common across all UPSs which meet subset compliance.
		Most devices which conform to the upsSubsetIdentGroup
		will provide access to these objects via a proxy
		agent.  If the proxy agent is compatible with multiple
		UPS types, configuration of the proxy agent will
		require specifying some of these values, either
		individually, or as a group (perhaps through a table
		lookup mechanism based on the UPS model number)."
	-- 1.3.6.1.2.1.33.3.2.1.1
::= { upsSubsetGroups 1 }

upsSubsetBatteryGroup OBJECT-GROUP
	OBJECTS {
		upsBatteryStatus,
		upsSecondsOnBattery }
	STATUS  current
	DESCRIPTION
		"The upsSubsetBatteryGroup defines the objects that
		are common to battery groups of two-contact UPSs."
	-- 1.3.6.1.2.1.33.3.2.1.2
::= { upsSubsetGroups 2 }

upsSubsetInputGroup OBJECT-GROUP
	OBJECTS {
		upsInputLineBads }
	STATUS  current
	DESCRIPTION
		"The upsSubsetInputGroup defines the objects that are
		common to the Input groups of two-contact UPSs."
	-- 1.3.6.1.2.1.33.3.2.1.3
::= { upsSubsetGroups 3 }

upsSubsetOutputGroup OBJECT-GROUP
	OBJECTS {
		upsOutputSource }
	STATUS  current
	DESCRIPTION
		"The upsSubsetOutputGroup defines the objects that are
		common to the Output groups of two-contact UPSs."
	-- 1.3.6.1.2.1.33.3.2.1.4
::= { upsSubsetGroups 4 }

-- { upsSubsetGroups 5 } is reserved for
-- future use (upsSubsetBypassGroup)

upsSubsetAlarmGroup OBJECT-GROUP
	OBJECTS {
		upsAlarmsPresent,
		upsAlarmDescr,
		upsAlarmTime }
	STATUS  current
	DESCRIPTION
		"The upsSubsetAlarmGroup defines the objects that are
		common to the Alarm groups of two-contact UPSs."
	-- 1.3.6.1.2.1.33.3.2.1.6
::= { upsSubsetGroups 6 }

-- { upsSubsetGroups 7 } is reserved for
-- future use (upsSubsetTestGroup)

upsSubsetControlGroup OBJECT-GROUP
	OBJECTS {
		upsShutdownType,
		upsShutdownAfterDelay,
		upsAutoRestart }
	STATUS  current
	DESCRIPTION
		"The upsSubsetControlGroup defines the objects that
		are common to the Control groups of two-contact UPSs."
	-- 1.3.6.1.2.1.33.3.2.1.8
::= { upsSubsetGroups 8 }

upsSubsetConfigGroup OBJECT-GROUP
	OBJECTS {
		upsConfigInputVoltage,
		upsConfigInputFreq,
		upsConfigOutputVoltage,
		upsConfigOutputFreq,
		upsConfigOutputVA,
		upsConfigOutputPower }
	STATUS  current
	DESCRIPTION
		"The upsSubsetConfigGroup defines the objects that are
		common to the Config groups of two-contact UPSs."
	-- 1.3.6.1.2.1.33.3.2.1.9
::= { upsSubsetGroups 9 }

upsBasicIdentGroup OBJECT-GROUP
	OBJECTS {
		upsIdentManufacturer,
		upsIdentModel,
		upsIdentUPSSoftwareVersion,
		upsIdentAgentSoftwareVersion,
		upsIdentName }
	STATUS  current
	DESCRIPTION
		"The upsBasicIdentGroup defines objects which are
		common to the Ident group of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.1
::= { upsBasicGroups 1 }

upsBasicBatteryGroup OBJECT-GROUP
	OBJECTS {
		upsBatteryStatus,
		upsSecondsOnBattery }
	STATUS  current
	DESCRIPTION
		"The upsBasicBatteryGroup defines the objects that are
		common to the battery groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.2
::= { upsBasicGroups 2 }

upsBasicInputGroup OBJECT-GROUP
	OBJECTS {
		upsInputLineBads,
		upsInputNumLines,
		upsInputFrequency,
		upsInputVoltage }
	STATUS  current
	DESCRIPTION
		"The upsBasicInputGroup defines the objects that are
		common to the Input groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.3
::= { upsBasicGroups 3 }

upsBasicOutputGroup OBJECT-GROUP
	OBJECTS {
		upsOutputSource,
		upsOutputFrequency,
		upsOutputNumLines,
		upsOutputVoltage }
	STATUS  current
	DESCRIPTION
		"The upsBasicOutputGroup defines the objects that are
		common to the Output groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.4
::= { upsBasicGroups 4 }

upsBasicBypassGroup OBJECT-GROUP
	OBJECTS {
		upsBypassFrequency,
		upsBypassNumLines,
		upsBypassVoltage }
	STATUS  current
	DESCRIPTION
		"The upsBasicBypassGroup defines the objects that are
		common to the Bypass groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.5
::= { upsBasicGroups 5 }

upsBasicAlarmGroup OBJECT-GROUP
	OBJECTS {
		upsAlarmsPresent,
		upsAlarmDescr,
		upsAlarmTime }
	STATUS  current
	DESCRIPTION
		"The upsBasicAlarmGroup defines the objects that are
		common to the Alarm  groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.6
::= { upsBasicGroups 6 }

upsBasicTestGroup OBJECT-GROUP
	OBJECTS {
		upsTestId,
		upsTestSpinLock,
		upsTestResultsSummary,
		upsTestResultsDetail,
		upsTestStartTime,
		upsTestElapsedTime }
	STATUS  current
	DESCRIPTION
		"The upsBasicTestGroup defines the objects that are
		common to the Test groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.7
::= { upsBasicGroups 7 }

upsBasicControlGroup OBJECT-GROUP
	OBJECTS {
		upsShutdownType,
		upsShutdownAfterDelay,
		upsStartupAfterDelay,
		upsRebootWithDuration,
		upsAutoRestart }
	STATUS  current
	DESCRIPTION
		"The upsBasicControlGroup defines the objects that are
		common to the Control groups of compliant UPSs which
		support basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.8
::= { upsBasicGroups 8 }

upsBasicConfigGroup OBJECT-GROUP
	OBJECTS {
		upsConfigInputVoltage,
		upsConfigInputFreq,
		upsConfigOutputVoltage,
		upsConfigOutputFreq,
		upsConfigOutputVA,
		upsConfigOutputPower,
		upsConfigLowBattTime,
		upsConfigAudibleStatus }
	STATUS  current
	DESCRIPTION
		"The upsBasicConfigGroup defines the objects that are
		common to the Config groups of UPSs which support
		basic functions."
	-- 1.3.6.1.2.1.33.3.2.2.9
::= { upsBasicGroups 9 }

upsFullIdentGroup OBJECT-GROUP
	OBJECTS {
		upsIdentManufacturer,
		upsIdentModel,
		upsIdentUPSSoftwareVersion,
		upsIdentAgentSoftwareVersion,
		upsIdentName,
		upsIdentAttachedDevices }
	STATUS  current
	DESCRIPTION
		"The upsFullIdentGroup defines objects which are
		common to the Ident group of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.1
::= { upsFullGroups 1 }

upsFullBatteryGroup OBJECT-GROUP
	OBJECTS {
		upsBatteryStatus,
		upsSecondsOnBattery,
		upsEstimatedMinutesRemaining,
		upsEstimatedChargeRemaining,
		upsBatteryCurrent,
		upsBatteryTemperature,
		upsBatteryVoltage }
	STATUS  current
	DESCRIPTION
		"The upsFullBatteryGroup defines the objects that are
		common to the battery groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.2
::= { upsFullGroups 2 }

upsFullInputGroup OBJECT-GROUP
	OBJECTS {
		upsInputLineBads,
		upsInputNumLines,
		upsInputFrequency,
		upsInputVoltage,
		upsInputCurrent,
		upsInputTruePower }
	STATUS  current
	DESCRIPTION
		"The upsFullInputGroup defines the objects that are
		common to the Input groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.3
::= { upsFullGroups 3 }

upsFullOutputGroup OBJECT-GROUP
	OBJECTS {
		upsOutputSource,
		upsOutputFrequency,
		upsOutputNumLines,
		upsOutputVoltage,
		upsOutputCurrent,
		upsOutputPower,
		upsOutputPercentLoad }
	STATUS  current
	DESCRIPTION
		"The upsFullOutputGroup defines the objects that are
		common to the Output groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.4
::= { upsFullGroups 4 }

upsFullBypassGroup OBJECT-GROUP
	OBJECTS {
		upsBypassFrequency,
		upsBypassNumLines,
		upsBypassVoltage,
		upsBypassCurrent,
		upsBypassPower }
	STATUS  current
	DESCRIPTION
		"The upsFullBypassGroup defines the objects that are
		common to the Bypass groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.5
::= { upsFullGroups 5 }

upsFullAlarmGroup OBJECT-GROUP
	OBJECTS {
		upsAlarmsPresent,
		upsAlarmDescr,
		upsAlarmTime }
	STATUS  current
	DESCRIPTION
		"The upsFullAlarmGroup defines the objects that are
		common to the Alarm  groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.6
::= { upsFullGroups 6 }

upsFullTestGroup OBJECT-GROUP
	OBJECTS {
		upsTestId,
		upsTestSpinLock,
		upsTestResultsSummary,
		upsTestResultsDetail,
		upsTestStartTime,
		upsTestElapsedTime }
	STATUS  current
	DESCRIPTION
		"The upsFullTestGroup defines the objects that are
		common to the Test groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.7
::= { upsFullGroups 7 }

upsFullControlGroup OBJECT-GROUP
	OBJECTS {
		upsShutdownType,
		upsShutdownAfterDelay,
		upsStartupAfterDelay,
		upsRebootWithDuration,
		upsAutoRestart }
	STATUS  current
	DESCRIPTION
		"The upsFullControlGroup defines the objects that are
		common to the Control groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.8
::= { upsFullGroups 8 }

upsFullConfigGroup OBJECT-GROUP
	OBJECTS {
		upsConfigInputVoltage,
		upsConfigInputFreq,
		upsConfigOutputVoltage,
		upsConfigOutputFreq,
		upsConfigOutputVA,
		upsConfigOutputPower,
		upsConfigLowBattTime,
		upsConfigAudibleStatus,
		upsConfigLowVoltageTransferPoint,
		upsConfigHighVoltageTransferPoint }
	STATUS  current
	DESCRIPTION
		"The upsFullConfigGroup defines the objects that are
		common to the Config groups of fully compliant UPSs."
	-- 1.3.6.1.2.1.33.3.2.3.9
::= { upsFullGroups 9 }

upsNotifyGroup NOTIFICATION-GROUP
	NOTIFICATIONS {
		upsTrapOnBattery,
		upsTrapTestCompleted,
		upsTrapAlarmEntryAdded,
		upsTrapAlarmEntryRemoved }
	STATUS  current
	DESCRIPTION
		"All UPS-MIB notifications."
	-- 1.3.6.1.2.1.33.3.2.4.1
::= { upsNotifyGroups 1 }


--
-- compliance statements
--

upsSubsetCompliance MODULE-COMPLIANCE
	STATUS  current
	DESCRIPTION
		"The compliance statement for UPSs that only support
		the two-contact communication protocol."

	MODULE 
	MANDATORY-GROUPS {
			upsSubsetIdentGroup,
			upsSubsetBatteryGroup,
			upsSubsetInputGroup,
			upsSubsetOutputGroup,
			upsSubsetAlarmGroup,
			upsSubsetControlGroup,
			upsSubsetConfigGroup }

	OBJECT upsBatteryStatus
	  SYNTAX INTEGER {
			batteryNormal(2),
			batteryLow(3) }
	  DESCRIPTION 
		"Support of the values unknown(1) and
		batteryDepleted(4) is not required."
	OBJECT upsAlarmDescr
	  DESCRIPTION 
		"Support of all `well known' alarm types is not
		required.  The well known alarm types which must be
		supported are: upsAlarmOnBattery, upsAlarmLowBattery,
		upsAlarmInputBad, upsAlarmUpsOutputOff,
		upsAlarmUpsSystemOff, and upsAlarmTestInProgress."
	OBJECT upsOutputSource
	  SYNTAX INTEGER {
			normal(2),
			battery(4) }
	  DESCRIPTION 
		"Support of the values other(1), none(2), bypass(4),
		booster(6) and reducer(7) is not required."
	OBJECT upsShutdownType
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required, i.e., compliant
		systems need not support more than one shutdown type."
	OBJECT upsAutoRestart
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required, i.e., compliant
		systems need not support more than one restart type."
	OBJECT upsConfigInputVoltage
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigInputFreq
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigOutputVoltage
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigOutputFreq
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	-- 1.3.6.1.2.1.33.3.1.1
::= { upsCompliances 1 }


upsBasicCompliance MODULE-COMPLIANCE
	STATUS  current
	DESCRIPTION
		"The compliance statement for UPSs that support
		full-featured functions, such as control."

	MODULE 
	MANDATORY-GROUPS {
			upsBasicIdentGroup,
			upsBasicBatteryGroup,
			upsBasicInputGroup,
			upsBasicOutputGroup,
			upsBasicAlarmGroup,
			upsBasicTestGroup,
			upsBasicControlGroup,
			upsBasicConfigGroup }

	OBJECT upsAlarmDescr
	  DESCRIPTION 
		"Support of all `well known' alarm types is not
		required.  The well known alarm types which must be
		supported are: upsAlarmOnBattery, upsAlarmLowBattery,
		upsAlarmDepletedBattery, upsAlarmTempBad,
		upsAlarmInputBad, upsAlarmOutputOverload,
		upsAlarmOnBypass, upsAlarmBypassBad,
		upsAlarmOutputOffAsRequested,
		upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff,
		upsAlarmUpsSystemOff, upsAlarmGeneralFault,
		upsAlarmDiagnosticTestFailed,
		upsAlarmCommunicationsLost, upsAlarmShutdownPending,
		and upsAlarmTestInProgress."
	OBJECT upsTestId
	  DESCRIPTION 
		"Support of all `well known' test types is not
		required.  If no tests are supported, then the only
		well known test type which must be supported is
		upsTestNoTestsInitiated."
	OBJECT upsOutputSource
	  SYNTAX INTEGER {
			normal(2),
			battery(4) }
	  DESCRIPTION 
		"Support of the values other(1), none(2), bypass(4),
		booster(6) and reducer(7) is not required."
	GROUP upsBasicBypassGroup
	  DESCRIPTION
		"The upsBasicBypassGroup is only required for UPSs
		that have a Bypass present."
	OBJECT upsShutdownType
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required, i.e., compliant
		systems need not support more than one shutdown type."
	OBJECT upsAutoRestart
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required, i.e., compliant
		systems need not support more than one restart type."
	OBJECT upsConfigInputVoltage
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigInputFreq
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigOutputVoltage
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigOutputFreq
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigLowBattTime
	  DESCRIPTION 
		"Implementation of all possible values may be onerous
		for some systems.  Consequently, not all possible
		values must be supported.  However, at least two
		different manufacturer-selected values must be
		supported."
	-- 1.3.6.1.2.1.33.3.1.2
::= { upsCompliances 2 }


upsFullCompliance MODULE-COMPLIANCE
	STATUS  current
	DESCRIPTION
		"The compliance statement for UPSs that support
		advanced full-featured functions."

	MODULE 
	MANDATORY-GROUPS {
			upsFullIdentGroup,
			upsFullBatteryGroup,
			upsFullInputGroup,
			upsFullOutputGroup,
			upsFullAlarmGroup,
			upsFullTestGroup,
			upsFullControlGroup,
			upsFullConfigGroup }

	OBJECT upsAlarmDescr
	  DESCRIPTION 
		"Support of all `well known' alarm types is not
		required.  The well known alarm types which must be
		supported are: upsAlarmBatteryBad, upsAlarmOnBattery,
		upsAlarmLowBattery, upsAlarmDepletedBattery,
		upsAlarmTempBad, upsAlarmInputBad, upsAlarmOnBypass,
		upsAlarmBypassBad, upsAlarmOutputOffAsRequested,
		upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff,
		upsAlarmUpsSystemOff, upsAlarmGeneralFault,
		upsAlarmDiagnosticTestFailed,
		upsAlarmCommunicationsLost, upsAlarmShutdownPending,
		and upsAlarmTestInProgress."
	OBJECT upsTestId
	  DESCRIPTION 
		"Support of all `well known' test types is not
		required.  The well known test types which must be
		supported are: upsTestNoTestsInitiated,
		upsTestGeneralSystemsTest, and
		upsTestQuickBatteryTest."
	OBJECT upsOutputSource
	  SYNTAX INTEGER {
			normal(2),
			battery(4) }
	  DESCRIPTION 
		"Support of the values other(1), none(2), bypass(4),
		booster(6) and reducer(7) is not required."
	GROUP upsFullBypassGroup
	  DESCRIPTION
		"The upsFullBypassGroup is only required for UPSs that
		have a Bypass present."
	OBJECT upsShutdownType
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required, i.e., compliant
		systems need not support more than one shutdown type."
	OBJECT upsAutoRestart
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required, i.e., compliant
		systems need not support more than one restart type."
	OBJECT upsConfigInputVoltage
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigInputFreq
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigOutputVoltage
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigOutputFreq
	  MIN-ACCESS read-only
	  DESCRIPTION 
		"Read-write access is not required."
	OBJECT upsConfigLowBattTime
	  DESCRIPTION 
		"Implementation of all possible values may be onerous
		for some systems.  Consequently, not all possible
		values must be supported.  However, at least two
		different manufacturer-selected values must be
		supported."
	-- 1.3.6.1.2.1.33.3.1.3
::= { upsCompliances 3 }

END
