-- RRLP-Components.asn
-- $Id$
-- Taken from 3GPP TS 44.031 V7.4.0 (2007-03)
-- http://www.3gpp.org/ftp/Specs/archive/44_series/44.031/44031-740.zip/44031-740.doc
--
-- 4 Components
-- 5 Elements of Components
--

RRLP-Components
-- { RRLP-Components }

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS
	Ext-GeographicalInformation, VelocityEstimate
FROM
	MAP-LCS-DataTypes {
	itu-t identified-organization (4) etsi (0) mobileDomain (0)
	gsm-Network (1) modules (3) map-LCS-DataTypes (25) version11 (11)}

	ExtensionContainer
FROM MAP-ExtensionDataTypes {
	itu-t identified-organization (4) etsi (0) mobileDomain (0)
	gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version11 (11)}
;


-- Add here other ASN.1 definitions presented below
-- in chapters 4 and 5.

-- Measurement Position request component
MsrPosition-Req ::= SEQUENCE {
	positionInstruct		PositionInstruct,
	referenceAssistData		ReferenceAssistData		OPTIONAL,
	msrAssistData			MsrAssistData			OPTIONAL,
	systemInfoAssistData	SystemInfoAssistData	OPTIONAL,
	gps-AssistData			GPS-AssistData			OPTIONAL,
	extensionContainer		ExtensionContainer		OPTIONAL,
	...,
	-- Release 98 extension element
rel98-MsrPosition-Req-extension			Rel98-MsrPosition-Req-Extension			OPTIONAL,	
	-- Release 5 extension element
rel5-MsrPosition-Req-extension			Rel5-MsrPosition-Req-Extension			OPTIONAL,
	-- Release 7 extension element
rel7-MsrPosition-Req-extension			Rel7-MsrPosition-Req-Extension			OPTIONAL
}

-- Measurement Position response component
MsrPosition-Rsp ::= SEQUENCE {
	multipleSets			MultipleSets			OPTIONAL,
	referenceIdentity		ReferenceIdentity		OPTIONAL,
	otd-MeasureInfo			OTD-MeasureInfo			OPTIONAL,
	locationInfo			LocationInfo			OPTIONAL,
	gps-MeasureInfo			GPS-MeasureInfo			OPTIONAL,
	locationError			LocationError			OPTIONAL,
	extensionContainer		ExtensionContainer		OPTIONAL,
	...,	
	-- Release extension here
	rel-98-MsrPosition-Rsp-Extension		
							Rel-98-MsrPosition-Rsp-Extension		OPTIONAL,
	rel-5-MsrPosition-Rsp-Extension
							Rel-5-MsrPosition-Rsp-Extension		OPTIONAL,
	-- rel-5-MsrPosition-Rsp-Extension and other possible future extensions
	-- are the only information elements that may be included in the 2nd
	-- MsrPosition-Rsp component when RRLP pseudo-segmentation is used
	rel-7-MsrPosition-Rsp-Extension
							Rel-7-MsrPosition-Rsp-Extension		OPTIONAL
}

-- Assistance Data component
AssistanceData ::= SEQUENCE {
	referenceAssistData	ReferenceAssistData			OPTIONAL,
	msrAssistData			MsrAssistData			OPTIONAL,
	systemInfoAssistData	SystemInfoAssistData	OPTIONAL,
	gps-AssistData			GPS-AssistData			OPTIONAL,	
	moreAssDataToBeSent		MoreAssDataToBeSent		OPTIONAL,	-- If not present, interpret as only
																-- Assistance Data component used to
																-- deliver entire set of assistance
																-- data.
	extensionContainer		ExtensionContainer		OPTIONAL,
	...,
	-- Release extension here
	rel98-AssistanceData-Extension	Rel98-AssistanceData-Extension	OPTIONAL,
	rel5-AssistanceData-Extension	Rel5-AssistanceData-Extension	OPTIONAL,
 rel7-AssistanceData-Extension Rel7-AssistanceData-Extension OPTIONAL	
}

-- Protocol Error component
ProtocolError ::= SEQUENCE {
	errorCause				ErrorCodes,	
	extensionContainer		ExtensionContainer		OPTIONAL,
	...,
	-- Release extensions here
	rel-5-ProtocolError-Extension Rel-5-ProtocolError-Extension		OPTIONAL
}

-- Position instructions
PositionInstruct ::= SEQUENCE {
	-- Method type
	methodType				MethodType,	
	positionMethod			PositionMethod,
	measureResponseTime		MeasureResponseTime,		
	useMultipleSets			UseMultipleSets,		
	environmentCharacter	EnvironmentCharacter	OPTIONAL	
}

--
MethodType ::= CHOICE {
	msAssisted		AccuracyOpt,	-- accuracy is optional
	msBased			Accuracy,		-- accuracy is mandatory
	msBasedPref		Accuracy,		-- accuracy is mandatory
	msAssistedPref	Accuracy 		-- accuracy is mandatory
}

-- Accuracy of the location estimation
AccuracyOpt ::= SEQUENCE {
	accuracy		Accuracy	OPTIONAL
}

-- The values of this field are defined in 3GPP TS 23.032 (Uncertainty code)
Accuracy ::= INTEGER (0..127)


-- Position Method
PositionMethod ::= ENUMERATED {
	eotd (0),
	gps (1),
	gpsOrEOTD (2)
}

-- Measurement request response time
MeasureResponseTime ::= INTEGER (0..7)

-- useMultiple Sets, FFS!
UseMultipleSets ::= ENUMERATED {
	multipleSets (0),		-- multiple sets are allowed
	oneSet (1)				-- sending of multiple is not allowed
}

-- Environment characterization
EnvironmentCharacter ::= ENUMERATED {
	badArea (0),		-- bad urban or suburban, heavy multipath and NLOS
	notBadArea (1),		-- light multipath and NLOS
	mixedArea (2),		-- not defined or mixed environment
	...
}

-- E-OTD reference BTS for Assitance data IE
ReferenceAssistData ::= SEQUENCE {
	bcchCarrier		BCCHCarrier,						-- BCCH carrier
	bsic			BSIC,								-- BSIC
	timeSlotScheme	TimeSlotScheme, 					-- Timeslot scheme
	btsPosition		BTSPosition			OPTIONAL
}

-- ellipsoid point and
-- ellipsoid point with altitude and uncertainty ellipsoid shapes are supported
BTSPosition ::= Ext-GeographicalInformation

-- RF channel number of BCCH
BCCHCarrier ::= INTEGER (0..1023)

-- Base station Identity Code
BSIC ::= INTEGER (0..63)

-- Timeslot scheme
TimeSlotScheme ::= ENUMERATED {
	equalLength (0),
	variousLength (1)
}

-- Time slot (modulo)
ModuloTimeSlot ::= INTEGER (0..3)

-- E-OTD measurement assistance data IE
-- The total number of neighbors in this element (MsrAssistData)
-- and in SystemInfoAssistData element (presented neighbors
-- can be at a maximum 15!)
MsrAssistData ::= SEQUENCE {
	 msrAssistList SeqOfMsrAssistBTS
}
SeqOfMsrAssistBTS ::= SEQUENCE (SIZE(1..15)) OF MsrAssistBTS

MsrAssistBTS ::= SEQUENCE {
	bcchCarrier			BCCHCarrier,		-- BCCH carrier
	bsic				BSIC,				-- BSIC
	multiFrameOffset	MultiFrameOffset, 	-- multiframe offset
	timeSlotScheme		TimeSlotScheme,		-- Timeslot scheme
	roughRTD			RoughRTD,			-- rough RTD value

	-- Location Calculation Assistance data is moved here
	calcAssistanceBTS	CalcAssistanceBTS	OPTIONAL
}

-- Multiframe offset
MultiFrameOffset ::= INTEGER (0..51)
-- The Multiframe Offset value 51 shall not be encoded by the transmitting entity and
-- shall be treated by the receiving entity as 0.

-- Rough RTD value between one base station and reference BTS
RoughRTD ::= INTEGER (0..1250)
-- The RoughRTD value 1250 shall not be encoded by the transmitting entity and shall
-- be treated by the receiving entity as 0.

-- E-OTD Measurement assistance data for system information List IE
-- The total number of base stations in this element (SystemInfoAssistData
-- presented neighbors) and in MsrAssistData element can be at a maximum 15.
SystemInfoAssistData ::= SEQUENCE {
	systemInfoAssistList 	SeqOfSystemInfoAssistBTS
}
SeqOfSystemInfoAssistBTS::= SEQUENCE (SIZE(1..32)) OF SystemInfoAssistBTS

-- whether n.th is present or not ?
SystemInfoAssistBTS ::= CHOICE {
	notPresent		NULL,
	present			AssistBTSData
}

-- Actual assistance data for system information base station
AssistBTSData ::= SEQUENCE {
	bsic				BSIC,				-- BSIC
	multiFrameOffset	MultiFrameOffset,	-- multiframe offset
	timeSlotScheme		TimeSlotScheme,		-- Timeslot scheme
	roughRTD			RoughRTD,			-- rough RTD value

	-- Location Calculation Assistance data
	calcAssistanceBTS	CalcAssistanceBTS	OPTIONAL
}

-- E-OTD Location calculation assistance data,
-- CalcAssistanceBTS element is optional not subfields
CalcAssistanceBTS ::= SEQUENCE {
	fineRTD				FineRTD,		-- fine RTD value between base stations
	referenceWGS84		ReferenceWGS84	-- reference coordinates
}

-- Coordinates of neighbour BTS, WGS-84 ellipsoid
ReferenceWGS84 ::= SEQUENCE {
	relativeNorth	RelDistance,				-- relative distance (south negative)
	relativeEast	RelDistance,				-- relative distance (west negative)
	-- Relative Altitude is not always known
	relativeAlt		RelativeAlt		OPTIONAL	-- relative altitude
}

-- Fine RTD value between this BTS and the reference BTS	
FineRTD ::= INTEGER (0..255)

-- Relative north/east distance
RelDistance ::= INTEGER (-200000..200000)

-- Relative altitude
RelativeAlt ::= INTEGER (-4000..4000)

-- Measure position response IEs
-- Reference Identity
-- Multiple sets
MultipleSets ::= SEQUENCE {
	-- number of reference sets
	nbrOfSets			INTEGER (2..3),		

	-- This field actually tells the number of reference BTSs
	nbrOfReferenceBTSs	INTEGER (1..3),

	-- This field is conditional and included optionally only if
	-- nbrOfSets is 3 and number of reference BTSs is 2.
	referenceRelation		ReferenceRelation		OPTIONAL
}

-- Relation between refence BTSs and sets
ReferenceRelation ::= ENUMERATED {
	secondBTSThirdSet (0),	-- 1st BTS related to 1st and 2nd sets
	secondBTSSecondSet (1),	-- 1st BTS related to 1st and 3rd sets
	firstBTSFirstSet (2)	-- 1st BTS related to 1st set
}

-- Reference BTS Identity, this element contains number of
-- BTSs told nbrOfReferenceBTSs field in Multiple sets element)
ReferenceIdentity ::= SEQUENCE {
	-- Reference BTS list
	refBTSList		SeqOfReferenceIdentityType
}
SeqOfReferenceIdentityType ::= SEQUENCE (SIZE(1..3)) OF ReferenceIdentityType

-- Cell identity
ReferenceIdentityType ::= CHOICE {
	bsicAndCarrier	BSICAndCarrier,		-- BSIC and Carrier
	ci				CellID,				-- Cell ID, LAC not needed
	requestIndex	RequestIndex,		-- Index to Requested Neighbor List
	systemInfoIndex	SystemInfoIndex,	-- Index to System info list, this type of ref. identity
										-- shall not be used by the MS unless it has received
										-- the SystemInfoAssistData from the SMLC for this cell.
	ciAndLAC		CellIDAndLAC		-- CI and LAC
}

BSICAndCarrier ::= SEQUENCE {
	carrier	BCCHCarrier,
	bsic		BSIC
}

RequestIndex ::= INTEGER (1..16)

SystemInfoIndex ::= INTEGER (1..32)

CellIDAndLAC ::= SEQUENCE {
	referenceLAC	LACID,				-- Location area code
	referenceCI		CellID				-- Cell identity
}
CellID ::= INTEGER (0..65535)
LACID ::= INTEGER (0..65535)

-- OTD-MeasureInfo
OTD-MeasureInfo ::= SEQUENCE {
	-- Measurement info elements, OTD-MsrElement is repeated number of times
	-- told in nbrOfReferenceBTSs in MultipleSets, default value is 1
	otdMsrFirstSets		OTD-MsrElementFirst,

	-- if more than one sets are present this element is repeated
	-- NumberOfSets - 1 (-1 = first set)
	otdMsrRestSets		SeqOfOTD-MsrElementRest		OPTIONAL
}

SeqOfOTD-MsrElementRest ::= SEQUENCE (SIZE(1..2)) OF OTD-MsrElementRest

-- OTD measurent information for 1 set
OTD-MsrElementFirst ::= SEQUENCE {
	refFrameNumber			INTEGER (0..42431), 				-- Frame number modulo 42432
	referenceTimeSlot		ModuloTimeSlot,
	toaMeasurementsOfRef	TOA-MeasurementsOfRef	OPTIONAL,
	stdResolution			StdResolution,
	taCorrection			INTEGER (0..960)		OPTIONAL,	-- TA correction

	-- measured neighbors in OTD measurements
	otd-FirstSetMsrs 		SeqOfOTD-FirstSetMsrs 	OPTIONAL
}
SeqOfOTD-FirstSetMsrs ::= SEQUENCE (SIZE(1..10)) OF OTD-FirstSetMsrs

-- OTD measurent information 2 and 3 sets if exist
OTD-MsrElementRest ::= SEQUENCE {
	refFrameNumber			INTEGER (0..42431), 					-- Frame number modulo 42432
	referenceTimeSlot		ModuloTimeSlot,
	toaMeasurementsOfRef	TOA-MeasurementsOfRef		OPTIONAL,
	stdResolution			StdResolution,
	taCorrection			INTEGER (0..960)			OPTIONAL,	-- TA correction

	-- measured neighbors in OTD measurements
	otd-MsrsOfOtherSets 	SeqOfOTD-MsrsOfOtherSets	OPTIONAL
}
SeqOfOTD-MsrsOfOtherSets ::= SEQUENCE (SIZE(1..10)) OF OTD-MsrsOfOtherSets

-- Standard deviation of the TOA measurements from the reference BTS
TOA-MeasurementsOfRef ::= SEQUENCE {
	refQuality			RefQuality,
	numOfMeasurements	NumOfMeasurements
}

RefQuality ::= INTEGER (0..31)			-- St Dev of TOA of reference as defined in annex
NumOfMeasurements ::= INTEGER (0..7)	-- No. of measurements for RefQuality as defined in annex
StdResolution ::= INTEGER (0..3)		-- Values of resolution are defined in annex

OTD-FirstSetMsrs ::= OTD-MeasurementWithID

-- Neighbour info in OTD measurements 0-10 times in TD measurement info
OTD-MsrsOfOtherSets ::= CHOICE {
	identityNotPresent	OTD-Measurement,	
	identityPresent		OTD-MeasurementWithID
}

-- For this OTD measurement identity is same as the identity of BTS
-- in the first set with same sequence number
OTD-Measurement ::= SEQUENCE {
	nborTimeSlot	ModuloTimeSlot,
	eotdQuality		EOTDQuality,
	otdValue		OTDValue
}

-- This measurement contains the BTS identity and measurement
OTD-MeasurementWithID ::=SEQUENCE {
	neighborIdentity	NeighborIdentity,
	nborTimeSlot		ModuloTimeSlot,
	eotdQuality			EOTDQuality,
	otdValue			OTDValue
}

EOTDQuality ::= SEQUENCE {
	nbrOfMeasurements	INTEGER	(0..7),
	stdOfEOTD			INTEGER (0..31)
}

NeighborIdentity ::= CHOICE {
	bsicAndCarrier		BSICAndCarrier,		-- BSIC and Carrier
	ci					CellID,				-- Cell ID, LAC not needed
	multiFrameCarrier	MultiFrameCarrier, 	-- MultiFrameOffest and BSIC
	requestIndex		RequestIndex,		-- Index to Requested Neighbor List
	systemInfoIndex		SystemInfoIndex,	-- Index to System info list, this type of neighbour
											-- identity shall not be used by the MS unless it has
											-- received the SystemInfoAssistData from the SMLC for
											-- this cell.
	ciAndLAC			CellIDAndLAC		-- CI and LAC
}

-- Multiframe and carrier
MultiFrameCarrier ::= SEQUENCE {
	bcchCarrier			BCCHCarrier,
	multiFrameOffset	MultiFrameOffset
}

-- OTD measurement value for neighbour
OTDValue ::= INTEGER (0..39999)

-- Location information IE
LocationInfo ::= SEQUENCE {
	refFrame		INTEGER (0..65535),			-- Reference Frame number
	-- If refFrame is within (42432..65535), it shall be ignored by the receiver
	-- in that case the MS should provide GPS TOW if available
	gpsTOW			INTEGER (0..14399999)	OPTIONAL,	-- GPS TOW
	fixType			FixType,
	-- Note that applicable range for refFrame is 0 - 42431
	-- Possible shapes carried in posEstimate are
	-- ellipsoid point,
	-- ellipsoid point with uncertainty circle
	-- ellipsoid point with uncertainty ellipse
	-- ellipsoid point with altitude and uncertainty ellipsoid
	posEstimate		Ext-GeographicalInformation
}

FixType ::= INTEGER {
	twoDFix (0),
	threeDFix (1)
} (0..1)

-- GPS-Measurement information
GPS-MeasureInfo ::= SEQUENCE {
	-- Measurement info elements
	-- user has to make sure that in this element is number of elements
	-- defined in reference BTS identity
	gpsMsrSetList	SeqOfGPS-MsrSetElement	
}
SeqOfGPS-MsrSetElement ::= SEQUENCE (SIZE(1..3)) OF GPS-MsrSetElement

-- OTD measurent information 1-3 times in message
GPS-MsrSetElement ::= SEQUENCE {
	refFrame		INTEGER (0..65535)	OPTIONAL, 	-- Reference Frame number
	gpsTOW			GPSTOW24b,						-- GPS TOW
	-- Note that applicable range for refFrame is 0 - 42431

--N_SAT can be read from number of elements of gps-msrList

	gps-msrList		SeqOfGPS-MsrElement
}

-- 24 bit presentation for GPSTOW
GPSTOW24b ::= INTEGER (0..14399999)

-- measured elements in measurement parameters field
SeqOfGPS-MsrElement ::= SEQUENCE (SIZE(1..16)) OF GPS-MsrElement

GPS-MsrElement ::= SEQUENCE {
	satelliteID		SatelliteID,				-- Satellite identifier
	cNo				INTEGER (0..63),			-- carrier noise ratio
	doppler			INTEGER (-32768..32767), 	-- doppler, mulltiply by 0.2
	wholeChips		INTEGER (0..1022),			-- whole value of the code phase measurement
	fracChips		INTEGER (0..1024),			-- fractional value of the code phase measurement
											-- a value of 1024 shall not be encoded by the sender
											-- the receiver shall consider a value of 1024 to be
											-- invalid data
	mpathIndic		MpathIndic,					-- multipath indicator
	pseuRangeRMSErr	INTEGER (0..63)				-- index		
}

-- Multipath indicator
MpathIndic ::= ENUMERATED {
	notMeasured (0),
	low (1),
	medium (2),
	high (3)
}

-- Location error IE
LocationError ::= SEQUENCE {
	locErrorReason				LocErrorReason,
	additionalAssistanceData	AdditionalAssistanceData	OPTIONAL,
	...
}

LocErrorReason ::= ENUMERATED {
	unDefined (0),	
	notEnoughBTSs (1),
	notEnoughSats (2),
	eotdLocCalAssDataMissing (3),
	eotdAssDataMissing (4),
	gpsLocCalAssDataMissing (5),
	gpsAssDataMissing (6),
	methodNotSupported (7),
	notProcessed (8),
	refBTSForGPSNotServingBTS (9),
	refBTSForEOTDNotServingBTS (10),
	...,
	notEnoughGANSSSats (11),	
 ganssAssDataMissing (12),
	refBTSForGANSSNotServingBTS (13)
}

-- exception handling:
-- an unrecognized value shall be treated the same as value 0


-- defines additional assistance data needed for any new location attempt
-- MS shall retain any assistance data already received
AdditionalAssistanceData ::= SEQUENCE {
	gpsAssistanceData		GPSAssistanceData		OPTIONAL,
	extensionContainer		ExtensionContainer		OPTIONAL,
	...,
	ganssAssistanceData GANSSAssistanceData OPTIONAL
}

GPSAssistanceData ::= OCTET STRING (SIZE (1..maxGPSAssistanceData))
-- GPSAssistanceData has identical structure and encoding to octets 3 to n of the
-- GPS Assistance Data IE in 3GPP TS 49.031

maxGPSAssistanceData	INTEGER ::= 40

GANSSAssistanceData ::= OCTET STRING (SIZE (1..maxGANSSAssistanceData))
-- GANSSAssistanceData has identical structure and encoding to octets 3 to n of the
-- GANSS Assistance Data IE in 3GPP TS 49.031

maxGANSSAssistanceData	INTEGER ::= 40


-- Protocol Error Causes
ErrorCodes ::= ENUMERATED {
	unDefined (0),
missingComponet (1),			
incorrectData (2),			
missingIEorComponentElement (3),		
messageTooShort (4),			
unknowReferenceNumber (5),		
...
}

-- exception handling:
-- an unrecognized value shall be treated the same as value 0

-- GPS assistance data IE
GPS-AssistData ::= SEQUENCE {
	controlHeader		ControlHeader
}

-- More Assistance Data To Be Sent IE
-- More Assistance Data Components On the Way indication for delivery of an entire set of assistance
-- data in multiple Assistance Data components.

MoreAssDataToBeSent ::= ENUMERATED {
	noMoreMessages (0),			-- This is the only or last Assistance Data message used to deliver
								-- the entire set of assistance data.
	moreMessagesOnTheWay (1)	-- The SMLC will send more Assistance Data messages or a final RRLP
								-- Measure Position Request message to deliver the
								-- the entire set of assistance data.
}

-- Control header of the GPS assistance data
ControlHeader ::= SEQUENCE {

	-- Field type Present information
	referenceTime		ReferenceTime		OPTIONAL,
	refLocation			RefLocation			OPTIONAL,
	dgpsCorrections		DGPSCorrections		OPTIONAL,
	navigationModel		NavigationModel		OPTIONAL,
	ionosphericModel		IonosphericModel		OPTIONAL,
	utcModel			UTCModel			OPTIONAL,
	almanac			Almanac			OPTIONAL,
	acquisAssist		AcquisAssist		OPTIONAL,
	realTimeIntegrity SeqOf-BadSatelliteSet OPTIONAL
}

ReferenceTime ::= SEQUENCE {
	gpsTime				GPSTime,
	gsmTime				GSMTime				OPTIONAL,
	gpsTowAssist		GPSTOWAssist		OPTIONAL
}

-- GPS Time includes week number and time-of-week (TOW)
GPSTime ::= SEQUENCE {
	gpsTOW23b			GPSTOW23b,
	gpsWeek				GPSWeek
}

-- GPSTOW, range 0-604799.92, resolution 0.08 sec, 23-bit presentation
GPSTOW23b ::= INTEGER (0..7559999)

-- GPS week number
GPSWeek ::= INTEGER (0..1023)

-- GPSTOWAssist consists of TLM message, Anti-spoof flag, Alert flag, and 2 reserved bits in TLM Word
-- for each visible satellite.
-- N_SAT can be read from number of elements in GPSTOWAssist
GPSTOWAssist ::= SEQUENCE (SIZE(1..12)) OF GPSTOWAssistElement

GPSTOWAssistElement ::= SEQUENCE {
	satelliteID			SatelliteID,
	tlmWord				TLMWord,
	antiSpoof			AntiSpoofFlag,
	alert				AlertFlag,
	tlmRsvdBits			TLMReservedBits
}

-- TLM Word, 14 bits
TLMWord ::= INTEGER (0..16383)

-- Anti-Spoof flag
AntiSpoofFlag ::= INTEGER (0..1)

-- Alert flag
AlertFlag ::= INTEGER (0..1)

-- Reserved bits in TLM word, MSB occurs earlier in TLM Word transmitted by satellite
TLMReservedBits ::= INTEGER (0..3)

GSMTime ::= SEQUENCE {
	bcchCarrier		BCCHCarrier,	-- BCCH carrier
	bsic			BSIC,			-- BSIC
	frameNumber		FrameNumber,
	timeSlot		TimeSlot,
	bitNumber		BitNumber
}

-- Frame number
FrameNumber ::= INTEGER (0..2097151)

-- Time slot number
TimeSlot ::= INTEGER (0..7)

-- Bit number
BitNumber ::= INTEGER (0..156)


-- Reference Location IE
RefLocation ::= SEQUENCE {
	threeDLocation			Ext-GeographicalInformation
}

-- DGPS Corrections IE
DGPSCorrections ::= SEQUENCE {

	gpsTOW		INTEGER (0..604799),	-- DGPS reference time
	status		INTEGER (0..7),
	-- N_SAT can be read from number of elements of satList
	satList		SeqOfSatElement 	
}
SeqOfSatElement ::= SEQUENCE (SIZE (1..16)) OF SatElement

-- number of correction for satellites
SatElement ::= SEQUENCE {
	satelliteID		SatelliteID,


--- Sequence number for ephemeris
	iode 			INTEGER (0..239),
	-- User Differential Range Error
	udre			INTEGER (0..3),		

	-- Pseudo Range Correction, range is
	-- -655.04 - +655.04,
	pseudoRangeCor	INTEGER (-2047..2047), 	

	-- Pseudo Range Rate Correction, range is
	-- -4.064 - +4.064,
	rangeRateCor	INTEGER (-127..127),

-- Delta Pseudo Range Correction 2 	
	deltaPseudoRangeCor2 	INTEGER (-127..127),	-- This IE shall be ignored by the receiver and
													-- set to zero by the sender
	-- Delta Pseudo Range Correction 2	
	deltaRangeRateCor2		INTEGER (-7..7),		-- This IE shall be ignored by the receiver and
													-- set to zero by the sender
	-- Delta Pseudo Range Correction 3
	deltaPseudoRangeCor3 	INTEGER (-127..127),	-- This IE shall be ignored by the receiver and
													-- set to zero by the sender
	-- Delta Pseudo Range Correction 3
	deltaRangeRateCor3		INTEGER (-7..7)			-- This IE shall be ignored by the receiver and
													-- set to zero by the sender
}

SatelliteID ::= INTEGER (0..63)	-- identifies satellite

-- Navigation Model IE
NavigationModel ::= SEQUENCE {
	navModelList	SeqOfNavModelElement	
}

-- navigation model satellite list
SeqOfNavModelElement ::= SEQUENCE (SIZE(1..16)) OF NavModelElement

NavModelElement ::= SEQUENCE {
	satelliteID		SatelliteID,			
	satStatus		SatStatus		-- satellite status
}

-- the Status of the navigation model
SatStatus ::= CHOICE {
	-- New satellite, new Navigation Model
	newSatelliteAndModelUC	UncompressedEphemeris,

	-- Existing satellite, Existing Navigation Model
	oldSatelliteAndModel	NULL,

	-- Existing satellite, new Navigation Model
	newNaviModelUC			UncompressedEphemeris,
	...
}

-- Uncompressed satellite emhemeris and clock corrections
UncompressedEphemeris ::= SEQUENCE {
	ephemCodeOnL2	INTEGER (0..3),
	ephemURA		INTEGER (0..15),
	ephemSVhealth	INTEGER (0..63),
	ephemIODC		INTEGER	(0..1023),
	ephemL2Pflag	INTEGER (0..1),
	ephemSF1Rsvd	EphemerisSubframe1Reserved,
	ephemTgd		INTEGER (-128..127),
	ephemToc		INTEGER (0..37799),
	ephemAF2		INTEGER (-128..127),
	ephemAF1		INTEGER (-32768..32767),
	ephemAF0		INTEGER (-2097152..2097151),
	ephemCrs		INTEGER (-32768..32767),
	ephemDeltaN		INTEGER (-32768..32767),
	ephemM0			INTEGER (-2147483648..2147483647),
	ephemCuc		INTEGER (-32768..32767),
	ephemE			INTEGER (0..4294967295),
	ephemCus		INTEGER (-32768..32767),
	ephemAPowerHalf	INTEGER (0..4294967295),
	ephemToe		INTEGER (0..37799),
	ephemFitFlag	INTEGER (0..1),
	ephemAODA		INTEGER (0..31),
	ephemCic		INTEGER (-32768..32767),
	ephemOmegaA0	INTEGER (-2147483648..2147483647),
	ephemCis		INTEGER (-32768..32767),
	ephemI0			INTEGER (-2147483648..2147483647),
	ephemCrc		INTEGER (-32768..32767),
	ephemW			INTEGER (-2147483648..2147483647),
	ephemOmegaADot	INTEGER (-8388608..8388607),
	ephemIDot		INTEGER (-8192..8191)
}

-- Reserved bits in subframe 1 of navigation message
EphemerisSubframe1Reserved ::= SEQUENCE {
	reserved1		INTEGER (0..8388607),	-- 23-bit field
	reserved2		INTEGER (0..16777215),	-- 24-bit field
	reserved3		INTEGER (0..16777215),	-- 24-bit field
	reserved4		INTEGER (0..65535)		-- 16-bit field
}

-- Ionospheric Model IE
IonosphericModel ::= SEQUENCE {
	alfa0			INTEGER (-128..127),
	alfa1			INTEGER (-128..127),
	alfa2			INTEGER (-128..127),
	alfa3			INTEGER (-128..127),
	beta0			INTEGER (-128..127),
	beta1			INTEGER (-128..127),
	beta2			INTEGER (-128..127),
	beta3			INTEGER (-128..127)
}

-- Universal Time Coordinate Model
UTCModel ::= SEQUENCE {
	utcA1			INTEGER (-8388608..8388607),
	utcA0			INTEGER (-2147483648..2147483647),
	utcTot			INTEGER (0..255),
	utcWNt			INTEGER (0..255),
	utcDeltaTls		INTEGER (-128..127),
	utcWNlsf		INTEGER (0..255),
	utcDN			INTEGER (-128..127),
	utcDeltaTlsf	INTEGER (-128..127)
}

-- Almanac, Long term model
-- NOTE: These are parameters are subset of the ephemeris
-- NOTE: But with reduced resolution and accuracy
Almanac ::= SEQUENCE {
	alamanacWNa		INTEGER (0..255),	-- Once per message

	-- navigation model satellite list.
	-- The size of almanacList is actually Nums_Sats_Total field
	almanacList		SeqOfAlmanacElement		
}
SeqOfAlmanacElement ::= SEQUENCE (SIZE(1..64)) OF AlmanacElement

-- Almanac info once per satellite
AlmanacElement ::= SEQUENCE {
	satelliteID			SatelliteID,
	almanacE			INTEGER (0..65535),
	alamanacToa			INTEGER (0..255),
	almanacKsii			INTEGER (-32768..32767),
	almanacOmegaDot		INTEGER (-32768..32767),
	almanacSVhealth		INTEGER (0..255),
	almanacAPowerHalf	INTEGER (0..16777215),
	almanacOmega0		INTEGER (-8388608..8388607),
	almanacW			INTEGER (-8388608..8388607),
	almanacM0			INTEGER (-8388608..8388607),
	almanacAF0			INTEGER (-1024..1023),
	almanacAF1			INTEGER (-1024..1023)
}

-- Acquisition Assistance
AcquisAssist ::= SEQUENCE {

	-- Number of Satellites can be read from acquistList
	timeRelation	TimeRelation,

	-- Acquisition assistance list
	-- The size of Number of Satellites is actually Number of Satellites field
	acquisList		SeqOfAcquisElement		
}
SeqOfAcquisElement ::= SEQUENCE (SIZE(1..16)) OF AcquisElement

-- the relationship between GPS time and air-interface timing
TimeRelation ::= SEQUENCE {
	--
	gpsTOW		GPSTOW23b,		-- 23b presentation
	gsmTime		GSMTime		OPTIONAL
}

-- data occuring per number of satellites
AcquisElement ::= SEQUENCE {
	svid					SatelliteID,

	-- Doppler 0th order term,
	-- -5120.0 - 5117.5 Hz (= -2048 - 2047 with 2.5 Hz resolution)
	doppler0				INTEGER (-2048..2047),	
	addionalDoppler			AddionalDopplerFields	OPTIONAL,
	codePhase				INTEGER (0..1022),	-- Code Phase
	intCodePhase			INTEGER (0..19),	-- Integer Code Phase
	gpsBitNumber			INTEGER (0..3), 	-- GPS bit number
	codePhaseSearchWindow	INTEGER (0..15),	-- Code Phase Search Window
	addionalAngle			AddionalAngleFields		OPTIONAL
}

AddionalDopplerFields ::= SEQUENCE {
	-- Doppler 1st order term, -1.0 - +0.5 Hz/sec
 -- (= -42 + (0 to 63) with 1/42 Hz/sec. resolution)
	doppler1				INTEGER (0..63),
	dopplerUncertainty		INTEGER (0..7)
 -- a sender shall not encode any DopplerUncertainty value in the range 5 to 7
 -- a receiver shall ignore any value between 5 and 7.
}

AddionalAngleFields	::= SEQUENCE {
	-- azimuth angle, 0 - 348.75 deg (= 0 - 31 with 11.25 deg resolution)
	azimuth					INTEGER (0..31),
	-- elevation angle, 0 - 78.75 deg (= 0 - 7 with 11.25 deg resolution)
	elevation				INTEGER (0..7)
}

-- Real-Time Integrity
-- number of bad satellites can be read from this element
SeqOf-BadSatelliteSet ::= SEQUENCE (SIZE(1..16)) OF SatelliteID

-- Extension Elements

-- Release 98 Extensions here
Rel98-MsrPosition-Req-Extension ::= SEQUENCE {
	rel98-Ext-ExpOTD			Rel98-Ext-ExpOTD		OPTIONAL,	-- ExpectedOTD extension
	..., 
 gpsTimeAssistanceMeasurementRequest NULL OPTIONAL, 
 gpsReferenceTimeUncertainty GPSReferenceTimeUncertainty OPTIONAL

-- Further R98 extensions here
}
Rel98-AssistanceData-Extension ::= SEQUENCE {
	rel98-Ext-ExpOTD			Rel98-Ext-ExpOTD		OPTIONAL,	-- ExpectedOTD extension
	..., 
 gpsTimeAssistanceMeasurementRequest NULL OPTIONAL,
 gpsReferenceTimeUncertainty GPSReferenceTimeUncertainty OPTIONAL

-- Further R98 extensions here
}

-- Release 98 ExpOTD extension
Rel98-Ext-ExpOTD ::= SEQUENCE {
-- If MsrAssistBTS is included in message, msrAssistData-R98-ExpOTD shall be included.
	msrAssistData-R98-ExpOTD			MsrAssistData-R98-ExpOTD			OPTIONAL,

-- If SystemInfoAssistaData is included in message, systemInfoAssistData-R98-ExpOTD shall be
-- included.
	systemInfoAssistData-R98-ExpOTD	SystemInfoAssistData-R98-ExpOTD	OPTIONAL
}

-- MsrAssistData R98 extension
MsrAssistData-R98-ExpOTD ::= SEQUENCE {
	 msrAssistList-R98-ExpOTD			 SeqOfMsrAssistBTS-R98-ExpOTD
}

-- Indexes in SeqOfMsrAssistBTS-R98-ExpOTD refer to SeqOfMsrAssistBTS
-- If the index exceeds the SegOfMsrAssistBTS range or if there is other
-- inconsistencies between the BTS indices, the MS shall apply protocol
-- error cause incorrectData
SeqOfMsrAssistBTS-R98-ExpOTD ::= SEQUENCE (SIZE(1..15)) OF MsrAssistBTS-R98-ExpOTD

-- This element completes MsrAssistBTS IE
MsrAssistBTS-R98-ExpOTD ::= SEQUENCE {
	expectedOTD				ExpectedOTD,
	expOTDUncertainty		ExpOTDUncertainty
}

-- SystemInfoAssistData R98 extension
SystemInfoAssistData-R98-ExpOTD ::= SEQUENCE {
	systemInfoAssistListR98-ExpOTD 	SeqOfSystemInfoAssistBTS-R98-ExpOTD
}

-- SeqOfSystemInfoAssistBTS-R98-ExpOTD index refer to SeqOfSystemInfoAssistBTS
-- If the index exceeds the SegOfSystemInfoAssistBTS range or if there is other
-- inconsistencies between the BTS indices, the MS shall apply protocol
-- error cause incorrectData
SeqOfSystemInfoAssistBTS-R98-ExpOTD ::= SEQUENCE (SIZE(1..32)) OF SystemInfoAssistBTS-R98-ExpOTD

-- whether n.th is present or not ?
SystemInfoAssistBTS-R98-ExpOTD ::= CHOICE {
	notPresent		NULL,
	present			AssistBTSData-R98-ExpOTD
}

-- This element completes AssistBTSData IE
AssistBTSData-R98-ExpOTD ::= SEQUENCE {
	expectedOTD				ExpectedOTD,
	expOTDuncertainty		ExpOTDUncertainty	-- Uncertainty of expected OTD
}

-- Expected OTD value between nbor base station and reference BTS
-- at MS's current estimated location.
ExpectedOTD ::= INTEGER (0..1250)
-- The ExpectedOTD value 1250 shall not be encoded by the transmitting entity and
-- shall be treated by the receiving entity as 0.
-- Uncertainty of Exptected OTD in bits
ExpOTDUncertainty ::= INTEGER(0..7)

-- Release 98 extensions

GPSReferenceTimeUncertainty ::= INTEGER (0 .. 127) -- Coding according to Annex

GPSTimeAssistanceMeasurements ::= SEQUENCE {
 referenceFrameMSB INTEGER (0 .. 63), -- MSB of frame number
 gpsTowSubms INTEGER (0 .. 9999) OPTIONAL, -- in units of 100ns, for MS based AGPS
 deltaTow INTEGER (0 .. 127) OPTIONAL, -- for MS assisted AGPS
 gpsReferenceTimeUncertainty GPSReferenceTimeUncertainty OPTIONAL
}

Rel-98-MsrPosition-Rsp-Extension ::= SEQUENCE {

	-- First extension to Release 98
	rel-98-Ext-MeasureInfo	SEQUENCE {
		otd-MeasureInfo-R98-Ext	OTD-MeasureInfo-R98-Ext		OPTIONAL
	},
	..., 
 timeAssistanceMeasurements GPSTimeAssistanceMeasurements OPTIONAL 
 -- Further R98 extensions here
}

-- This is an addition to OTD-MeasureInfo element defined in original message,
-- If OTD-MeasureInfo is absent, or if one or more OTD-MsrElementRest are present
-- OTD-MeasureInfo-R98-Ext shall be absent.
-- OTD-MeasureInfo-R98-Ext
OTD-MeasureInfo-R98-Ext ::= SEQUENCE {
	-- Measurement info elements
	otdMsrFirstSets-R98-Ext		OTD-MsrElementFirst-R98-Ext
}

-- OTD measurement information Ext for the first set only
OTD-MsrElementFirst-R98-Ext ::= SEQUENCE {
	-- additional measured neighbors in OTD measurements
	otd-FirstSetMsrs-R98-Ext 	SeqOfOTD-FirstSetMsrs-R98-Ext 	OPTIONAL
}
SeqOfOTD-FirstSetMsrs-R98-Ext ::= SEQUENCE (SIZE(1..5)) OF OTD-FirstSetMsrs

Rel-5-MsrPosition-Rsp-Extension ::= SEQUENCE {

	extended-reference	Extended-reference 	OPTIONAL,
	-- The extended-reference shall be included by the MS if and only if previously
	-- received from the SMLC in a Measure Position Request. When included, the value sent
	-- by the MS shall equal the value received from the SMLC.

	-- extension to Release 5, for RRLP pseudo-segmentation here
	otd-MeasureInfo-5-Ext	OTD-MeasureInfo-5-Ext	OPTIONAL,
	ulPseudoSegInd			UlPseudoSegInd			OPTIONAL,	-- Included when uplink RRLP
	-- Pseudo-segmentation is used, not included when no uplink pseudo-segmentation is used
	...
					-- Possibly more extensions for Release 5 here later
}

Extended-reference ::= SEQUENCE {
	smlc-code			INTEGER (0..63),
	transaction-ID		INTEGER (0..262143)
}

OTD-MeasureInfo-5-Ext ::= SeqOfOTD-MsrElementRest
	-- if more than one measurement sets are present this element is repeated
	-- NumberOfSets - 1 (-1 = first set) combined in OTD-MeasureInfo-5-Ext and
	-- OTD-MeasureInfo (e.g. if NumberOfSets is 3, then one otdMsrRestSets may
	-- be sent in OTD-MeasureInfo-5-Ext and one in OTD-MeasureInfo)

-- First part of Uplink RRLP Pseudo-segmentation indication, possibly more may be defined
-- in the future for segmentation with more than two segments.
UlPseudoSegInd ::= ENUMERATED {
	firstOfMany (0),
	secondOfMany(1)
}

Rel5-MsrPosition-Req-Extension ::= SEQUENCE {
	extended-reference			Extended-reference,
	...
	-- Possibly more extensions for Release 5 here later
}

Rel5-AssistanceData-Extension ::= SEQUENCE {
	extended-reference			Extended-reference,
	...

-- Possibly more extensions for Release 5 here later
}

Rel-5-ProtocolError-Extension::= SEQUENCE {
	extended-reference			Extended-reference 	OPTIONAL,
	-- The extended-reference shall be included by the MS if and only if previously
	-- received from the SMLC.
	-- When included, the value sent by the MS shall equal the value received from the SMLC.
	...

	-- Possibly more extensions for Release 5 here later
}

-- Release 7 Extensions here

Rel7-MsrPosition-Req-Extension ::= SEQUENCE {
velocityRequested		 NULL		 OPTIONAL,
 ganssPositionMethod GANSSPositioningMethod OPTIONAL,
 ganss-AssistData GANSS-AssistData OPTIONAL,
 ganssCarrierPhaseMeasurementRequest NULL OPTIONAL,
 ganssTODGSMTimeAssociationMeasurementRequest NULL OPTIONAL,
requiredResponseTime	RequiredResponseTime	OPTIONAL,
	...
	-- Further Release 7 extentions here
}

-- additional satellite systems may be added in future versions of the protocol
GANSSPositioningMethod ::= BIT STRING {
	gps (0),
	galileo (1)} (SIZE (2..16))

GANSS-AssistData ::= SEQUENCE {
	ganss-controlHeader	GANSS-ControlHeader
}

GANSS-ControlHeader ::= SEQUENCE {
 ganssCommonAssistData GANSSCommonAssistData OPTIONAL,
 ganssGenericAssistDataList SeqOfGANSSGenericAssistDataElement OPTIONAL
}

-- GANSS Common Assistance Data Elements
GANSSCommonAssistData ::= SEQUENCE {
	ganssReferenceTime		 GANSSReferenceTime		 OPTIONAL,
	ganssRefLocation			GANSSRefLocation		 OPTIONAL,
	ganssIonosphericModel		GANSSIonosphericModel	 OPTIONAL,
	...
}

-- List of GANSS Generic Assistance Data Elements, up to 8 GANSS
SeqOfGANSSGenericAssistDataElement ::= SEQUENCE (SIZE (1..8)) OF GANSSGenericAssistDataElement

-- GANSS Generic Assistance Data Elements
GANSSGenericAssistDataElement ::= SEQUENCE {
 ganssID INTEGER (0..7) OPTIONAL, -- Coding according to Annex
 ganssTimeModel SeqOfGANSSTimeModel OPTIONAL,
	ganssDiffCorrections		 GANSSDiffCorrections	 OPTIONAL,
	ganssNavigationModel		 GANSSNavModel OPTIONAL,
	ganssRealTimeIntegrity	 GANSSRealTimeIntegrity	 OPTIONAL,
	ganssDataBitAssist			 GANSSDataBitAssist		 OPTIONAL,
	ganssRefMeasurementAssist	 GANSSRefMeasurementAssist OPTIONAL,
 ganssAlmanacModel GANSSAlmanacModel OPTIONAL,
 ganssUTCModel GANSSUTCModel OPTIONAL,
	...
}

-- GANSS COMMON ASSISTANCE DATA ELEMENTS

-- GANSS Reference Time IE
GANSSReferenceTime ::= SEQUENCE {
	ganssRefTimeInfo			 GANSSRefTimeInfo,
	ganssTOD-GSMTimeAssociation GANSSTOD-GSMTimeAssociation OPTIONAL
}

-- GANSS Reference Time includes GANSS TOD, GANSS Day, uncertainty
GANSSRefTimeInfo ::= SEQUENCE {
	ganssDay			 INTEGER(0 .. 8191) OPTIONAL,
 ganssTOD GANSSTOD,
	ganssTODUncertainty	 GANSSTODUncertainty OPTIONAL,
 ganssTimeID INTEGER (0 .. 7) OPTIONAL
}

-- GANSS TOD integer seconds
GANSSTOD ::= INTEGER (0 .. 86399)

-- GANSS TOD uncertainty
GANSSTODUncertainty ::= INTEGER (0 .. 127) -- Coding according to Annex

-- GANSS TOD-GSM Time association 
GANSSTOD-GSMTimeAssociation ::= SEQUENCE {
	bcchCarrier		BCCHCarrier,	-- BCCH carrier
	bsic			BSIC,			-- BSIC
	frameNumber		FrameNumber,
	timeSlot		TimeSlot,
	bitNumber		BitNumber,
 frameDrift FrameDrift OPTIONAL
}

-- Frame drift
FrameDrift ::= INTEGER(-64 .. 63)

-- GANSS Reference Location IE
GANSSRefLocation ::= SEQUENCE {
	threeDLocation			Ext-GeographicalInformation
}

-- GANSS Ionospheric Model IE
-- GANSS Ionospheric Model consists of NeQuick model parameters and storm flags

GANSSIonosphericModel ::= SEQUENCE {
 ganssIonoModel GANSSIonosphereModel,
 ganssIonoStormFlags GANSSIonoStormFlags OPTIONAL,
 ...
}

-- GANSS ionosphere model. Coding according to Annex 
GANSSIonosphereModel ::= SEQUENCE {
 ai0 INTEGER (0 .. 4095),
 ai1 INTEGER (0 .. 4095),
 ai2 INTEGER (0 .. 4095)
}

-- GANSS ionosphere storm flags
GANSSIonoStormFlags ::= SEQUENCE {
	ionoStormFlag1	INTEGER (0 .. 1),
	ionoStormFlag2	INTEGER (0 .. 1),
	ionoStormFlag3	INTEGER (0 .. 1),
	ionoStormFlag4	INTEGER (0 .. 1),
	ionoStormFlag5	INTEGER (0 .. 1)
}

-- GANSS GENERIC ASSISTANCE DATA ELEMENTS

-- GANSS Time Model IE consists of time offset and first and second order parameters to relate GNSS
-- specific system time to selected time reference
SeqOfGANSSTimeModel ::= SEQUENCE (SIZE(1..7)) OF GANSSTimeModelElement

GANSSTimeModelElement ::= SEQUENCE {
	ganssTimeModelRefTime		INTEGER(0 .. 65535),
	tA0		 TA0,
	tA1		 TA1 OPTIONAL,
	tA2		 TA2 OPTIONAL,
 gnssTOID INTEGER (0 .. 7),
 weekNumber INTEGER (0 .. 8191) OPTIONAL 
}

-- GANSS time model parameter A0
TA0 ::= INTEGER (-2147483648 .. 2147483647)

-- GANSS time model parameter A1
TA1 ::= INTEGER (-8388608 .. 8388607)

-- GANSS time model parameter A2
TA2 ::= INTEGER (-64 .. 63)

-- DGANSS Corrections IE
GANSSDiffCorrections ::= SEQUENCE {
	dganssRefTime		INTEGER (0 .. 119),	 -- DGANSS reference time

	-- N_SGN_TYPE can be read from number of elements of sgnTypeList
	sgnTypeList		 SeqOfSgnTypeElement
}

SeqOfSgnTypeElement ::= SEQUENCE (SIZE (1..3)) OF SgnTypeElement -- max three signals per GNSS

-- DGANSS signal type element, once per GNSS signal type included in DGANSS
SgnTypeElement ::= SEQUENCE {
	ganssSignalID		 GANSSSignalID OPTIONAL, -- signal type identity
 ganssStatusHealth INTEGER (0 .. 7),
	-- N_SGN can be read from number of elements of dganssSgnList
 dganssSgnList SeqOfDGANSSSgnElement
}

GANSSSignalID ::= INTEGER (0 .. 3)	-- Coding according to Annex
SeqOfDGANSSSgnElement ::= SEQUENCE (SIZE (1..16)) OF DGANSSSgnElement

-- number of correction for signals
DGANSSSgnElement ::= SEQUENCE {
	svID		 SVID, -- Satellite identity

--- Sequence number for GANSS Navigation Model that matches the DGANSS correction set
	iod 			INTEGER (0 .. 1023),

	-- User Differential Range Error
	udre			INTEGER (0..3),		

	-- Pseudo Range Correction, range is
	-- -655.04 - +655.04,
	pseudoRangeCor	INTEGER (-2047..2047), 	

	-- Pseudo Range Rate Correction, range is
	-- -4.064 - +4.064,
	rangeRateCor	INTEGER (-127..127)
}

SVID ::= INTEGER (0 .. 63)	-- Coding according to Annex

-- GANSS Navigation Model IE
GANSSNavModel ::= SEQUENCE {
 nonBroadcastIndFlag INTEGER (0 .. 1),
 toeMSB INTEGER (0 .. 31) OPTIONAL, -- 5 MSB of toe and toc 
 eMSB INTEGER (0 .. 127) OPTIONAL,
 sqrtAMBS INTEGER (0 .. 63) OPTIONAL,
	ganssSatelliteList SeqOfGANSSSatelliteElement
}

SeqOfGANSSSatelliteElement ::= SEQUENCE (SIZE(1..32)) OF GANSSSatelliteElement

GANSSSatelliteElement ::= SEQUENCE {
	svID SVID,
 svHealth INTEGER (-7 .. 13), -- Coding according to Annex
 iod INTEGER (0 .. 1023), -- Coding according to Annex
 ganssClockModel GANSSClockModel, 
 ganssOrbitModel GANSSOrbitModel, 
 ...
}

-- GANSS orbit model for the GNSS satellite according to the choice
GANSSOrbitModel ::= CHOICE {
	keplerianSet	 NavModel-KeplerianSet,	
 ...
}

-- Navigation model in Keplerian parameters
NavModel-KeplerianSet ::= SEQUENCE {
 keplerToeLSB INTEGER (0 .. 511), -- 9LSB are given in GANSSNavigationModel
	keplerW			 INTEGER (-2147483648..2147483647),
	keplerDeltaN	 INTEGER (-32768..32767),
	keplerM0		 INTEGER (-2147483648..2147483647),
	keplerOmegaDot	 INTEGER (-8388608..8388607),
	keplerELSB 	 INTEGER (0..33554431),
	keplerIDot		 INTEGER (-8192..8191),
	keplerAPowerHalfLSB INTEGER (0.. 67108863),
	keplerI0		 INTEGER (-2147483648..2147483647),
	keplerOmega0 INTEGER (-2147483648..2147483647),
	keplerCrs		 INTEGER (-32768..32767),
	keplerCis		 INTEGER (-32768..32767),
	keplerCus		 INTEGER (-32768..32767),
	keplerCrc		 INTEGER (-32768..32767),
	keplerCic		 INTEGER (-32768..32767),
	keplerCuc		 INTEGER (-32768..32767)
}

-- GANSS clock model for the GNSS satellite according to the choice
GANSSClockModel ::= CHOICE {
	standardClockModelList	 SeqOfStandardClockModelElement,	
 ...
}

SeqOfStandardClockModelElement ::= SEQUENCE (SIZE(1..2)) OF StandardClockModelElement

StandardClockModelElement ::= SEQUENCE {
 stanClockTocLSB INTEGER (0 .. 511), -- 9LSB of time of clock
 stanClockAF2 INTEGER (-2048 .. 2047), 
 stanClockAF1 INTEGER (-131072 .. 131071), 
 stanClockAF0 INTEGER (-134217728 .. 134217727),
 stanClockTgd INTEGER (-512 .. 511) OPTIONAL,
 stanModelID INTEGER (0 .. 1) OPTIONAL,
 ...
} 

-- GANSS Real-Time Integrity IE
GANSSRealTimeIntegrity ::= SEQUENCE {
 -- list of bad signals
 -- NBS can be read from number of elements in SeqOf-BadSignalSet
 ganssBadSignalList SeqOfBadSignalElement
}

SeqOfBadSignalElement ::= SEQUENCE (SIZE(1..16)) OF BadSignalElement

BadSignalElement ::= SEQUENCE {
 badSVID SVID, -- Coding according to Annex
 badSignalID INTEGER (0 .. 3) OPTIONAL -- Coding according to Annex
}


-- GANSS Data Bit Assistance IE
GANSSDataBitAssist ::= SEQUENCE {
 ganssTOD INTEGER (0 .. 59),
 svID SVID,
 ganssDataTypeID INTEGER (0 .. 2), -- Coding according to Annex
 -- list of navigation data bits
 -- N_BIT can be read from number of elements in SeqOf-DataBits
 ganssDataBits SeqOf-GANSSDataBits
}

SeqOf-GANSSDataBits ::= SEQUENCE (SIZE(1 .. 1024)) OF GANSSDataBit
GANSSDataBit ::= INTEGER(0 .. 1)

-- GANSS Reference Measurement Assistance IE
-- Code and Doppler assistance from the network. 
GANSSRefMeasurementAssist ::= SEQUENCE {
 ganssSignalID INTEGER (0 .. 3) OPTIONAL, -- Coding according to Annex
 ganssRefMeasAssitList SeqOfGANSSRefMeasurementElement
}

SeqOfGANSSRefMeasurementElement ::= SEQUENCE (SIZE(1 .. 16)) OF GANSSRefMeasurementElement

GANSSRefMeasurementElement ::= SEQUENCE {
 svID SVID,
	-- Doppler 0th order term,
	-- -1024 m/s to 1023.5 m/s with 0.5 m/s resolution)
	doppler0				INTEGER (-2048 .. 2047),	-- Coding according to Annex
	additionalDoppler		AdditionalDopplerFields	 OPTIONAL,
	codePhase				INTEGER (0 .. 1022),	 -- Code Phase in ms
	intCodePhase			INTEGER (0 .. 127),	 -- Integer Code Phase in ms
	codePhaseSearchWindow	INTEGER (0 .. 31),	 -- Code Phase Search Window, see Annex
	additionalAngle			AddionalAngleFields		 OPTIONAL,
 ...
}

AdditionalDopplerFields ::= SEQUENCE {
	-- Doppler 1st order term, -0.2 - +0.1 m/s2
	doppler1				INTEGER (0..63),
	dopplerUncertainty		INTEGER (0..4)
}

-- GANSS Almanac Model IE
GANSSAlmanacModel ::= SEQUENCE {
 weekNumber INTEGER (0 .. 255),
 svIDMask SVIDMASK,
 toa INTEGER (0 .. 255) OPTIONAL,
 ioda INTEGER (0 .. 3) OPTIONAL,
 ganssAlmanacList SeqOfGANSSAlmanacElement
}

-- SV ID Mask, LSB for ID 1 and MSB for ID 36
SVIDMASK ::= BIT STRING (SIZE (1..36))

SeqOfGANSSAlmanacElement ::= SEQUENCE (SIZE(1 .. 36)) OF GANSSAlmanacElement

-- GANSS Almanac Model 
GANSSAlmanacElement ::= CHOICE {
	keplerianAlmanacSet	 Almanac-KeplerianSet,	
 ...
}

-- Almanac parameters according to Keplerian parameters
Almanac-KeplerianSet ::= SEQUENCE {
 	kepAlmanacE			 INTEGER (0 .. 2047),
	kepAlmanacDeltaI		INTEGER (-1024 .. 1023),
	kepAlmanacOmegaDot		INTEGER (-1024 .. 1023),
 kepSVHealth INTEGER (0 .. 15), -- Coding according to Annex
	kepAlmanacAPowerHalf	INTEGER (-65536 .. 65535),
	kepAlmanacOmega0		INTEGER (-32768 .. 32767),
	kepAlmanacW			 INTEGER (-32768 .. 32767),
	kepAlmanacM0			INTEGER (-32768 .. 32767),
	kepAlmanacAF0			INTEGER (-8192 .. 8191),
	kepAlmanacAF1			INTEGER (-1024..1023)
}

-- GANSS Universal Time Coordinate Model
GANSSUTCModel ::= SEQUENCE {
	ganssUtcA1			INTEGER (-8388608..8388607),
	ganssUtcA0			INTEGER (-2147483648..2147483647),
	ganssUtcTot			INTEGER (0..255),
	ganssUtcWNt			INTEGER (0..255),
	ganssUtcDeltaTls	INTEGER (-128..127),
	ganssUtcWNlsf		INTEGER (0..255),
	ganssUtcDN			INTEGER (-128..127),
	ganssUtcDeltaTlsf	INTEGER (-128..127)
}

--Required Measurement Request Response Time, range is 1 to 128 seconds. 
RequiredResponseTime ::= INTEGER  (1..128)

Rel-7-MsrPosition-Rsp-Extension ::= SEQUENCE {

	velEstimate 	VelocityEstimate OPTIONAL,
 -- Horizontal Velocity
 -- Horizontal with Vertical Velocity
 -- Horizontal Velocity with Uncertainty
 -- Horizontal with Vertical Velocity and Uncertainty
 ganssLocationInfo GANSSLocationInfo OPTIONAL,
 ganssMeasureInfo GANSSMeasureInfo OPTIONAL,
	...
-- Further Release 7 extensions here
}

-- GANSS Location Information contains location estimate, time stamp with uncertainty 
-- and optionally Reference Frame field
GANSSLocationInfo ::= SEQUENCE {
 referenceFrame ReferenceFrame OPTIONAL, -- Reference Frame Number
 ganssTODm GANSSTODm OPTIONAL, -- GNSS TOD modulo
 ganssTODFrac INTEGER (0 .. 16384) OPTIONAL, -- Coding according to Annex
	ganssTODUncertainty GANSSTODUncertainty OPTIONAL, -- Coding according to Annex
 ganssTimeID INTEGER (0 .. 3) OPTIONAL, -- Coding according to Annex
	fixType			 FixType,
 posData PositionData,
 stationaryIndication INTEGER(0 .. 1) OPTIONAL, -- '0' if moving or motion not known 
	-- Possible shapes carried in posEstimate are
	-- ellipsoid point,
	-- ellipsoid point with uncertainty circle
	-- ellipsoid point with uncertainty ellipse
	-- ellipsoid point with altitude and uncertainty ellipsoid
	posEstimate		 Ext-GeographicalInformation,
 ...
}

PositionData ::= BIT STRING {
 e-otd(0),
	gps (1),
	galileo (2) } (SIZE (3..16))


-- GANSS TOD modulo 1 hour
GANSSTODm ::= INTEGER (0 .. 3599999)

ReferenceFrame ::= SEQUENCE {
 referenceFN INTEGER (0 .. 65535),
	-- Note that applicable range for referenceFN is 0 - 42431
 referenceFNMSB INTEGER (0 .. 63) OPTIONAL -- MSB of Reference Frame Number
}



-- GANSS Measurement Information 
GANSSMeasureInfo ::= SEQUENCE {
	-- Measurement info elements
	-- user has to make sure that in this element is number of elements
	-- defined in reference BTS identity
 ganssMsrSetList SeqOfGANSS-MsrSetElement
}
SeqOfGANSS-MsrSetElement ::= SEQUENCE (SIZE(1..3)) OF GANSS-MsrSetElement

-- GANSS measurement information 1-3 times in a message
GANSS-MsrSetElement ::= SEQUENCE {
 referenceFrame ReferenceFrame OPTIONAL, -- Reference Frame Number
 ganssTODm GANSSTODm OPTIONAL, -- GANSS TOD modulo
 deltaGNASSTOD INTEGER (0 .. 127) OPTIONAL,
	ganssTODUncertainty GANSSTODUncertainty OPTIONAL, -- Coding accoring to Annex

 --N_SGN_TYPE can be read from number of elements of SeqOfGANSS-SgnTypeElement
 ganss-SgnTypeList SeqOfGANSS-SgnTypeElement
}

-- Measurements can be returned up to 6 different signal types 
SeqOfGANSS-SgnTypeElement ::= SEQUENCE (SIZE(1..6)) OF GANSS-SgnTypeElement

GANSS-SgnTypeElement ::= SEQUENCE {
	ganssSignalID		INTEGER (0 .. 15), -- Coding accroding to Annex
 --N_SGN can be read from number of elements of SeqOfGANSS-SgnElement
 ganss-SgnList SeqOfGANSS-SgnElement
}

-- Measurements can be returned up to 16 per signal types 
SeqOfGANSS-SgnElement ::= SEQUENCE (SIZE(1..16)) OF GANSS-SgnElement


GANSS-SgnElement ::= SEQUENCE {
 svID SVID,
 cNo INTEGER (0 .. 63),
 mpathDet MpathIndic, -- Coding according to Annex
 carrierQualityInd INTEGER (0 .. 3) OPTIONAL, -- Coding according to Annex
 codePhase INTEGER (0 .. 2097151),
 integerCodePhase INTEGER (0 .. 63) OPTIONAL,
 codePhaseRMSError INTEGER (0..63), -- Coding accoring to Annex
 doppler INTEGER (-32768 .. 32767) OPTIONAL,
 adr INTEGER (0 .. 33554431) OPTIONAL
}

Rel7-AssistanceData-Extension ::= SEQUENCE {
 ganss-AssistData GANSS-AssistData OPTIONAL,
 ganssCarrierPhaseMeasurementRequest NULL OPTIONAL,
 ganssTODGSMTimeAssociationMeasurementRequest NULL OPTIONAL,
	...
-- Possibly more extensions for Release 7 here
}

END
