diff --git a/rrlp-ephemeris/asn1/RRLP-Components.asn b/rrlp-ephemeris/asn1/RRLP-Components.asn
new file mode 100644
index 0000000..3bade6a
--- /dev/null
+++ b/rrlp-ephemeris/asn1/RRLP-Components.asn
@@ -0,0 +1,1488 @@
+-- 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
