-- ****************************************************************************
-- Copyright (c) 2019 :
-- Westermo Network Technologies AB
-- 640 40 Stora Sundby
-- Sweden
-- url: http://www.westermo.com
--
-- Contact:  support@westermo.se
-- Description: Westermo Common EVENT MIB-file
--
-- ****************************************************************************

WESTERMO-EVENT-MIB DEFINITIONS ::= BEGIN

IMPORTS

    Integer32,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    MODULE-IDENTITY
    FROM SNMPv2-SMI

    MODULE-COMPLIANCE,
    OBJECT-GROUP,
    NOTIFICATION-GROUP
    FROM SNMPv2-CONF

    entPhysicalName
    FROM ENTITY-MIB

    entPhySensorValue,
    entPhySensorType,
    entPhySensorScale,
    entPhySensorPrecision
    FROM ENTITY-SENSOR-MIB

    common
    FROM WESTERMO-OID-MIB
    ;

-- module

event MODULE-IDENTITY
    LAST-UPDATED "201909030000Z"
    ORGANIZATION "Westermo"
    CONTACT-INFO
    "Copyright (c) 2019:
    Westermo Network Technologies AB
    640 40 Stora Sundby
    Sweden
    url: http://www.westermo.com

    Contact:  support@westermo.se
    Description: Westermo Common EVENT MIB-file"

    DESCRIPTION
    "Westermo Common EVENT MIB-file."

    REVISION "201909030000Z"
    DESCRIPTION
    "Initial revision."

::= { common 3 }


-- ---------------------------------------------------------- --
-- subtrees in the WESTERMO-EVENT-MIB
-- ---------------------------------------------------------- --
-- ---------------------------------------------------------- --
-- Node top definitions
-- ---------------------------------------------------------- --

eventStatus		        OBJECT IDENTIFIER ::= { event 1 }
eventConfig 		    OBJECT IDENTIFIER ::= { event 2 }
eventNotifications	    OBJECT IDENTIFIER ::= { event 3 }
eventConformance        OBJECT IDENTIFIER ::= { event 4 }

pingNotifications       OBJECT IDENTIFIER ::= { eventNotifications 2 }
pingNotificationPrefix  OBJECT IDENTIFIER ::= { pingNotifications 0 }

powerNotifications      OBJECT IDENTIFIER ::= { eventNotifications 3 }
powerNotificationPrefix OBJECT IDENTIFIER ::= { powerNotifications 0 }

temperatureNotifications
                        OBJECT IDENTIFIER ::= { eventNotifications 4 }
temperatureNotificationPrefix 
                        OBJECT IDENTIFIER ::= { temperatureNotifications 0 }

-- ---------------------------------------------------------- --
-- the eventStatusTable
-- ---------------------------------------------------------- --

eventStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EventStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
    "Table containing a list of event trigger id's."
::= { eventStatus 1 }

eventStatusEntry OBJECT-TYPE
    SYNTAX      EventStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
    "The row containing information for a specific event trigger"
    INDEX        { eventStatusTriggerId }
::= { eventStatusTable 1 }

EventStatusEntry ::=
    SEQUENCE {
        eventStatusTriggerId Integer32
    }

eventStatusTriggerId OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
    "Event trigger id"
::= { eventStatusEntry 1 }

-- ---------------------------------------------------------- --
-- Notifications
-- ---------------------------------------------------------- --

-- ---------------------------------------------------------- --
-- Ping notification
-- ---------------------------------------------------------- --

pingNotificationOK NOTIFICATION-TYPE
    OBJECTS     { eventStatusTriggerId }
    STATUS      current
    DESCRIPTION
    "Notification associated with eventStatusTriggerId"
::= { pingNotificationPrefix 1 }

pingNotificationWarning NOTIFICATION-TYPE
    OBJECTS     { eventStatusTriggerId }
    STATUS      current
    DESCRIPTION
    "Notification associated with eventStatusTriggerId"
::= { pingNotificationPrefix 2 }

-- ---------------------------------------------------------- --
-- Power notification
-- ---------------------------------------------------------- --

powerSupplyHigh NOTIFICATION-TYPE
    OBJECTS     { entPhysicalName, entPhySensorValue }
    STATUS      current
    DESCRIPTION
    "Notification associated with power sensor state."
::= { powerNotificationPrefix 1 }

powerSupplyLow NOTIFICATION-TYPE
    OBJECTS     { entPhysicalName, entPhySensorValue }
    STATUS      current
    DESCRIPTION
    "Notification associated with power sensor state."
::= { powerNotificationPrefix 2 }

-- ---------------------------------------------------------- --
-- Temperature notification
-- ---------------------------------------------------------- --

temperatureHigh NOTIFICATION-TYPE
    OBJECTS     { 
        entPhysicalName, 
        entPhySensorValue, 
        entPhySensorScale, 
        entPhySensorPrecision
    }
    STATUS      current
    DESCRIPTION 
    "Notification associated with temperature sensor state."
::= { temperatureNotificationPrefix 1 }

temperatureLow NOTIFICATION-TYPE
    OBJECTS     { 
        entPhysicalName, 
        entPhySensorValue, 
        entPhySensorScale, 
        entPhySensorPrecision
    }
    STATUS      current
    DESCRIPTION 
    "Notification associated with temperature sensor state."
::= { temperatureNotificationPrefix 2 }

-- ---------------------------------------------------------- --
-- Event conformance information
-- ---------------------------------------------------------- --

eventGroups      OBJECT IDENTIFIER ::= { eventConformance 1 }
eventCompliances OBJECT IDENTIFIER ::= { eventConformance 2 }

-- ---------------------------------------------------------- --
-- Units of conformance
-- ---------------------------------------------------------- --

eventStatusGroup OBJECT-GROUP
    OBJECTS {
        eventStatusTriggerId
    }
    STATUS current
    DESCRIPTION
   "Event status group."
::= { eventGroups 1 }

pingStatusGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        pingNotificationOK,
        pingNotificationWarning
    }
    STATUS  current
    DESCRIPTION
   "Ping status group."
::= { eventGroups 2 }

powerStatusGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        powerSupplyHigh,
        powerSupplyLow
    }
    STATUS  current
    DESCRIPTION
   "Power status group."
::= { eventGroups 3 }

temperatureStatusGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        temperatureHigh,
        temperatureLow
    }
    STATUS  current
    DESCRIPTION
   "Temperature status group."
::= { eventGroups 4 }

-- ---------------------------------------------------------- --
-- Compliance statements
-- ---------------------------------------------------------- --

eventCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
    "The compliance statement for SNMP entities that implement
    the Westermo Event MIB."
    MODULE
    MANDATORY-GROUPS {
        eventStatusGroup,
        pingStatusGroup,
        powerStatusGroup, 
        temperatureStatusGroup
    }
    ::= { eventCompliances 1 }

END
