SCTE-HMS-HE-OPTICAL-SWITCH-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-COMPLIANCE, OBJECT-GROUP
	FROM SNMPv2-CONF    
    OBJECT-TYPE, MODULE-IDENTITY, Unsigned32, Integer32
        FROM SNMPv2-SMI
    DisplayString
        FROM SNMPv2-TC 
    entPhysicalIndex
        FROM ENTITY-MIB
    HeFaultStatus,HeHundredthNanoMeter,
    HeTenthdB, HeTenthdBm, HeOnOffControl
        FROM SCTE-HMS-HEADENDIDENT-MIB
    heOpticalSwitchGroup 
       FROM SCTE-HMS-HE-OPTICS-MIB;


heOpticalSwitchMIB MODULE-IDENTITY
    LAST-UPDATED "200310090000Z"  -- Oct 9, 2003
    ORGANIZATION "SCTE HMS Working Group"
    CONTACT-INFO
            "SCTE HMS Subcommittee, Chairman
             mailto: standards@SCTE.org"

        DESCRIPTION		         
                "The MIB module for the HMS HE Optical Switch module 
				entities. 
				
				This MIB module is for representing optical
				switch equipment present in the headend (or indoor) 
				and is supported by a SNMP agent.
				
				This MIB is limited in its scope and intended to 
				describe an A-B (2 input and 1 output) or a crossbar 
				optical switch.  Up to 2 optical inputs and 2 outputs 
				are supported.  Any devices with more than 2 optical 
				inputs or outputs shall be covered by another MIB.

				This MIB does not intend to dictate all of the nuances
				involved in changing control settings (automatic or 
				manual mode, changing switch controls in each possible 
				mode combination).  The most common desired behaviors 
				are noted but specific switch operation and behavior 
				are left to the optical switch vendors.

				Not all control enumerations must be supported.  This 
				is noted in the variables that have optional 
				enumerations. 				
				
				Refer to the associated notes for information on what 
				SNMP responses should be returned for unsupported
				enumerations."

    ::=  {  heOpticalSwitchGroup 1  }

heOpSwitchMIBObjects OBJECT IDENTIFIER ::= { heOpticalSwitchMIB 1}


-- Every optical switch is modeled by the tables presented
-- in this MIB module. These tables extend the entPhysicalTable
-- according to RFC 2737. The extension index entPhysicalIndex uniquely
-- identifies the optical switch.

-- Every optical switch is also modeled by the following tables:
--      entPhysicalEntry - 1 row; (defined in document: RFC2737)
--      heCommonEntry    - 1 row. (defined in document: HMS111) 

-- Every optical switch module will have its alarms modeled by the table:
--		propertyEntry - x rows; (defined in document: HMS026)
--		(where x is the nos. of alarmable analog properties supported 
--      by the optical switch)

--		discretePropertyEntry - y rows; (defined in document: HMS026)
--		(where y is the nos. of alarmable digital properties supported by 
--      the optical switch)

-- Every optical switch module will have a list of currently active 
-- alarms modeled by the table:
--		currentAlarmEntry - z rows; (defined in document: HMS026)
--		(where z is the nos. of current active alarms in the optical 
--        switch)

-- Thus, an A-B optical switch (2 optical inputs and one optical output) 
-- will be represented by one row in entPhysicalTable, one row in 
-- heCommonTable, one row in heOpSwitchUnitTable, two rows in 
-- heOpSwitchInputTable and one row in heOpSwitchOutputTable.

-- Additionally, a crossbar optical switch (2 inputs and 2 outputs) 
-- will be represented by one row in entPhysicalTable, one row in 
-- heCommonTable, one row in heOpSwitchUnitTable, two rows
-- in heOpSwitchInputTable and two rows in heOpSwitchOutputTable.

-- Correlation of outputs and inputs are indicated by the heOpSwitchState 
-- variable.  Correlation of physical inputs and outputs to 
-- heOpSwitchInputTable and heOpSwitchOutputTables rows is indicated 
-- by the heOpSwitchInputDescription and heOpSwitchOutputDescription 
-- variables.



--      the Optical Switch Unit Table
heOpSwitchUnitTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HeOpSwitchUnitEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table containing information about Optical Switch used
            in an indoor environment."
    ::= { heOpSwitchMIBObjects 1 }

heOpSwitchUnitEntry OBJECT-TYPE
    SYNTAX 		HeOpSwitchUnitEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
            "List of information about each optical switch."
    INDEX { entPhysicalIndex }
        ::= { heOpSwitchUnitTable 1 }

HeOpSwitchUnitEntry ::= SEQUENCE {
    heOpSwitchMode						INTEGER,
    heOpSwitchControl                   INTEGER,    
    heOpSwitchRevertEnable             HeOnOffControl,
    heOpSwitchState                     INTEGER,
    heOpSwitchFailoverStatus            HeFaultStatus,
    heOpSwitchBothInputStatus           HeFaultStatus,
    heOpSwitchSelectWavelength			HeHundredthNanoMeter,
    heOpSwitchHysteresis                HeTenthdB,
    heOpSwitchWaitToRestoreTime         Integer32,
	heOpSwitchPrioChannel              INTEGER
}

heOpSwitchMode OBJECT-TYPE
    SYNTAX      INTEGER {
        automatic(1),
        manual(2)
    }
    MAX-ACCESS	  read-write
    STATUS          current
    DESCRIPTION
           "This controls and/or reports the switching mode.  If 
		   automatic(1), the optical switch will evaluate the optical 
		   input status and make the decision to affect the switch state.  
		   If set to manual(2), the optical switch will not affect the 
		   switch state itself."

    ::= { heOpSwitchUnitEntry 1 }


heOpSwitchControl OBJECT-TYPE
    SYNTAX      INTEGER {
        pathA(1),
        pathB(2),
        cross(3),
        bar(4),
        bothA(5), 
        bothB(6)
    }
    MAX-ACCESS	  read-write
    STATUS          current
    DESCRIPTION
            "Sets the intended state of the Optical Switch. The effect 
			of this control will depend on the value of heOpSwitchMode.
			If heOpSwitchMode is set to automatic, the value this 
			control is set to will be the preferred setting.  If it is 
			set to manual, the switch will assume this setting.  Actual 
			switch operation while changing switch control value(s) 
			is up to the equipment vendor. For example, if the switch 
			is in manual mode and the operator tries to connect the 
			output to an invalid input, the switch may or may 
			not change state.
			
			Not all enumerations must be supported. For example, an 
			A-B optical switch may support only the pathA and pathB 
			enumerations while a cross-bar switch may support cross, 
			bar, bothA or bothB or only cross and bar but not pathA 
			and pathB enumerations.  See the note below about the 
			expected SNMP response. 

            A value pathA(1) connects the switch output to side A 
			(first input) of the switch.  This enumeration is intended
			for use by an A-B switch.

            A value pathB(2) connects the switch output to side B 
			(second input) of the switch. This enumeration is intended 
			for use by an A-B switch.

            A value cross(3) connects the switch outputs to the inputs 
			as follows:
			   Side A (first or primary) output is connected to side B 
			   (second or alternate) input. 
			   Side B (second or alternate) output is connected to 
			   side A (first or primary) input.
			This enumeration is intended for use by a cross-bar switch.
            A value bar(4) connects the switch outputs to the inputs as 
			follows:
			   Side A (first or primary) output is connected to side A 
			   (first or primary) input.
			   Side B (second or alternate) output is connected to 
			   side B (second or alternate) input.
			This enumeration is intended for use by a cross-bar switch.

            A value bothA(5) connects the switch outputs to the inputs as 
			follows:
			   Side A (first or primary) output is connected to side A 
			   (first or primary) input.
			   Side B (second or alternate) output is connected to 
			   side A (first or primary) input.
			This enumeration is intended for use by a cross-bar switch.

            A value bothB(6) connects the switch outputs to the inputs 
			as follows:
			   Side A (first or primary) output is connected to side B 
			   (second or alternate) input.
			   Side B (second or alternate) output is connected to 
			   side B (second or alternate) input.
			This enumeration is intended for use by a cross-bar switch.


            *** IMPORTANT ***
            It is NOT required that an optical switch support all
            enumerations. A SET request for an unsupported value shall
            yield a badValue(3) error by an SNMPv1 agent or an
            inconsistentValue(12) by an SNMPv2 agent."
    ::= { heOpSwitchUnitEntry 2 }


heOpSwitchRevertEnable OBJECT-TYPE
    SYNTAX      HeOnOffControl 
    MAX-ACCESS	  read-write
    STATUS          current
    DESCRIPTION
           "This controls the use of revertive switching.  
		   
		   If set to on, the switch will attempt to go back to the 
		   preferred settings indicated by heOpSwitchControl if 
		   heOpSwitchMode is set to automatic, and the input status 
		   of the preferred input is normal.  The switch will not 
		   attempt to revert to the settings indicated by 
		   heOpSwitchControl until heOpSwitchWaitToRestoreTime 
		   (if supported) has expired since the preferred input was 
		   restored to normal levels.


		   If set to off, the switch will not attempt to go back to 
		   the preferred settings indicated by heOpSwitchControl if 
		   heOpSwitchMode is set to automatic, and the input status 
		   of the preferred input is normal.  
		   "

    ::= { heOpSwitchUnitEntry 3 }


heOpSwitchState OBJECT-TYPE
    SYNTAX      INTEGER {
        pathA(1),
        pathB(2),
		cross(3),
		bar(4),
		bothA(5),
		bothB(6)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Reports the state of the Optical Switch.  Not all enumerations 
			must be supported.  For example, an A-B optical switch may 
			support only the pathA and pathB enumerations while a 
			cross-bar switch may support cross, bar, bothA or bothB or 
			only cross and bar but not pathA and pathB enumerations. 

            A value pathA(1) indicates that the switch output is being
            fed by side A (first input) of the switch.  This enumeration
			is intended for use by an A-B switch.

            A value pathB(2) indicates that the switch output is being
            fed by side B (second input) of the switch. This enumeration
			is intended for use by an A-B switch.

            A value cross(3) indicates that the switch outputs are fed as 
			follows:
			   Side A (first or primary) output is connected to side B 
			   (second or alternate) input.
			   Side B (second or alternate) output is connected to side A 
			   (first or primary) input.
			   This enumeration is intended for use by a cross-bar switch.

            A value bar(4) indicates that the switch outputs are fed as 
			follows:
			   Side A (first or primary) output is connected to side A 
			   (first or primary) input.
			   Side B (second or alternate) output is connected to side B 
			   (second or alternate) input.
			   This enumeration is intended for use by a cross-bar switch.

            A value bothA(5) indicates that the switch outputs are fed as 
			follows:
			   Side A (first or primary) output is connected to side A 
			   (first or primary) input.
			   Side B (second or alternate) output is connected to side A 
			   (first or primary) input.
			   This enumeration is intended for use by a cross-bar switch.

            A value bothB(6) indicates that the switch outputs are fed as 
			follows:
			   Side A (first or primary) output is connected to side B 
			   (second or alternate) input.
			   Side B (second or alternate) output is connected to side B 
			   (second or alternate) input.
			   This enumeration is intended for use by a cross-bar switch."

    ::= { heOpSwitchUnitEntry 4 }


heOpSwitchFailoverStatus OBJECT-TYPE
    SYNTAX      HeFaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The integral status of both inputs. 

            A value is fault(2), if current switch state heOpSwitchState 
			is different than the preferred setting heOpSwitchControl, 
			otherwise, it is normal(1). 

            This object must provide for the alarm management capabilities
            with a corresponding entry in the discretePropertyTable of
            SCTE-HMS-PROPERTY-MIB (HMS026).

            An alarm shall be recorded as an entry in the currentAlarmTable
            of SCTE-HMS-PROPERTY-MIB (HMS026).  

            A log record shall be added as an entry in the heCommonLogTable.

            An heCommonAlarmEvent notification shall be sent."

    ::= { heOpSwitchUnitEntry 5 }

heOpSwitchBothInputStatus OBJECT-TYPE
    SYNTAX      HeFaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The integral status of both inputs. 

            A value is fault(2), if both input levels are below
            the nominal value; otherwise, it is normal(1).

            This object must provide for the alarm management capabilities
            with a corresponding entry in the discretePropertyTable of
            SCTE-HMS-PROPERTY-MIB (HMS026).

            An alarm shall be recorded as an entry in the currentAlarmTable
            of SCTE-HMS-PROPERTY-MIB (HMS026).  

            A log record shall be added as an entry in the heCommonLogTable.

            An heCommonAlarmEvent notification shall be sent."

   ::= { heOpSwitchUnitEntry 6 }

heOpSwitchSelectWavelength OBJECT-TYPE
    SYNTAX      HeHundredthNanoMeter
    UNITS       "0.01 nm"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Wavelength feeding the particular input of the optical switch.
            Typical values might be 131000 (1310 nm) and 155000 (1550 nm)."
    ::= { heOpSwitchUnitEntry 7 }

heOpSwitchHysteresis OBJECT-TYPE
    SYNTAX      HeTenthdB (-20..20)
    UNITS       "0.1 dB"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Controls switch input hysteresis amount.  The amount of hysteresis
			used and the ability to change it is to be determined by
			the vendor."
    ::= { heOpSwitchUnitEntry 8 }

heOpSwitchWaitToRestoreTime OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "1 sec"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Controls hysteresis time in sec. 

            If in automatic switching mode and revert mode is enabled,
			a switch back to the original side will be delayed for 
			the time specified by this object."
    ::= { heOpSwitchUnitEntry 9 }
	
	
	
heOpSwitchPrioChannel OBJECT-TYPE
      SYNTAX      INTEGER {
        A(1),
        B(2)

    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Set Priochannel A or B"
    ::= { heOpSwitchUnitEntry 10 }	



--      the Optical Switch Input Table
heOpSwitchInputTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HeOpSwitchInputEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table containing information about each Optical Switch 
			input used in an indoor environment."
    ::= { heOpSwitchMIBObjects 2 }

heOpSwitchInputEntry OBJECT-TYPE
    SYNTAX HeOpSwitchInputEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
            "List of information about each optical switch input."
    INDEX { entPhysicalIndex, heOpSwitchInputIndex }
        ::= { heOpSwitchInputTable 1 }

HeOpSwitchInputEntry ::= SEQUENCE
{    
    heOpSwitchInputIndex  		    Unsigned32,
    heOpSwitchInputOpticalLevel         HeTenthdBm,
    heOpSwitchSetInputPowerThreshold    HeTenthdBm,    
    heOpSwitchInputStatus	            HeFaultStatus,
    heOpSwitchInputDescription          DisplayString
}
 
heOpSwitchInputIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Index number corresponding to the Optical Input."
    ::= { heOpSwitchInputEntry 1 }
    
heOpSwitchInputOpticalLevel OBJECT-TYPE
    SYNTAX      HeTenthdBm 
    UNITS       "0.1 dBm"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The measured optical input power for the optical switch."
    ::= { heOpSwitchInputEntry 2 }

heOpSwitchSetInputPowerThreshold OBJECT-TYPE
    SYNTAX      HeTenthdBm 
    UNITS       "0.1 dBm"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Input power switchover point for this input."
    ::= { heOpSwitchInputEntry 3 }

heOpSwitchInputStatus OBJECT-TYPE
    SYNTAX      HeFaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The integral status of the input. 

            A value is fault(2), if the input levels are not in
            the nominal range; otherwise, it is normal(1).

            This object must provide for the alarm management capabilities
            with a corresponding entry in the discretePropertyTable of
            SCTE-HMS-PROPERTY-MIB (HMS026).

            An alarm shall be recorded as an entry in the currentAlarmTable
            of SCTE-HMS-PROPERTY-MIB (HMS026).  

            A log record shall be added as an entry in the heCommonLogTable.

            An heCommonAlarmEvent notification shall be sent."


    ::= { heOpSwitchInputEntry 4 }

heOpSwitchInputDescription OBJECT-TYPE
	SYNTAX          DisplayString (SIZE (0..32))
	MAX-ACCESS		read-only
	STATUS          current
	DESCRIPTION
		"A description of the switch input.  The description text is 
		to be determined by the equipment manufacturer.  For example, 
		Input A or Side B."
    ::= { heOpSwitchInputEntry 5 }


--      the Optical Switch Output Table
heOpSwitchOutputTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HeOpSwitchOutputEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table containing information about each Optical Switch 
			output used in an indoor environment."
    ::= { heOpSwitchMIBObjects 3 }

heOpSwitchOutputEntry OBJECT-TYPE
    SYNTAX 		HeOpSwitchOutputEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
            "List of information about each optical switch output."
    INDEX { entPhysicalIndex, heOpSwitchOutputIndex }
        ::= { heOpSwitchOutputTable 1 }

HeOpSwitchOutputEntry ::= SEQUENCE
{
    heOpSwitchOutputIndex  		    Unsigned32,
    heOpSwitchOutputDescription      DisplayString        
}

heOpSwitchOutputIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Index number corresponding to the Optical Output."
    ::= { heOpSwitchOutputEntry 1 }


heOpSwitchOutputDescription OBJECT-TYPE
	SYNTAX          DisplayString (SIZE (0..32))
	MAX-ACCESS		read-only
	STATUS          current
	DESCRIPTION
		"A description of the switch output.  The description text is 
		to be determined by the equipment manufacturer.  For example, 
		Output A or Secondary Output."
    ::= { heOpSwitchOutputEntry 2 }


-- conformance information
heOpSwitchMIBConformance OBJECT IDENTIFIER ::= { heOpticalSwitchMIB 2 }

heOpSwitchMIBCompliances OBJECT IDENTIFIER ::= { heOpSwitchMIBConformance 1 }

heOpSwitchMIBGroups      OBJECT IDENTIFIER ::= { heOpSwitchMIBConformance 2 }

heOpSwitchBasicCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for SNMP HMS Headend Optical 
			Switch entities which implement the SNMP 
			heOpticalSwitchMIB."
    MODULE  -- this module
        MANDATORY-GROUPS { heOpSwitchUnitMandatoryGroup,
		                   heOpSwitchInputMandatoryGroup,
						   heOpSwitchOutputMandatoryGroup

                         }

    ::= { heOpSwitchMIBCompliances 1 }

heOpSwitchUnitMandatoryGroup OBJECT-GROUP
    OBJECTS {   
				heOpSwitchMode,						
				heOpSwitchControl,                      
				heOpSwitchState,                     
				heOpSwitchFailoverStatus           
			}
    STATUS  current
    DESCRIPTION
            "The main group defines heOpSwitchUnitTable objects which 
			are mandatory to all indoor optical switch modules."
    ::= { heOpSwitchMIBGroups 1 }


heOpSwitchInputMandatoryGroup OBJECT-GROUP
    OBJECTS {   
                  heOpSwitchInputStatus,
				  heOpSwitchInputDescription
            }
    STATUS  current
    DESCRIPTION
            "The main group defines heOpSwitchInputTable objects which
			are mandatory to all indoor optical switch modules."
    ::= { heOpSwitchMIBGroups 2 }

heOpSwitchOutputMandatoryGroup OBJECT-GROUP
    OBJECTS {   
              heOpSwitchOutputDescription
            }
    STATUS  current
    DESCRIPTION
            "The main group defines heOpSwitchOutputTable objects which
			are mandatory to all indoor optical switch modules."
    ::= { heOpSwitchMIBGroups 3 }


heOpSwitchUnitGroup OBJECT-GROUP
    OBJECTS { 
				heOpSwitchRevertEnable,             
				heOpSwitchBothInputStatus,           
				heOpSwitchSelectWavelength,          
				heOpSwitchHysteresis,                
				heOpSwitchWaitToRestoreTime        
            }
    STATUS  current
    DESCRIPTION
	    "The collection of heOpSwitchUnitTable objects which are used to 
		represent the indoor optical switch module."
    ::= { heOpSwitchMIBGroups 4 }

heOpSwitchInputGroup OBJECT-GROUP
    OBJECTS { 
				heOpSwitchInputOpticalLevel,
				heOpSwitchSetInputPowerThreshold    
            }
    STATUS  current
    DESCRIPTION
	    "The collection of heOpSwitchInputTable objects which are used to 
		represent the indoor optical switch module."
    ::= { heOpSwitchMIBGroups 5 }

END
