CUBRO-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE, Gauge32,
      Integer32, enterprises                   FROM SNMPv2-SMI
      TEXTUAL-CONVENTION, DisplayString        FROM SNMPv2-TC
      OBJECT-GROUP, MODULE-COMPLIANCE          FROM SNMPv2-CONF;

   cubro-MIB MODULE-IDENTITY
      LAST-UPDATED "201610180000Z"
      ORGANIZATION "Cubro Acronet GsmbH"
      CONTACT-INFO "none"
      DESCRIPTION "none"
      REVISION "201610180000Z"
      DESCRIPTION "none"
      ::= { enterprises 32182 }

   packetmasterEX                  OBJECT IDENTIFIER ::= { cubro-MIB 1 }
   environment                     OBJECT IDENTIFIER ::= { packetmasterEX 1 }
   psu                             OBJECT IDENTIFIER ::= { environment 1 }
   temperature                     OBJECT IDENTIFIER ::= { environment 2 }
   fan                             OBJECT IDENTIFIER ::= { environment 3 }
   transceiver                     OBJECT IDENTIFIER ::= { environment 4 }

-- ENV
--- PSU
   EXPSUIndex ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS       current
       DESCRIPTION
               "A unique value, greater than zero, for each PSU
               in the managed system.  It is recommended that
               values are assigned contiguously starting from 1.
               The value for each PSU must remain constant at
               least from one reinitialization of the entity
               to the next reinitialization."
       SYNTAX       Integer32 (0..2147483647)

   psuNumber  OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The number of PSU units (regardless of their
               current state) present on this system."
       ::= { psu 1 }

   psuTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF EXPSUEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A list of PSU entries.  The number of entries
               is given by the value of psuNumber."
       ::= { psu 2 }

   psuEntry OBJECT-TYPE
       SYNTAX      EXPSUEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "An entry containing management information applicable
               to a particular PSU."
       INDEX   { psuIndex }
       ::= { psuTable 1 }

   EXPSUEntry ::=
       SEQUENCE {
           psuIndex                EXPSUIndex,
           psuPresent              DisplayString,
           psuPower                DisplayString,
           psuType                 DisplayString,
           psuAlert                DisplayString
       }

   psuIndex OBJECT-TYPE
       SYNTAX      EXPSUIndex
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A unique value, greater than zero, for each
               PSU.  It is recommended that values are assigned
               contiguously starting from 1.  The value for each
               PSU must remain constant at least from
               one re-initialization of the entity to the next
               re-initialization."
       ::= { psuEntry 1 }

   psuPresent OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information whether
               the PSU is present or not. Can be either 'PRESENT'
               or 'ABSENT'."
       ::= { psuEntry 2 }

   psuPower OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information about the
               power state of the PSU. Can be either 'OK', 'FAIL'
               or '-' (latter if the PSU is absent)."
       ::= { psuEntry 3 }

   psuType OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information about the
               type of the PSU. Can be either 'AC', 'DC' or '-'
               (if the PSU is absent or unplugged)."
       ::= { psuEntry 4 }

   psuAlert OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information if the
               PSU is in an alert state. Can be either 'NO'
               (everything is running fine) or 'ALERT' (power
               failure)."
       ::= { psuEntry 5 }

--- TEMP
-- int index, int temp, int lower alarm, int high alarm, int critical limit, str position


   EXTEMPIndex ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS       current
       DESCRIPTION
               "A unique value, greater than zero, for each
               temperature sensor in the managed system.  It is
               recommended that values are assigned contiguously
               starting from 1. The value for each temperature
               sensor must remain constant at least from one
               reinitialization of the entity to the next re-
               initialization."
       SYNTAX       Integer32 (0..2147483647)

   tempNumber  OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The number of temperature sensor units (regardless
               of their current state) present on this system."
       ::= { temperature 1 }

   tempTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF EXTEMPEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A list of temperature sensor entries. The number of
               entries is given by the value of tempNumber."
       ::= { temperature 2 }

   tempEntry OBJECT-TYPE
       SYNTAX      EXTEMPEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "An entry containing management information applicable
               to a particular temperature sensor."
       INDEX   { tempIndex }
       ::= { tempTable 1 }

   EXTEMPEntry ::=
       SEQUENCE {
           tempIndex                EXTEMPIndex,
           tempTemp                 Integer32,
           tempLowerAlarm           Integer32,
           tempHighAlarm            Integer32,
           tempCriticalLimit        Integer32,
           tempPosition             DisplayString
       }

   tempIndex OBJECT-TYPE
       SYNTAX      EXTEMPIndex
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A unique value, greater than zero, for each
               temperature sensor.  It is recommended that values
               are assigned contiguously starting from 1.  The value
               for each temperature sensor must remain constant at
               least from one reinitialization of the entity to the next
               reinitialization."
       ::= { tempEntry 1 }

   tempTemp OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The temperature reported by the temperature sensor
               in degrees Celsius."
       ::= { tempEntry 2 }

   tempLowerAlarm OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The lower alarm limit of the temperature sensor in degrees
               Celsius."
       ::= { tempEntry 3 }

   tempHighAlarm OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The high temperature alarm limit of the temperature sensor
               in degrees Celsius."
       ::= { tempEntry 4 }

   tempCriticalLimit OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The critical temperature alarm limit of the temperature sensor
               in degrees Celsius."
       ::= { tempEntry 5 }

   tempPosition OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information about the
               location of the temperature sensor in the device.
               This value can be an empty string."
       ::= { tempEntry 6 }

--- FAN
-- int index, str status, str speedrate, str mode

   EXFANIndex ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS       current
       DESCRIPTION
               "A unique value, greater than zero, for each fan unit
               in the managed system.  It is recommended that values
               are assigned contiguously starting from 1.  The value
               for each fan unit must remain constant at least from
               one reinitialization of the entity to the next
               reinitialization."
       SYNTAX       Integer32 (0..2147483647)

   fanNumber  OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The number of fan units (regardless of their
               current state) present on this system."
       ::= { fan 1 }

   fanTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF EXFANEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A list of fan unit entities.  The number of entries
               is given by the value of fanNumber."
       ::= { fan 2 }

   fanEntry OBJECT-TYPE
       SYNTAX      EXFANEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "An entry containing management information applicable
               to a particular fan unit."
       INDEX   { fanIndex }
       ::= { fanTable 1 }

   EXFANEntry ::=
       SEQUENCE {
           fanIndex                 EXFANIndex,
           fanStatus                DisplayString,
           fanSpeedRate             Gauge32,
           fanMode                  DisplayString
       }

   fanIndex OBJECT-TYPE
       SYNTAX      EXFANIndex
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A unique value, greater than zero, for each
               fan unit.  It is recommended that values are assigned
               contiguously starting from 1.  The value for each
               fan unit must remain constant at least from
               one reinitialization of the entity to the next
               reinitialization."
       ::= { fanEntry 1 }

   fanStatus OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information about the
               fan unit's status."
       ::= { fanEntry 2 }

   fanSpeedRate OBJECT-TYPE
       SYNTAX      Gauge32 (0..100)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "Contains the speed rate of the fan in percent."
       ::= { fanEntry 3 }

   fanMode OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing information about the
               fan's run mode."
       ::= { fanEntry 4 }

-- Transceiver
--- int.2 transceiverIndex,
--- int.2 transmitPower, int.2 transmitHighAlarm, int.2 transmitHighWarn, int.2 transmitLowWarn, int.2 transmitLowAlarm, 
--- int.2 receivePower, int.2 receiveHighAlarm, int.2 receiveHighWarn, int.2 receiveLowWarn, int.2 receiveLowAlarm

   EXTransceiverIndex ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d-1"
       STATUS       current
       DESCRIPTION
               "A unique value, greater than zero, for each
               SFP/SFP+/QSFP/... module.  The value is the
               module's port number times 10 plus the subport-
               number on split ports. So port 5 would be 50 and
               port 42/3 would be 423. The value for each
               module must remain constant at least from
               one reinitialization of the entity to the next
               reinitialization."
       SYNTAX       Integer32 (0..2147483647)

   transceiverNumber  OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The number of SFP/SFP+/QSFP/... modules
               (regardless of their current state) present
               on this system."
       ::= { transceiver 1 }

   transceiverTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF EXTransceiverEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A list of SFP/SFP+/QSFP/... module entities.
               The number of entries is given by the value
               of fanNumber."
       ::= { transceiver 2 }

   transceiverEntry OBJECT-TYPE
       SYNTAX      EXTransceiverEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "An entry containing management information applicable
               to a particular SFP/SFP+/QSFP/... module."
       INDEX   { transIndex }
       ::= { transceiverTable 1 }

   EXTransceiverEntry ::=
       SEQUENCE {
           transIndex                    EXTransceiverIndex,
           transName                     DisplayString,
           transDiagnosticImplemented    INTEGER,
           transOpticalTransmitPower     DisplayString,
           transOpticalTransmitHighAlarm DisplayString,
           transOpticalTransmitHighWarn  DisplayString,
           transOpticalTransmitLowWarn   DisplayString,
           transOpticalTransmitLowAlarm  DisplayString,
           transOpticalReceivePower      DisplayString,
           transOpticalReceiveHighAlarm  DisplayString,
           transOpticalReceiveHighWarn   DisplayString,
           transOpticalReceiveLowWarn    DisplayString,
           transOpticalReceiveLowAlarm   DisplayString
       }

   transIndex OBJECT-TYPE
       SYNTAX      EXTransceiverIndex
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "A unique value, greater than zero, for each
               SFP/SFP+/QSFP/... module.  The value is the
               module's port number times 10 plus the subport-
               number on split ports. So port 5 would be 50 and
               port 42/3 would be 423. The value for each
               module must remain constant at least from
               one reinitialization of the entity to the next
               reinitialization."
       ::= { transceiverEntry 1 }

   transName OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "A textual string containing the port name of the
               SFP/SFP+/QSFP/... module."
       ::= { transceiverEntry 2 }

   transDiagnosticImplemented OBJECT-TYPE
       SYNTAX      INTEGER {
                      true(1),
                      false(2)
                  }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value is true(1) if the SFP/SFP+/QSFP/... module
               implements diagnostics or false(2) if not. If false(2),
               all the following values are invalid."
       ::= { transceiverEntry 3 }

   transOpticalTransmitPower OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical transmission power
               as a decimal stringified value with two decimal points.
               Can also be 'nan' if the sensor does not report a valid
               value."
       ::= { transceiverEntry 4 }

   transOpticalTransmitHighAlarm OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical transmission power's
               high alarm value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 5 }

   transOpticalTransmitHighWarn OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical transmission power's
               high warn value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 6 }

   transOpticalTransmitLowWarn OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical transmission power's
               low warn value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 7 }

   transOpticalTransmitLowAlarm OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical transmission power's
               low alarm value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 8 }


   transOpticalReceivePower OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical receive power
               as a decimal stringified value with two decimal points.
               Can also be 'nan' if the sensor does not report a valid
               value."
       ::= { transceiverEntry 9 }

   transOpticalReceiveHighAlarm OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical receive power's
               high alarm value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 10 }

   transOpticalReceiveHighWarn OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical receive power's
               high warn value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 11 }

   transOpticalReceiveLowWarn OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical receive power's
               low warn value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 12 }

   transOpticalReceiveLowAlarm OBJECT-TYPE
       SYNTAX      DisplayString (SIZE (0..255))
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "This value contains the optical receive power's
               low alarm value as a decimal stringified value with
               two decimal points. Can also be 'nan' if the sensor
               does not report a valid value."
       ::= { transceiverEntry 13 }


-- conformance information

   envConformance OBJECT IDENTIFIER ::= { environment 10 }
   envGroups      OBJECT IDENTIFIER ::= { envConformance 1 }
   envCompliances OBJECT IDENTIFIER ::= { envConformance 2 }

-- compliance statements

   envCompliance MODULE-COMPLIANCE
       STATUS  current
       DESCRIPTION
               "The compliance statement for Packetmaster EX environment
                sensors."

       MODULE  -- this module
           MANDATORY-GROUPS { envTempGroup }
   
           GROUP       envPSUGroup
           DESCRIPTION
               "This group is not mandatory."

           GROUP       envTempGroup
           DESCRIPTION
               "This group is not mandatory."

           GROUP       envFanGroup
           DESCRIPTION
               "This group is mandatory for temperature
                sensors in the device."

           GROUP       transmitterGroup
           DESCRIPTION
               "This group is not mandatory."

       ::= { envCompliances 1 }

-- units of conformance
   envPSUGroup    OBJECT-GROUP
      OBJECTS { psuNumber, psuPresent, psuPower, psuType, psuAlert }
      STATUS  current
      DESCRIPTION
              "A collection of objects providing information on the
              presence and status of PSU units."
      ::= { envGroups 1 }

   envTempGroup    OBJECT-GROUP
      OBJECTS { tempNumber, tempTemp, tempLowerAlarm, tempHighAlarm, tempCriticalLimit, tempPosition }
      STATUS  current
      DESCRIPTION
              "A collection of objects providing information on the
              status of temperature sensors."
      ::= { envGroups 2 }

   envFanGroup    OBJECT-GROUP
      OBJECTS { fanNumber, fanStatus, fanSpeedRate, fanMode }
      STATUS  current
      DESCRIPTION
              "A collection of objects providing information on the
              status of fan units."
      ::= { envGroups 3 }

   transmitterGroup    OBJECT-GROUP
      OBJECTS { transceiverNumber,
                transName,
                transDiagnosticImplemented,
                transOpticalTransmitPower,
                transOpticalTransmitHighAlarm,
                transOpticalTransmitHighWarn,
                transOpticalTransmitLowWarn,
                transOpticalTransmitLowAlarm,
                transOpticalReceivePower,
                transOpticalReceiveHighAlarm,
                transOpticalReceiveHighWarn,
                transOpticalReceiveLowWarn,
                transOpticalReceiveLowAlarm
              }
      STATUS  current
      DESCRIPTION
              "A collection of objects providing information on the
              status of SFPs."
      ::= { envGroups 4 }
END