-- Module Name: HMS026R16.MIB (SCTE 38-1)

SCTE-HMS-PROPERTY-MIB DEFINITIONS ::= BEGIN

IMPORTS
     Integer32, MODULE-IDENTITY, OBJECT-TYPE
          FROM SNMPv2-SMI
     OBJECT-GROUP, MODULE-COMPLIANCE
          FROM SNMPv2-CONF
     propertyIdent
          FROM SCTE-HMS-ROOTS;  -- see HMS072

propertyModuleIdentity MODULE-IDENTITY
     LAST-UPDATED "200403290000Z"  -- March 29, 2004
     ORGANIZATION "SCTE HMS Working Group"
     CONTACT-INFO 
          "Hung Nguyen, 
          SCTE HMS Subcommittee, Chairman
          Time Warner Cable
          mailto:standards@scte.org"
     DESCRIPTION 
          "This MIB contains information that must be supported by all HMS
          network elements, including but not limited to, transponders, 
          line monitors, amplifiers, fiber nodes, and power supplies.

          The Property MIB defines the 'properties' that may be associated with 
          each parameter. This MIB is defined so that these 'properties' may be 
          applied to any parameter, because the index to the MIB is the object 
          identifier of the parameter.  The purpose of a 'property' is to provide 
          a mechanism to manage alarm thresholds. It is not the responsibility of 
          the transponder to check for violation of the above recommendations. 
          The element manager is responsible for checking alarm limit values.

          Entries in the property table are specifically for 'analog' parameters.  
          The discrete property table is used to monitor other parameters.

          Each property entry has four alarm threshold levels that may be established. 
          These are:

          LOLO                  Alarm threshold for the extreme low condition.
          LO                    Alarm threshold for the low condition.
          HI                    Alarm threshold for the high condition.
          HIHI                  Alarm threshold for the extreme high condition.

          In addition, there is a 'Deadband' setting which applies to all alarm thresholds.
          After an alarm occurs, the parameter value must pass back over the alarm threshold 
          by this amount for the alarm condition to be cleared. This Deadband is smaller than
          the distance between any two alarm thresholds to avoid indeterminate states.

          Alarm detection for each threshold is controlled by a specific bit in the alarmEnable 
          variable for the entry.  Alarm detection is active when the corresponding bit in 
          alarmEnable is enabled.

          When an alarm condition is detected, in either the propertyTable or the discretePropertyTable,
          an entry is created in the alarm log ( see HMS023Rx.MIB ) and an alarmEvent SNMP trap sent 
          by the transponder/agent.

          NOTE
          Parameters which do not 'exist' must NOT have properties that are accessible.  For example, in
          the HMS027 MIB (SCTE 38-4), the MIB object psOutputPowerSupport indicates whether or not the
          power supply supports the psPowerOut object.  If the psPowerOut object is NOT supported, then
          the properties normally associated with the psPowerOut object must not be accessible.

          Some devices only require 16 bit integer or smaller and therefore only support 16 bit (or smaller)
          values.  Values outside of the supported range will return a bad value error.
     "
    
    REVISION "200403290000Z"  -- March 29, 2004
     DESCRIPTION 
          "
          1. SCTE-HMS-PROPERTY-MIB  MIB module converted to SMIv2 syntax so
          as to define MODULE-COMPLIANCE groups. These groups need to be referred
          to by other MIB modules such as those defined by HMS Indoor Optics.
          The publishing of this MIB in SMIv2 does not imply the agent implementation
          must use a particular version of SNMP (the SNMP agent could communicate
          using SNMPv1, v2c or v3).    
          
          2. Clarification made in the DESCRIPTION clause on usage of the MIB 
          variable currentAlarmOID.
                                        
          This version published as 'HMS026R16.mib'  (SCTE 38-1)  
          This version obsoletes 'HMS026R14.mib' .       
"

::= { propertyIdent 4 }

propertyMIBConformance  OBJECT IDENTIFIER ::= { propertyModuleIdentity 1 }
propertyMIBCompliances  OBJECT IDENTIFIER ::= { propertyMIBConformance 1 }
propertyMIBGroups    OBJECT IDENTIFIER ::= { propertyMIBConformance 2 }

propertyTable  OBJECT-TYPE
     SYNTAX SEQUENCE OF PropertyEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION 
          "A table that contains information about NE parameter properties."
     ::= { propertyIdent 1 }

propertyEntry  OBJECT-TYPE
     SYNTAX      PropertyEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION 
          "A list of information about each property.
          
           The OID suffix for an entry in this table is constructed by
           appending the length of parameterOID and then the components 
           of parameterOID to identify an instance.
          
           The first two components of parameterOID will generally be
           1.3 which will be encoded separately as 1 and 3, not as a
           single value of 43 (decimal). When parameterOID identifies
           a scalar object, it is expected that the final suffix of .0
           will be included.
          
           If parameterOID was 1.3.5.0, then 4.1.3.5.0 are the resulting
           components of the OID suffix."
     INDEX { parameterOID }
     ::= { propertyTable 1 }

PropertyEntry ::= SEQUENCE {
     parameterOID
          OBJECT IDENTIFIER,
     alarmEnable
          OCTET STRING,
     currentAlarmState
          INTEGER,
     analogAlarmHIHI
          Integer32,
     analogAlarmHI
          Integer32,
     analogAlarmLO
          Integer32,
     analogAlarmLOLO
          Integer32,
     analogAlarmDeadband
          Integer32
}

parameterOID  OBJECT-TYPE
     SYNTAX     OBJECT IDENTIFIER
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "Index into propertyTable.  This is the OID of the parameter
           whose property is being accessed.
                              
           Example:  OID of power supply the first instance of the
           psInputVoltage is  1.3.6.1.4.1.5591.1.4.2.1.23.1"
     ::= { propertyEntry 1 }

alarmEnable  OBJECT-TYPE
     SYNTAX     OCTET STRING (SIZE(1))
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "Alarm enable bit mask.  A 1 in a bit position indicates the alarm
           is enabled.
           Bit 0 = LOLO   (Major alarm)
           Bit 1 = LO     (Minor alarm)
           Bit 2 = HI     (Minor alarm)
           Bit 3 = HIHI   (Major alarm)
           Bit 4 = Unused, must be zero
           Bit 5 = Unused, must be zero
           Bit 6 = Unused, must be zero
           Bit 7 = Unused, must be zero
                            
           This object should be kept in NV memory"
     ::= { propertyEntry 2 }

currentAlarmState  OBJECT-TYPE
     SYNTAX     INTEGER {
          casNominal (1),
          casHIHI (2),
          casHI (3),
          casLO (4),
          casLOLO (5)
     }
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "The object contains the current alarm status associated with this property entry."
     ::= { propertyEntry 3 }

analogAlarmHIHI  OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "The HIHI (Major alarm) alarm occurs at this value. The unit associated with
           this property is the same as that of the parameter addressed.
           This object should be kept in NV memory.
           
           Some devices only require 16 bit integer or smaller and therefore only support
           16 bit (or smaller) values.  Values outside of the supported range will return
           a bad value error."
     ::= { propertyEntry 4 }

analogAlarmHI  OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "The HI (Minor alarm)alarm occurs at this value. The unit associated with
           this property is the same as that of the parameter addressed.
           This object should be kept in NV memory.
           
           Some devices only require 16 bit integer or smaller and therefore only support
           16 bit (or smaller) values.  Values outside of the supported range will return
           a bad value error."
     ::= { propertyEntry 5 }

analogAlarmLO  OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "The LO (Minor alarm) alarm occurs at this value. The unit associated with
           this property is the same as that of the parameter addressed.
           This object should be kept in NV memory.
           
           Some devices only require 16 bit integer or smaller and therefore only support
           16 bit (or smaller) values.  Values outside of the supported range will return
           a bad value error."
     ::= { propertyEntry 6 }

analogAlarmLOLO  OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "The LOLO (Major alarm)alarm occurs at this value. The unit associated with
           this property is the same as that of the parameter addressed.
           This object should be kept in NV memory.
           
           Some devices only require 16 bit integer or smaller and therefore only support
           16 bit (or smaller) values.  Values outside of the supported range will return
           a bad value error."
     ::= { propertyEntry 7 }

analogAlarmDeadband  OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "Deadband for prevention of alarm oscillation.  An alarm does
           not return to normal until the value either
           (a) passes the original threshold by this amount in
           the opposite direction of the alarm, or
           (b) alarm is disabled. 
           This item should be an unsigned integer.
           This property is in the same engineering units as the parameter for which it belongs.
           This object should be kept in NV memory.
           
           Some devices only require 16 bit integer or smaller and therefore only support
           16 bit (or smaller) values.  Values outside of the supported range will return
           a bad value error."
     ::= { propertyEntry 9 }

-- The following table contains zero or more entries which are the
-- alarms that are currently "active" for a NE.
-- The motivation behind the table is to minimize the number of
-- transactions between a management application and a NE to retrieve
-- it's current alarm state.  Current alarm information is available in
-- the propertyTable, however there is a probability in the nominal case
-- that few alarms will be active at any given moment in time.  Given that
-- the propertyTable is of fixed length, iteration through an NE's entire
-- table is required to confirm this.  Since this table only contains
-- entries corresponding to those entries in the property which have
-- active alarms, the table is usually empty.
-- It is suggested that a management application use an iterative
-- algorithm, employing GET-NEXT to retrieve information from this table.
-- The algorithm starts with the object identifier, currentAlarmTable, without
-- an index specification. The iteration continues until an object value is
-- returned which is not a member of the table.
-- This should usually occur immediately.  If any alarms
-- are active, then values are returned for only those properties which have
-- alarms active. 

currentAlarmTable  OBJECT-TYPE
     SYNTAX SEQUENCE OF CurrentAlarmEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION 
          "A table that contains information about NE parameter properties
           that have alarms currently active."
     ::= { propertyIdent 2 }

currentAlarmEntry  OBJECT-TYPE
     SYNTAX      CurrentAlarmEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION 
          "A list of information about each property with an alarm that is
           currently active.
          
           The OID suffix for an entry in this table is constructed by
           appending the length of currentAlarmOID and then the components 
           of currentAlarmOID to identify an instance.
          
           The first two components of currentAlarmOID will generally be
           1.3 which will be encoded separately as 1 and 3, not as a
           single value of 43 (decimal). When currentAlarmOID identifies
           a scalar object, it is expected that the final suffix of .0
           will be included.
          
           If currentAlarmOID was 1.3.5.0, then 4.1.3.5.0 are the resulting
           components of the OID suffix."
     INDEX { currentAlarmOID }
     ::= { currentAlarmTable 1 }

CurrentAlarmEntry ::= SEQUENCE {
     currentAlarmOID
          OBJECT IDENTIFIER,
     currentAlarmAlarmState
          INTEGER,
     currentAlarmAlarmValue
          Integer32
}

currentAlarmOID  OBJECT-TYPE
     SYNTAX     OBJECT IDENTIFIER
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
            "This is the OID of the alarmed object whose current value makes 
            an alarm active.  

            In the case of the alarmed analog object, the value of
            this object is equal to the value of the index parameterOID
            of the propertyTable.

            In the case of the alarmed discrete object, the value of
            this object is equal to the value of the index discreteParameterOID
            of the discretePropertyTable.

            Please note that in the case of the alarmed discrete object,
            the value of this object is not equal to the identity part of
            the OID of the instances in the corresponding row of
            the discretePropertyTable.


            Example 1. Object commonInternalTemperature (HMS024).

            If object commonInternalTemperature has a major alarm for
            a HIHI threshold value of 100 degrees Celsius defined in
            the propertyTable, and this alarm occurs then:

            (1) 'currentAlarmOID.12.commonInternalTemperature.0'
                instance will have the value 'commonInternalTemperature.0';

            (2) 'currentAlarmAlarmState.12.commonInternalTemperature.0'
                instance will have the value caasHIHI(2);

            (3) 'currentAlarmAlarmValue.12.commonInternalTemperature.0'
                instance will have the value 100. 

            Notice the presence of 12 in the OIDs of the instances
            above. Number 12 is the length of the 'commonInternalTemperature.0'
            OID, which is '1.3.6.1.4.1.5591.1.3.1.13.0'.


            Example 2. Object fnOpticalReceiverABSwitchState (HMS025).

            If object 'fnOpticalReceiverABSwitchState.1', which is the first
            instance of A/B switch in a fiber node, has a major alarm for
            a value pathB(2) defined in the discretePropertyTable, and this
            alarm occurs then:

            (1) 'currentAlarmOID.13.fnOpticalReceiverABSwitchState.1' instance
                will have the value 'fnOpticalReceiverABSwitchState.1'; 

            (2) 'currentAlarmAlarmState.13.fnOpticalReceiverABSwitchState.1'
                instance will have the value caasDiscreteMajor(6);

            (3) 'currentAlarmAlarmValue.13.fnOpticalReceiverABSwitchState.1'
                instance will have the value pathB(2).

            Notice the presence of 13 in the OIDs of the instances above. 
            Number 13 is the length of the 'fnOpticalReceiverABSwitchState.1'
            OID, which is '1.3.6.1.4.1.5591.1.5.13.1.4.1'.


            Example 3. Object heCommonTemperature (HMS111).

            If object 'commonInternalTemperature.1' has a major alarm for
            a HIHI threshold value of 60 degrees Celsius defined in
            the propertyTable, and this alarm occurs then:

            (1) 'currentAlarmOID.18.heCommonTemperature.1'
                instance will have the value 'heCommonTemperature.1';

            (2) 'currentAlarmAlarmState.18.heCommonTemperature.1'
                instance will have the value caasHIHI(2);

            (3) 'currentAlarmAlarmValue.18.heCommonTemperature.1'
                instance will have the value 600. 

            Notice the presence of 18 in the OIDs of the instances
            above. Number 18 is the length of the 'heCommonTemperature.1'
            OID, which is '1.3.6.1.4.1.5591.1.11.2.1.1.1.1.1.1.2.1'.


            Example 4. Object heOpTxLaserOutputStatus (HMS112).

            If object 'heOpTxLaserOutputStatus.1.2', which is the second laser
            instance in the first instance of the headend optical transmitter,
            has a major alarm for a value off(1) defined in
            the discretePropertyTable, and this alarm occurs then:

            (1) 'currentAlarmOID.18.heOpTxLaserOutputStatus.1.2' instance
                will have the value 'heOpTxLaserOutputStatus.1.2'; 

            (2) 'currentAlarmAlarmState.18.heOpTxLaserOutputStatus.1.2'
                instance will have the value caasDiscreteMajor(6);

            (3) 'currentAlarmAlarmValue.18.heOpTxLaserOutputStatus.1.2'
                instance will have the value off(1).

            Notice the presence of 18 in the OIDs of the instances above. 
            Number 18 is the length of the 'heOpTxLaserOutputStatus.2'
            OID, which is '1.3.6.1.4.1.5591.1.11.1.1.1.1.3.1.8.1.2'.
            "
     ::= { currentAlarmEntry 1 }

currentAlarmAlarmState  OBJECT-TYPE
     SYNTAX     INTEGER {
          caasHIHI (2),
          caasHI (3),
          caasLO (4),
          caasLOLO (5),
          caasDiscreteMajor (6),
          caasDiscreteMinor (7)
     }
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "The object contains the current alarm state of the associated
           property entry."
     ::= { currentAlarmEntry 2 }

currentAlarmAlarmValue  OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "Value that caused this alarm.

          Some devices only require 16 bit integer or smaller and therefore only support 16 bit (or smaller)
          values."
     ::= { currentAlarmEntry 3 }

-- * The discrete property table contains information that must be supported by all OSP
-- * network elements, including transponders, line monitors, amplifiers
-- * fiber nodes, batteries, ....  It provides the possibility to define
-- * and enable alarms for the network element.
-- *
-- * Usage of this table:
-- *
-- *   The table has a fixed number of rows (defined at design-time).  All variables in
-- *   the HMS MIBs that need properties with discrete alarms have at least one entry
-- *   in the table defined in this table.  Only discrete variables can have an one entry.
-- *
-- *   The table has 2 indices.  The first one is the OID of the parameter for which
-- *   a property has to be set.  The second one is discreteAlarmValue. The column discreteAlarmState 
-- *   has to be used.
-- *
-- *   Example:
-- *     - Variable: psInverterStatus.1
-- *     - Alarms:   testStarted(4), testFailed(5)
-- *     - Two rows will be present in the table:
-- *        +=====================+===================+===================+===================+
-- *        |discreteParameterOID |discreteAlarmValue |discreteAlarmEnable|discreteAlarmState |
-- *        +=====================+===================+===================+===================+
-- *        |psInverterStatus.1   |         4         |     01h/02h       |      01h/06h      |
-- *        |psInverterStatus.1   |         5         |     01h/02h       |      01h/06h      |
-- *        +=====================+===================+===================+===================+
-- *
-- * - To enable or disable certain alarms, the correct bits have to be set in alarmEnable.

discretePropertyTable  OBJECT-TYPE
     SYNTAX SEQUENCE OF DiscretePropertyEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION 
          "A table that contains information about NE parameter properties."
     ::= { propertyIdent 3 }

discretePropertyEntry  OBJECT-TYPE
     SYNTAX      DiscretePropertyEntry
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION 
          "A list of information about each property.
          
           The OID suffix for an entry in this table is constructed by
           appending the length of discreteParameterOID and then the components 
           of discreteParameterOID to identify an instance.
          
           The first two components of discreteParameterOID will generally be
           1.3 which will be encoded separately as 1 and 3, not as a
           single value of 43 (decimal). When discreteParameterOID identifies
           a scalar object, it is expected that the final suffix of .0
           will be included.
          
           If discreteParameterOID was 1.3.5.0, then 4.1.3.5.0 are the resulting
           components of the OID suffix."
     INDEX { discreteParameterOID, 
          discreteAlarmValue }
     ::= { discretePropertyTable 1 }

DiscretePropertyEntry ::= SEQUENCE {
     discreteParameterOID
          OBJECT IDENTIFIER,
     discreteAlarmValue
          Integer32,
     discreteAlarmEnable
          INTEGER,
     discreteAlarmState
          INTEGER
}

discreteParameterOID  OBJECT-TYPE
     SYNTAX     OBJECT IDENTIFIER
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "First index into discretePropertyTable.  This is the OID of the parameter
           whose property is being accessed.
                                                                               
           Example:  OID of psTamper for power supply 1 is 1.3.6.1.4.1.5591.1.4.2.1.27.1"
     ::= { discretePropertyEntry 1 }

discreteAlarmValue  OBJECT-TYPE
     SYNTAX     Integer32 (0..2147483647) -- has to be a non-negative number
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "Second index into the discretePropertyTable.  
           When the parameter, specified by discreteParameterOID has this value,
           an alarm will occur.

          Some devices only require 16 bit integer or smaller and therefore only support 16 bit (or smaller)
          values."
     ::= { discretePropertyEntry 2 }

discreteAlarmEnable  OBJECT-TYPE
     SYNTAX     INTEGER {
          disable (1),
          enableMajor (2),
          enableMinor (3)
     }
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION 
          "When set to enable(2 or 3), alarm processing for this property is enabled.  When set to
           disable(1), alarm processing for this property is disabled.  No entries into the
           alarmLogTable nor traps are permitted due to this property when in the disable(1)
           state.  The default state for this object is disable(1).
           This object should be kept in NV memory"
     ::= { discretePropertyEntry 3 }

discreteAlarmState  OBJECT-TYPE
     SYNTAX     INTEGER {
          dasNominal (1),
          dasDiscreteMajor (6),
          dasDiscreteMinor (7)
     }
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION 
          "This object contains the current alarm state for this discrete property entry."
     ::= { discretePropertyEntry 4 }

propertyMIBCompliance  MODULE-COMPLIANCE
     STATUS     current
     DESCRIPTION 
          "The compliance statement for HMS entities which 
          implement the SCTE HMS Property MIB."
     MODULE
          MANDATORY-GROUPS { analogAlarmsGroup,
                                    currentAlarmsGroup,
                                 discreteAlarmsGroup } 
     ::= { propertyMIBCompliances 1 }

analogAlarmsGroup  OBJECT-GROUP
     OBJECTS { 
          parameterOID, 
          alarmEnable, 
          currentAlarmState, 
          analogAlarmHIHI, 
          analogAlarmHI, 
          analogAlarmLO, 
          analogAlarmLOLO, 
          analogAlarmDeadband
     }
     STATUS     current
     DESCRIPTION 
          "The analog alarms group defines objects which represent alarm information
          for alarmable analog variables in an optical module."
     ::= { propertyMIBGroups 1 }

discreteAlarmsGroup  OBJECT-GROUP
     OBJECTS { discreteParameterOID, 
                 discreteAlarmValue, 
                 discreteAlarmEnable, 
                 discreteAlarmState }
     STATUS     current
     DESCRIPTION 
          "The discrete alarms group defines objects which represent alarm information
          for alarmable discrete variables in an optical module."
     ::= { propertyMIBGroups 2 }

currentAlarmsGroup  OBJECT-GROUP
     OBJECTS { currentAlarmAlarmState, 
                 currentAlarmAlarmValue, 
                 currentAlarmOID }
     STATUS     current
     DESCRIPTION 
          "The current alarms group defines objects which represent a list of
          active alarms present in an optical module."
     ::= { propertyMIBGroups 3 }

END