-- ***************************************************************************
-- *
-- * Copyright (c) 2000-2002 NuDesign Team, Inc. All Rights Reserved.
-- *
-- * Module Name:  ND-GARAGE-MIB
-- *
-- * Description:  Defines objects for managing garage for motor vehicles  
-- * 
-- ***************************************************************************

ND-GARAGE-MIB DEFINITIONS ::= BEGIN

IMPORTS
	NOTIFICATION-TYPE, OBJECT-TYPE, MODULE-IDENTITY, 
	enterprises
		FROM SNMPv2-SMI
	NOTIFICATION-GROUP, OBJECT-GROUP, MODULE-COMPLIANCE
		FROM SNMPv2-CONF
	RowStatus, DisplayString
		FROM SNMPv2-TC;

garage MODULE-IDENTITY
	LAST-UPDATED "200210110900Z"   -- Oct 11, 2002, 09:00    
	ORGANIZATION 
		"NuDesign Team Inc."
	CONTACT-INFO 
		"NuDesign Team, Inc.
		 Web site: www.NuDesignTeam.com
		 Email:    contact@NuDesignTeam.com"
	DESCRIPTION 
		"The MIB module for managing car garage."

	REVISION    "200210110900Z"   -- Oct 11, 2002, 09:00  
	DESCRIPTION 
		"Added objects garageCOLevel, garageCOLevelRisingThreshold and 
		       garageCOLevelFallingThreshold and notifications 
		       coLevelRisingAlarm and coLevelFallingAlarm.
		 Updated notif-groups and compliance. bl" 

	REVISION     "200201171512Z"   -- Jan 17, 2002, 15:12
	DESCRIPTION 
		"Modified the access of vehicleModel to ReadCreate. sh"

    REVISION     "200103210000Z"   -- Mar 21, 2001, midnight
	DESCRIPTION 
		"Addedd notifications and conformance statements. bl"

    REVISION     "200005010000Z"   -- May 01, 2000, midnight
    DESCRIPTION  "Initial version. bl"

::= { ndtExperimental 11 }

nuDesignTeam       OBJECT IDENTIFIER ::= { enterprises 4761 }
ndtExperimental    OBJECT IDENTIFIER ::= { nuDesignTeam  99 }
garageObjects      OBJECT IDENTIFIER ::= { garage         1 }
garageEvents       OBJECT IDENTIFIER ::= { garage         2 }
garageConformance  OBJECT IDENTIFIER ::= { garage         3 }

-- Conformance Information 

garageCompliances  OBJECT IDENTIFIER ::= { garageConformance 1 }
garageGroups       OBJECT IDENTIFIER ::= { garageConformance 2 }


garageAddress  OBJECT-TYPE
	SYNTAX 	DisplayString (SIZE(0..32))
	MAX-ACCESS  read-write
	STATUS 	current
	DESCRIPTION 
		"Garage address. For example: 10 St, SomePlace."
	::= { garageObjects 1 }

garageNumVehicles  OBJECT-TYPE
	SYNTAX 	INTEGER
	MAX-ACCESS  read-only
	STATUS 	current
	DESCRIPTION 
		"Number of vehicles currently parked in the garage."
	::= { garageObjects 2 }

vehiclesTable  OBJECT-TYPE
	SYNTAX SEQUENCE OF VehiclesEntry
	MAX-ACCESS  not-accessible
	STATUS 	current
	DESCRIPTION 
		"Table of vehicles parked in the garage."
	::= { garageObjects 3 }

vehiclesEntry  OBJECT-TYPE
	SYNTAX 	VehiclesEntry
	MAX-ACCESS  not-accessible
	STATUS 	current
	DESCRIPTION 
		"Row in the vehiclesTable."
	INDEX { vehicleIndex }
	::= { vehiclesTable 1 }

VehiclesEntry ::= SEQUENCE {
	vehicleIndex
		INTEGER,
	vehicleLicencePlate
		DisplayString,
	vehicleModel
		DisplayString,
	vehicleStatus
		RowStatus
}

vehicleIndex  OBJECT-TYPE
	SYNTAX 	INTEGER
	MAX-ACCESS  not-accessible
	STATUS 	current
	DESCRIPTION 
		"Index into vehiclesTable."
	::= { vehiclesEntry 1 }

vehicleLicencePlate  OBJECT-TYPE
	SYNTAX 	DisplayString (SIZE(6..7))
	MAX-ACCESS  read-create
	STATUS 	current
	DESCRIPTION 
		"Licence plate of the vehicle, for example 123XYZ or ABCD987."
	::= { vehiclesEntry 2 }

vehicleModel  OBJECT-TYPE
	SYNTAX 	DisplayString
	MAX-ACCESS  read-create
	STATUS 	current
	DESCRIPTION 
		"Make and model of the vehicle; e.g 'NuDesign speedmaster'.
		  NuDesign does not manufacture vehicles (yet). This is just
		  for demonstration purpose."
	::= { vehiclesEntry 3 }

vehicleStatus  OBJECT-TYPE
	SYNTAX 	RowStatus
	MAX-ACCESS  read-create
	STATUS 	current
	DESCRIPTION 
		"Status of this row."
	::= { vehiclesEntry 4 }
	
garageCOLevel   OBJECT-TYPE
	SYNTAX 	INTEGER
	MAX-ACCESS  read-only
	STATUS 	current
	DESCRIPTION 
		"CO toxicity level in garage (airborne concentration level expressed in 
		parts per million or PPM)."
	::= { garageObjects 4 }

garageCOLevelRisingThreshold   OBJECT-TYPE
	SYNTAX 	INTEGER
	MAX-ACCESS  read-write
	STATUS 	current
	DESCRIPTION 
		"Level of CO toxicity level in garage (in parts per million or PPM) 
		considered dangerous for humans. 400 PPM causes serious headache
		after 1-2 hours of exposure. Thislevel is life threatening after 3 hours.     
		When the current sampled value is greater than or equal to 
      this threshold, and the value at the last sampling interval
      was less than this threshold, a single event (coLevelRisingAlarm)
      will be generated. 
      After a rising event is generated, another such event will not be 
      generated until the sampled value falls below this threshold and 
      reaches the garageCOLevelFallingThreshold."
	::= { garageObjects 5 }
	
garageCOLevelFallingThreshold   OBJECT-TYPE
	SYNTAX 	INTEGER
	MAX-ACCESS  read-write
	STATUS 	current
	DESCRIPTION 
		"Level of CO toxicity level in garage (in parts per million or PPM) 
		considered harmless for humans. 35 PPM is maximum exposure allowed by 
		OSHA in the workplace over an eight hour period.
		When the current sampled value is less than or equal to this threshold,
		and the value at the last sampling interval was greater than this threshold, 
		a single event (coLevelFallingAlarm) will be generated.  
      After a falling event is generated, another such event will not be 
      generated until the sampled value rises above this threshold and 
      reaches the garageCOLevelRisingThreshold."
	::= { garageObjects 6 }


-- Events 

notPaidAlarm  NOTIFICATION-TYPE
	OBJECTS { vehicleLicencePlate }
	STATUS 	current
	DESCRIPTION 
		"The SNMP trap that is generated when the vehicle leaves garage
		 but did not pay the bill."
	::= { garageEvents 1 }

coLevelRisingAlarm  NOTIFICATION-TYPE
	OBJECTS { garageCOLevel }
	STATUS 	current
	DESCRIPTION 
      "The SNMP trap that is generated when CO toxicity level in garage 
      crosses its rising threshold (garageCOLevelRisingThreshold)."
	::= { garageEvents 2 }

coLevelFallingAlarm  NOTIFICATION-TYPE
	OBJECTS { garageCOLevel }
	STATUS 	current
	DESCRIPTION 
      "The SNMP trap that is generated when CO toxicity level in garage 
      crosses its falling threshold (garageCOLevelFallingThreshold)."
	::= { garageEvents 3 }
	

-- Compliance statements

garageCompliance  MODULE-COMPLIANCE
	STATUS 	current
	DESCRIPTION 
		"The compliance statement for agents which
		 implement the ND-GARAGE-MIB. Note that garageNotifGroup2 is 
		unconditionally optional for compliance to this MIB module."
	MODULE
		MANDATORY-GROUPS { 	
			garageBasicGroup,
			garageNotifGroup1 
		} 

	::= { garageCompliances 1 }

-- Units of compliance

garageBasicGroup  OBJECT-GROUP
	OBJECTS { garageAddress, 
		garageNumVehicles, 
		vehicleLicencePlate, 
		vehicleModel, 
		vehicleStatus,
		garageCOLevel,
		garageCOLevelRisingThreshold,
		garageCOLevelFallingThreshold
	}
	STATUS 	current
	DESCRIPTION 
		"A collection of objects providing the info for the garage."
	::= { garageGroups 1 }

garageNotifGroup1  NOTIFICATION-GROUP
	NOTIFICATIONS { 
		coLevelRisingAlarm, 
		coLevelFallingAlarm 
	}
	STATUS 	current
	DESCRIPTION 
		"The threshold notifications."
	::= { garageGroups 2 }

garageNotifGroup2  NOTIFICATION-GROUP
	NOTIFICATIONS { 
		notPaidAlarm  
	}
	STATUS 	current
	DESCRIPTION 
		"The not-paid notification."
	::= { garageGroups 3 }
END


-- This MIB was created using NuDesign Team's Visual MIBuilder (Ver 4.3).
roups 2 }

garageNotifGroup2  NOTIFICATION-GROUP
	NOTIFICATIONS { notPaidAlarm }
	STATUS     current
	DESCRIPTION 
		"The not-paid notification."
	::= { garageGroups 3 }
END


-- This MIB was created using NuDesign Team's Visual MIBuilder (Ver 4.4).

