-- ICT MIB file for ICT Modular Power System.
--
-- Date		Version
-- =============================
-- 1/24/25	v1.06
--

ICT-POWERSYSTEM-MIB DEFINITIONS ::= BEGIN

IMPORTS
	enterprises, IpAddress	FROM RFC1155-SMI
	DisplayString		FROM RFC1213-MIB
	OBJECT-TYPE		FROM RFC-1212
	TRAP-TYPE		FROM RFC-1215;

ictPower			OBJECT IDENTIFIER ::= { enterprises 39145 }

powerSystem			OBJECT IDENTIFIER ::= { ictPower 13 }

deviceModel			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Model Number"
	::= { powerSystem 1 }

deviceName			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Device Name"
	::= { powerSystem 2 }

deviceHardware			OBJECT-TYPE
	SYNTAX			INTEGER (0..127)
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Hardware Version"
	::= { powerSystem 3 }

deviceFirmware			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Firmware Version"
	::= { powerSystem 4 }

deviceMacAddress		OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"MAC Address"
	::= { powerSystem 5 }

inputVoltage			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Input Voltage (VAC)"
	::= { powerSystem 6 }

outputVoltage			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Output Voltage (VDC)"
	::= { powerSystem 7 }

outputCurrent			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Total System Current (Amps)"
	::= { powerSystem 8 }

outputEnable			OBJECT-TYPE
	SYNTAX			INTEGER { enabled(1), disabled(2) }
	ACCESS			read-write
	STATUS			mandatory
	DESCRIPTION		"Output Enable Status (a value of '1' indicates Output is Enabled, and a value of '2' indicates Output is Disabled. Output cannot be disabled during an AC Failure)"
	::= { powerSystem 9 }

moduleTable			OBJECT-TYPE
	SYNTAX SEQUENCE OF ModuleEntry
	ACCESS			not-accessible
	STATUS			mandatory
	DESCRIPTION		"Module Table"
	::= { powerSystem 10 }

moduleEntry			OBJECT-TYPE
	SYNTAX			ModuleEntry
	ACCESS			not-accessible
	STATUS			mandatory
	INDEX { moduleNumber }
	::= { moduleTable 1 }

ModuleEntry ::=
	SEQUENCE {
		moduleNumber		INTEGER,
		moduleStatus		INTEGER,
		moduleType		INTEGER,
		moduleVoltage		DisplayString,
		moduleCurrentA		DisplayString,
		moduleCurrentB		DisplayString,
		moduleCurrentC		DisplayString,
		moduleCurrentD		DisplayString,
		moduleControlA		INTEGER,
		moduleControlB		INTEGER,
		moduleControlC		INTEGER,
		moduleControlD		INTEGER,
		moduleVoltageX100	Integer32,
		moduleCurrentAX100	Integer32,
		moduleCurrentBX100	Integer32,
		moduleCurrentCX100	Integer32,
		moduleCurrentDX100	Integer32,
		moduleAlarms		Integer32
	}

moduleNumber			OBJECT-TYPE
	SYNTAX			INTEGER (1..8)
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Module Number"
	::= { moduleEntry 1 }

moduleStatus			OBJECT-TYPE
	SYNTAX			INTEGER { notInstalled(1), ok(2), alarm(3) }
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Module Status"
	::= { moduleEntry 2 }

moduleType			OBJECT-TYPE
	SYNTAX			INTEGER { notInstalled(1), power(2), battery(3), distribution(4), converter(5) }
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Module Type ('1' indicates Module is NOT INSTALLED,'2' indicates POWER Module,'3' indicates BATTERY Module,'4' indicates DISTRIBUTION Module, and '5' indicates CONVERTER Module)"
	::= { moduleEntry 3 }

moduleVoltage			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Module Voltage (VDC)"
	::= { moduleEntry 4 }

moduleCurrentA			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 1 Current (Amps)"
	::= { moduleEntry 5 }

moduleCurrentB			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 2 Current (Amps)"
	::= { moduleEntry 6 }

moduleCurrentC			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 3 Current (Amps)"
	::= { moduleEntry 7 }

moduleCurrentD			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 4 Current (Amps)"
	::= { moduleEntry 8 }

moduleControlA			OBJECT-TYPE
	SYNTAX			INTEGER { enabled(1), disabled(2) }
	ACCESS			read-write
	STATUS			mandatory
	DESCRIPTION		"Channel 1 Control (a value of '1' indicates Channel is Enabled, and a value of '2' indicates Channel is Disabled)"
	::= { moduleEntry 9 }

moduleControlB			OBJECT-TYPE
	SYNTAX			INTEGER { enabled(1), disabled(2) }
	ACCESS			read-write
	STATUS			mandatory
	DESCRIPTION		"Channel 2 Control (a value of '1' indicates Channel is Enabled, and a value of '2' indicates Channel is Disabled)"
	::= { moduleEntry 10 }

moduleControlC			OBJECT-TYPE
	SYNTAX			INTEGER { enabled(1), disabled(2) }
	ACCESS			read-write
	STATUS			mandatory
	DESCRIPTION		"Channel 3 Control (a value of '1' indicates Channel is Enabled, and a value of '2' indicates Channel is Disabled)"
	::= { moduleEntry 11 }

moduleControlD			OBJECT-TYPE
	SYNTAX			INTEGER { enabled(1), disabled(2) }
	ACCESS			read-write
	STATUS			mandatory
	DESCRIPTION		"Channel 4 Control (a value of '1' indicates Channel is Enabled, and a value of '2' indicates Channel is Disabled)"
	::= { moduleEntry 12 }

moduleVoltageX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Module Voltage (VDC X 100)"
	::= { moduleEntry 13 }

moduleCurrentAX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 1 Current (Amps X 100)"
	::= { moduleEntry 14 }

moduleCurrentBX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 2 Current (Amps X 100)"
	::= { moduleEntry 15 }

moduleCurrentCX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 3 Current (Amps X 100)"
	::= { moduleEntry 16 }

moduleCurrentDX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Channel 4 Current (Amps X 100)"
	::= { moduleEntry 17 }

moduleAlarms			OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Active Module Alarms"
	::= { moduleEntry 18 }

alarmTable			OBJECT-TYPE
	SYNTAX SEQUENCE OF AlarmEntry
	ACCESS			not-accessible
	STATUS			mandatory
	DESCRIPTION		"Alarm Input Table"
	::= { powerSystem 11 }

alarmEntry			OBJECT-TYPE
	SYNTAX			AlarmEntry
	ACCESS			not-accessible
	STATUS			mandatory
	INDEX { alarmNumber }
	::= { alarmTable 1 }

AlarmEntry ::=
	SEQUENCE {
		alarmNumber		INTEGER,
		alarmName		DisplayString,
		alarmStatus		INTEGER
	}

alarmNumber			OBJECT-TYPE
	SYNTAX			INTEGER (1..4)
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Alarm Input Number"
	::= { alarmEntry 1 }

alarmName			OBJECT-TYPE
	SYNTAX			DisplayString
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Alarm Input Name"
	::= { alarmEntry 2 }

alarmStatus			OBJECT-TYPE
	SYNTAX			INTEGER { inactive(1), ready(2), alarm(3) }
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Alarm Input Status ('1' indicates Alarm is INACTIVE,'2' indicates Alarm is READY, and '3' indicates Alarm is in an ALARM condition)"
	::= { alarmEntry 3 }

probeTemperature		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Remote Probe Temperature (ºC) (a value of '1000' indicates the temperature probe is not connected)"
	::= { powerSystem 12 }

batterySoc			OBJECT-TYPE
	SYNTAX			INTEGER (0..100)
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Battery State of Charge (%)"
	::= { powerSystem 13 }

batteryNetAh			OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Battery Net Ah Count (Ah)"
	::= { powerSystem 14 }

batteryRunTime			OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Estimated Battery Run-time Remaining (min)"
	::= { powerSystem 15 }

batteryTestResult		OBJECT-TYPE
	SYNTAX			INTEGER { unknown(1), inProgress(2), pass(3), fail(4) }
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Result of Last Battery Discharge Test ('1' indicates result is UNKNOWN,'2' indicates Test is IN PROGRESS, '3' indicates Test PASSED, and '4' indicates Test FAILED)"
	::= { powerSystem 16 }

inputVoltageX1			OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Input Voltage (VAC)"
	::= { powerSystem 17 }

outputVoltageX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Output Voltage (VDC X 100)"
	::= { powerSystem 18 }

outputCurrentX100		OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Total System Current (Amps X 100)"
	::= { powerSystem 19 }

deviceAlarms			OBJECT-TYPE
	SYNTAX			Integer32
	ACCESS			read-only
	STATUS			mandatory
	DESCRIPTION		"Active Device Alarms"
	::= { powerSystem 20 }


--
-- Trap definitions:
--

moduleAlarmTrap			TRAP-TYPE
	ENTERPRISE		powerSystem
	VARIABLES		{ moduleNumber }
	DESCRIPTION		"Trap generated when a Module Alarm is triggered"
	::= 101

alarmInputTrap			TRAP-TYPE
	ENTERPRISE		powerSystem
	VARIABLES		{ alarmNumber }
	DESCRIPTION		"Trap generated when an Alarm Input is activated"
	::= 102

acFailAlarmTrap			TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when the AC Failure Alarm is triggered"
	::= 103

sysCurrentLimitTrap		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when the System Current Limit Alarm is triggered"
	::= 104

moduleAlarmClear		TRAP-TYPE
	ENTERPRISE		powerSystem
	VARIABLES		{ moduleNumber }
	DESCRIPTION		"Trap generated when a Module Alarm is cleared"
	::= 111

alarmInputClear			TRAP-TYPE
	ENTERPRISE		powerSystem
	VARIABLES		{ alarmNumber }
	DESCRIPTION		"Trap generated when an Alarm Input is cleared"
	::= 112

acFailAlarmClear		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when the AC Failure Alarm is cleared"
	::= 113

sysCurrentLimitClear		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when the System Current Limit Alarm is cleared"
	::= 114

batteryTestStart		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when a Battery Discharge Test is started"
	::= 121

batteryTestComplete		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when a Battery Discharge Test completes successfully"
	::= 122

batteryTestFail			TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when a Battery Discharge Test fails"
	::= 123

batteryEqualizeStart		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when a Battery Equalize Charge is started"
	::= 124

batteryEqualizeComplete		TRAP-TYPE
	ENTERPRISE		powerSystem
	DESCRIPTION		"Trap generated when a Battery Equalize Charge completes"
	::= 125

END
