--  =======================================================================
--  File		: FIBROLAN-GPS-MIB.mib
--  Description		: Private MIB file for Fibrolan GPS feature
--  Author		: Shamir Stein
--
--  Copyright Fibrolan, 2015. All rights reserved.
--
--  Reproduction of this document is authorized on condition that this
--  copyright notice is included.
--  =======================================================================

FIBROLAN-GPS-MIB	DEFINITIONS ::= BEGIN

	IMPORTS

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

		DisplayString,
		DateAndTime			FROM SNMPv2-TC
		
		FlGeoCoordinateAxis,
		fibrolanGeneric			FROM FIBROLAN-COMMON-MIB;


	flGps	MODULE-IDENTITY
		LAST-UPDATED	"201509150000Z"
		ORGANIZATION	"Fibrolan Ltd."
		CONTACT-INFO	"support@fibrolan.com"
		DESCRIPTION	"The MIB module to describe Fibrolan's GPS feature.
				 This module includes the relevant traps as well.
				 This module is part of Fibrolan's group of generic
				 MIB modules (i.e. can be supported on different devices).
				 Copyright (C) Fibrolan Ltd. (2015)."
		REVISION	"201509150000Z"
		DESCRIPTION	"Merged inventory and status tables.
				 Changed last changed object type to TimeTicks.
				 Added ranges to objects where applicable.
				 Added index to sattelite table.
				 Removed index from trap varbind declarations.
				 Misc cleanup."
		REVISION	"201508100000Z"
		DESCRIPTION	"Initial version (version 1)."
	::= { fibrolanGeneric  210 }

-- ************************************************************
-- high level structure
-- ************************************************************
	flGpsNotifications			OBJECT IDENTIFIER ::= { flGps  0 }
	flGpsMIBObjects				OBJECT IDENTIFIER ::= { flGps  1 }

-- ************************************************************
-- GPS module main table
-- ************************************************************
	flGpsTable				OBJECT-TYPE
		SYNTAX				SEQUENCE OF FlGpsEntry
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"This table provides inventory and status
						 details on the GPS module."
	::= { flGpsMIBObjects  10 }

	flGpsEntry				OBJECT-TYPE
		SYNTAX				FlGpsEntry
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"The entries of the GPS module table."
		INDEX				{ flGpsId }
	::= { flGpsTable  1 }

	FlGpsEntry ::= SEQUENCE
	{
		flGpsId				Integer32,
		flGpsModulePartNumber		DisplayString,
		flGpsModuleSerialNumber		DisplayString,
		flGpsHardwareId			DisplayString,
		flGpsFirmwareVersion		DisplayString,
		flGpsFirmwareDate		DisplayString,
		flGpsState			INTEGER,
		flGpsStateLastChange		TimeTicks,
		flGpsDateAndTime		DateAndTime,
		flGpsLatitude			FlGeoCoordinateAxis,
		flGpsLongitude			FlGeoCoordinateAxis,
		flGpsAltitude			Integer32,
		flGpsCableDelay			Integer32,
		flGpsAntennaState		INTEGER,
		flGps1PpsState			INTEGER,
		flGpsTrackedSatelliteCount	Integer32
	}

	flGpsId					OBJECT-TYPE
		SYNTAX				Integer32 (0..15)
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"GPS module ID."
	::= { flGpsEntry  1 }

	flGpsModulePartNumber			OBJECT-TYPE
		SYNTAX				DisplayString (SIZE (0..63))
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates the GPS module part number or type/model."
	::= { flGpsEntry  2 }

	flGpsModuleSerialNumber			OBJECT-TYPE
		SYNTAX				DisplayString (SIZE (0..63))
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates the GPS module serial number."
	::= { flGpsEntry  3 }

	flGpsHardwareId				OBJECT-TYPE
		SYNTAX				DisplayString (SIZE (0..63))
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates the GPS module hardware ID."
	::= { flGpsEntry  4 }

	flGpsFirmwareVersion			OBJECT-TYPE
		SYNTAX				DisplayString (SIZE (0..63))
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates the GPS module firmware version."
	::= { flGpsEntry  5 }

	flGpsFirmwareDate			OBJECT-TYPE
		SYNTAX				DisplayString (SIZE (0..63))
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates the GPS module firmware date."
	::= { flGpsEntry  6 }

	flGpsState				OBJECT-TYPE
		SYNTAX				INTEGER
						{
							noSignal		(1),
							searching		(2),
							acquiring		(3),
							locked			(4),
							fail			(5),
							other			(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The current state of the GPS receiver.
						 Under normal conditions, from power up,
						 the state should be locked.
						 Normally, 'other' state should not be present."
	::= { flGpsEntry  7 }

	flGpsStateLastChange			OBJECT-TYPE
		SYNTAX				TimeTicks
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The value of MIB II's sysUpTime object at
						 the time the GPS module entered its current
						 state."
	::= { flGpsEntry  8 }

	flGpsDateAndTime			OBJECT-TYPE
		SYNTAX				DateAndTime
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The date and time of day received on the GPS."
	::= { flGpsEntry  9 }

	flGpsLatitude				OBJECT-TYPE
		SYNTAX				FlGeoCoordinateAxis
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The GPS (antenna) current latitude."
	::= { flGpsEntry  10 }

	flGpsLongitude				OBJECT-TYPE
		SYNTAX				FlGeoCoordinateAxis
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The GPS (antenna) current longitude."
	::= { flGpsEntry  11 }

	flGpsAltitude				OBJECT-TYPE
		SYNTAX				Integer32 (-500..10000)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The GPS (antenna) current altitude in meters."
	::= { flGpsEntry  12 }

	flGpsCableDelay				OBJECT-TYPE
		SYNTAX				Integer32 (0..1000)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The antenna cable delay used for compensation.
						 Needed to align 1PPS and ToD. In units of [nsec]."
	::= { flGpsEntry  13 }

	flGpsAntennaState			OBJECT-TYPE
		SYNTAX				INTEGER
						{
							ok		(1),
							open		(2),
							shorted		(3),
							other		(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The current state of the GPS antenna.
						 Under normal conditions, the state should be 'ok'.
						 Normally, 'other' state should not be present."
	::= { flGpsEntry  14 }

	flGps1PpsState				OBJECT-TYPE
		SYNTAX				INTEGER
						{
							ok		(1),
							notGenerated	(2),
							other		(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The current state of the 1PPS signal generated
						 by the GPS module.
						 Under normal conditions, the state should be 'ok'.
						 Normally, 'other' state should not be present."
	::= { flGpsEntry  15 }

	flGpsTrackedSatelliteCount		OBJECT-TYPE
		SYNTAX				Integer32 (0..32)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates the number of satellites currently
						 being tracked or the GPS is attempting to track."
	::= { flGpsEntry  16 }


-- ************************************************************
-- GPS module satellite table
-- ************************************************************

	flGpsSatelliteTable			OBJECT-TYPE
		SYNTAX				SEQUENCE OF FlGpsSatelliteEntry
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"This table provides current status of the
						 visible GNSS satellites."
	::= { flGpsMIBObjects  30 }

	flGpsSatelliteEntry			OBJECT-TYPE
		SYNTAX				FlGpsSatelliteEntry
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"The entries of the GNSS satellites table"
		INDEX				{ --flGpsSatelliteTableId,
						flGpsSatelliteId }
	::= { flGpsSatelliteTable  1 }

	FlGpsSatelliteEntry ::= SEQUENCE
	{
--		flGpsSatelliteTableId		Integer32,
		flGpsSatelliteId		Integer32,
		flGpsSatellitePrn		Integer32,
		flGpsSatelliteType		INTEGER,
		flGpsSatelliteChannel		Integer32,
		flGpsSatelliteAcquisitionState	INTEGER,
		flGpsSatelliteSignalLevel	Integer32,
		flGpsSatelliteElevationAngle	Integer32,
		flGpsSatelliteAzimuthAngle	Integer32,
		flGpsSatelliteUsedForTiming	INTEGER,
		flGpsSatelliteUsedForPosition	INTEGER
	}

--	flGpsSatelliteTableId			OBJECT-TYPE
--		SYNTAX				Integer32 (0..15)
--		MAX-ACCESS			not-accessible
--		STATUS				current
--		DESCRIPTION			"Satellite table ID. Same as flGpsId."
--	::= { flGpsSatelliteEntry  1 }

	flGpsSatelliteId			OBJECT-TYPE
		SYNTAX				Integer32 (0..255)
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"Satellite ID (for internal indexing purposes,
						not identification)."
	::= { flGpsSatelliteEntry  2 }

	flGpsSatellitePrn			OBJECT-TYPE
		SYNTAX				Integer32 (0..255)
		MAX-ACCESS			not-accessible
		STATUS				current
		DESCRIPTION			"Satellite SV (Space Vehicle) PRN."
	::= { flGpsSatelliteEntry  3 }

	flGpsSatelliteType			OBJECT-TYPE
		SYNTAX				INTEGER
						{
							gps		(1),
							glonass		(2),
							galileo		(3),
							beidou		(4),
							qzss		(5),
							other		(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The type (system) of the satellite.
						 Normally, 'other' state should not be present."
	::= { flGpsSatelliteEntry  4 }

	flGpsSatelliteChannel			OBJECT-TYPE
		SYNTAX				Integer32 (0..255)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Satellite channel number."
	::= { flGpsSatelliteEntry  5 }

	flGpsSatelliteAcquisitionState		OBJECT-TYPE
		SYNTAX				INTEGER
						{
							acquired	(1),
							neverAcquired	(2),
							reopenSearch	(3),
							other		(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The acquisition state of the satellite.
						 Normally, 'other' state should not be present."
	::= { flGpsSatelliteEntry  6 }
				
	flGpsSatelliteSignalLevel		OBJECT-TYPE
		SYNTAX				Integer32 (0..100)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The received signal level for the satellite
						 in units of dB-Hz (carrier to noise)."
	::= { flGpsSatelliteEntry  7 }

	flGpsSatelliteElevationAngle		OBJECT-TYPE
		SYNTAX				Integer32 (0..90)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The satellite's elevation angle in degrees."
	::= { flGpsSatelliteEntry  8 }

	flGpsSatelliteAzimuthAngle		OBJECT-TYPE
		SYNTAX				Integer32 (0..180)
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"The satellite's azimuth angle in degrees."
	::= { flGpsSatelliteEntry  9 }

	flGpsSatelliteUsedForTiming		OBJECT-TYPE
		SYNTAX				INTEGER
						{
							yes		(1),
							no		(2),
							other		(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates whether the satellite is being used
						 for timing fix.
						 Normally, 'other' state should not be present."
	::= { flGpsSatelliteEntry  10 }
				
	flGpsSatelliteUsedForPosition		OBJECT-TYPE
		SYNTAX				INTEGER
						{
							yes		(1),
							no		(2),
							other		(99)
						}
		MAX-ACCESS			read-only
		STATUS				current
		DESCRIPTION			"Indicates whether the satellite is being used
						 for position fix.
						 Normally, 'other' state should not be present."
	::= { flGpsSatelliteEntry  11 }

-- ************************************************************
-- GPS module traps (notifications)
-- ************************************************************

	flGpsStateChanged			NOTIFICATION-TYPE
		OBJECTS				{ flGpsState }
		STATUS				current
		DESCRIPTION			"Indicates the GPS's state has changed."
		::= { flGpsNotifications  10 }

	flGpsAntennaStateChanged		NOTIFICATION-TYPE
		OBJECTS				{ flGpsAntennaState }
		STATUS				current
		DESCRIPTION			"Indicates the GPS's antenna state has changed."
		::= { flGpsNotifications  20 }


END
