diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/rrlp | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/rrlp')
-rw-r--r-- | epan/dissectors/asn1/rrlp/CMakeLists.txt | 37 | ||||
-rw-r--r-- | epan/dissectors/asn1/rrlp/RRLP-Components.asn | 2413 | ||||
-rw-r--r-- | epan/dissectors/asn1/rrlp/RRLP-Messages.asn | 39 | ||||
-rw-r--r-- | epan/dissectors/asn1/rrlp/packet-rrlp-template.c | 90 | ||||
-rw-r--r-- | epan/dissectors/asn1/rrlp/rrlp.cnf | 40 |
5 files changed, 2619 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/rrlp/CMakeLists.txt b/epan/dissectors/asn1/rrlp/CMakeLists.txt new file mode 100644 index 00000000..1253f692 --- /dev/null +++ b/epan/dissectors/asn1/rrlp/CMakeLists.txt @@ -0,0 +1,37 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +set( PROTOCOL_NAME rrlp ) + +set( PROTO_OPT ) + +set( EXT_ASN_FILE_LIST + ../gsm_map/MAP-ExtensionDataTypes.asn + ../gsm_map/MAP-LCS-DataTypes.asn +) + +set( ASN_FILE_LIST + RRLP-Messages.asn + RRLP-Components.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS ) + +ASN2WRS() diff --git a/epan/dissectors/asn1/rrlp/RRLP-Components.asn b/epan/dissectors/asn1/rrlp/RRLP-Components.asn new file mode 100644 index 00000000..11b13eee --- /dev/null +++ b/epan/dissectors/asn1/rrlp/RRLP-Components.asn @@ -0,0 +1,2413 @@ +-- RRLP-Components.asn +-- Taken from 3GPP TS 44.031 V11.0.0 (2012-09) +-- http://www.3gpp.org/ftp/Specs/archive/44_series/44.031/44031-b00.zip/44031-b00.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) version10 (10)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version10 (10)} +; + +-- 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, + -- When RRLP pseudo-segmentation is used, rel-5-MsrPosition-Rsp-Extension + -- and other possible future extensions should be the ones included in + -- the 2nd MsrPosition-Rsp component. + 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 +} + +-- Positioning Capability request component +PosCapability-Req ::= SEQUENCE { + extended-reference Extended-reference, + gANSSPositionMethods GANSSPositionMethods OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... +} + +-- Positioning Capability response component +PosCapability-Rsp ::= SEQUENCE { + extended-reference Extended-reference, + posCapabilities PosCapabilities, + +-- assistanceSupported shall be included if and only if any of the assistance data is supported + assistanceSupported AssistanceSupported OPTIONAL, + assistanceNeeded AssistanceNeeded OPTIONAL, + extensionContainer ExtensionContainer 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 LAC, -- Location area code + referenceCI CellID -- Cell identity +} +CellID ::= INTEGER (0..65535) +LAC ::= 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) OPTIONAL, -- 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, + add-GPS-AssistData Add-GPS-AssistData OPTIONAL, + ganssMultiFreqMeasurementRequest NULL OPTIONAL, + ... + -- Further Release 7 extensions here +} + +-- additional satellite systems may be added in future versions of the protocol +-- Bit 0 of GANSSPositioningMethod bit map shall not be the only one set to TRUE ('1') +GANSSPositioningMethod ::= BIT STRING { + gps (0), + galileo (1), + sbas (2), + modernizedGPS (3), + qzss (4), + glonass (5) } (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, + ... , + ganssAddIonosphericModel GANSSAddIonosphericModel OPTIONAL, + ganssEarthOrientParam GANSSEarthOrientParam OPTIONAL, + -- If GANSSReferenceTime is included, GANSSReferenceTime-R10-Ext shall also be included. + ganssReferenceTime-R10-Ext GANSSReferenceTime-R10-Ext 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, + ganssEphemerisExtension GANSSEphemerisExtension OPTIONAL, + ganssEphemerisExtCheck GANSSEphemerisExtensionCheck OPTIONAL, + ... , + sbasID INTEGER (0..7) OPTIONAL, -- Coding according to Annex + ganssAddUTCModel GANSSAddUTCModel OPTIONAL, + ganssAuxiliaryInfo GANSSAuxiliaryInformation OPTIONAL, + ganssDiffCorrectionsValidityPeriod GANSSDiffCorrectionsValidityPeriod OPTIONAL, + -- If SeqOfGANSSTimeModel is included, SeqOfGANSSTimeModel-R10-Ext shall also be included. + ganssTimeModel-R10-Ext SeqOfGANSSTimeModel-R10-Ext OPTIONAL, + -- If GANSSRefMeasurementAssist is included, GANSSRefMeasurementAssist-R10-Ext shall also be + -- included. + ganssRefMeasurementAssist-R10-Ext GANSSRefMeasurementAssist-R10-Ext OPTIONAL, + -- If GANSSAlmanacModel is included, GANSSAlmanacModel-R10-Ext shall also be included. + ganssAlmanacModel-R10-Ext GANSSAlmanacModel-R10-Ext 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 shall be present in this version of the protocol + 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 Reference Time Rel-10 Extension: +GANSSReferenceTime-R10-Ext ::= SEQUENCE { + ganssDayCycleNumber INTEGER(0..7) -- 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 Additional Ionospheric Model IE +-- GANSS Additional Ionospheric Model consists of Klobuchar model parameters +GANSSAddIonosphericModel ::= SEQUENCE { + dataID BIT STRING (SIZE (2)), -- Coding according to Annex + ionoModel IonosphericModel +} + +-- GANSS Earth Orientation Paramaters IE +GANSSEarthOrientParam ::= SEQUENCE { + teop INTEGER (0..65535), + pmX INTEGER (-1048576..1048575), + pmXdot INTEGER (-16384..16383), + pmY INTEGER (-1048576..1048575), + pmYdot INTEGER (-16384..16383), + deltaUT1 INTEGER (-1073741824..1073741823), + deltaUT1dot INTEGER (-262144..262143) +} + +-- 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), -- coding according to annex + 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) + +-- GANSS Time Model Rel-10 Extension: +SeqOfGANSSTimeModel-R10-Ext ::= SEQUENCE (SIZE(1..7)) OF GANSSTimeModelElement-R10-Ext + +GANSSTimeModelElement-R10-Ext ::= SEQUENCE { + gnssTOID INTEGER (0 .. 7), -- coding according to annex + deltaT INTEGER (-128..127) +} + +-- 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, -- signal type identity + ganssStatusHealth INTEGER (0 .. 7), + -- N_SAT can be read from number of elements of dganssSgnList + dganssSgnList SeqOfDGANSSSgnElement +} + +GANSSSignalID ::= INTEGER (0 .. 7) -- 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), + ganssSatelliteList SeqOfGANSSSatelliteElement +} + +SeqOfGANSSSatelliteElement ::= SEQUENCE (SIZE(1..32)) OF GANSSSatelliteElement + +GANSSSatelliteElement ::= SEQUENCE { + svID SVID, + svHealth BIT STRING (SIZE(5)), -- Coding according to Annex + iod INTEGER (0 .. 1023), -- Coding according to Annex + ganssClockModel GANSSClockModel, + ganssOrbitModel GANSSOrbitModel, + ..., + svHealthMSB BIT STRING (SIZE(1)) OPTIONAL, -- Coding according to Annex + iodMSB INTEGER (0 .. 1) OPTIONAL -- Coding according to Annex +} + +-- GANSS orbit model for the GNSS satellite according to the choice +GANSSOrbitModel ::= CHOICE { + keplerianSet NavModel-KeplerianSet, -- Model-1 + ... , + navKeplerianSet NavModel-NAVKeplerianSet, -- Model-2 + cnavKeplerianSet NavModel-CNAVKeplerianSet, -- Model-3 + glonassECEF NavModel-GLONASSecef, -- Model-4 + sbasECEF NavModel-SBASecef -- Model-5 +} + +-- Navigation model in Keplerian parameters +NavModel-KeplerianSet ::= SEQUENCE { + keplerToe INTEGER (0 .. 16383), + keplerW INTEGER (-2147483648..2147483647), + keplerDeltaN INTEGER (-32768..32767), + keplerM0 INTEGER (-2147483648..2147483647), + keplerOmegaDot INTEGER (-8388608..8388607), + keplerE INTEGER (0..4294967295), + keplerIDot INTEGER (-8192..8191), + keplerAPowerHalf INTEGER (0.. 4294967295), + 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) +} + +NavModel-NAVKeplerianSet ::= SEQUENCE { + navURA INTEGER (0..15), + navFitFlag INTEGER (0..1), + navToe INTEGER (0..37799), + navOmega INTEGER (-2147483648..2147483647), + navDeltaN INTEGER (-32768..32767), + navM0 INTEGER (-2147483648..2147483647), + navOmegaADot INTEGER (-8388608..8388607), + navE INTEGER (0..4294967295), + navIDot INTEGER (-8192..8191), + navAPowerHalf INTEGER (0..4294967295), + navI0 INTEGER (-2147483648..2147483647), + navOmegaA0 INTEGER (-2147483648..2147483647), + navCrs INTEGER (-32768..32767), + navCis INTEGER (-32768..32767), + navCus INTEGER (-32768..32767), + navCrc INTEGER (-32768..32767), + navCic INTEGER (-32768..32767), + navCuc INTEGER (-32768..32767) +} + +NavModel-CNAVKeplerianSet ::= SEQUENCE { + cnavTop INTEGER (0..2015), + cnavURAindex INTEGER (-16..15), + cnavDeltaA INTEGER (-33554432..33554431), + cnavAdot INTEGER (-16777216..16777215), + cnavDeltaNo INTEGER (-65536..65535), + cnavDeltaNoDot INTEGER (-4194304..4194303), + cnavMo INTEGER (-4294967296..4294967295), + cnavE INTEGER (0..8589934591), + cnavOmega INTEGER (-4294967296..4294967295), + cnavOMEGA0 INTEGER (-4294967296..4294967295), + cnavDeltaOmegaDot INTEGER (-65536..65535), + cnavIo INTEGER (-4294967296..4294967295), + cnavIoDot INTEGER (-16384..16383), + cnavCis INTEGER (-32768..32767), + cnavCic INTEGER (-32768..32767), + cnavCrs INTEGER (-8388608..8388607), + cnavCrc INTEGER (-8388608..8388607), + cnavCus INTEGER (-1048576..1048575), + cnavCuc INTEGER (-1048576..1048575) +} + +NavModel-GLONASSecef ::= SEQUENCE { + gloEn INTEGER (0..31), + gloP1 BIT STRING (SIZE(2)), + gloP2 BOOLEAN, + gloM INTEGER (0..3), + gloX INTEGER (-67108864..67108863), + gloXdot INTEGER (-8388608..8388607), + gloXdotdot INTEGER (-16..15), + gloY INTEGER (-67108864..67108863), + gloYdot INTEGER (-8388608..8388607), + gloYdotdot INTEGER (-16..15), + gloZ INTEGER (-67108864..67108863), + gloZdot INTEGER (-8388608..8388607), + gloZdotdot INTEGER (-16..15) +} + + +NavModel-SBASecef ::= SEQUENCE { + sbasTo INTEGER (0..5399) OPTIONAL, + sbasAccuracy BIT STRING (SIZE(4)), + sbasXg INTEGER (-536870912..536870911), + sbasYg INTEGER (-536870912..536870911), + sbasZg INTEGER (-16777216..16777215), + sbasXgDot INTEGER (-65536..65535), + sbasYgDot INTEGER (-65536..65535), + sbasZgDot INTEGER (-131072..131071), + sbasXgDotDot INTEGER (-512..511), + sbagYgDotDot INTEGER (-512..511), + sbasZgDotDot INTEGER (-512..511) +} + +-- GANSS clock model for the GNSS satellite according to the choice +GANSSClockModel ::= CHOICE { + standardClockModelList SeqOfStandardClockModelElement, -- Model-1 + ... , + navClockModel NAVclockModel, -- Model-2 + cnavClockModel CNAVclockModel, -- Model-3 + glonassClockModel GLONASSclockModel, -- Model-4 + sbasClockModel SBASclockModel -- Model-5 +} + +SeqOfStandardClockModelElement ::= SEQUENCE (SIZE(1..2)) OF StandardClockModelElement + +StandardClockModelElement ::= SEQUENCE { + stanClockToc INTEGER (0 .. 16383), + stanClockAF2 INTEGER (-2048 .. 2047), + stanClockAF1 INTEGER (-131072 .. 131071), + stanClockAF0 INTEGER (-134217728 .. 134217727), + stanClockTgd INTEGER (-512 .. 511) OPTIONAL, + stanModelID INTEGER (0 .. 1) OPTIONAL, + ... +} + +NAVclockModel ::= SEQUENCE { + navToc INTEGER (0.. 37799), + navaf2 INTEGER (-128..127), + navaf1 INTEGER (-32768..32767), + navaf0 INTEGER (-2097152..2097151), + navTgd INTEGER (-128..127) +} + +CNAVclockModel ::= SEQUENCE { + cnavToc INTEGER (0..2015), + cnavTop INTEGER (0..2015), + cnavURA0 INTEGER (-16..15), + cnavURA1 INTEGER (0..7), + cnavURA2 INTEGER (0..7), + cnavAf2 INTEGER (-512..511), + cnavAf1 INTEGER (-524288..524287), + cnavAf0 INTEGER (-33554432..33554431), + cnavTgd INTEGER (-4096..4095), + cnavISCl1cp INTEGER (-4096..4095) OPTIONAL, + cnavISCl1cd INTEGER (-4096..4095) OPTIONAL, + cnavISCl1ca INTEGER (-4096..4095) OPTIONAL, + cnavISCl2c INTEGER (-4096..4095) OPTIONAL, + cnavISCl5i5 INTEGER (-4096..4095) OPTIONAL, + cnavISCl5q5 INTEGER (-4096..4095) OPTIONAL +} + +GLONASSclockModel ::= SEQUENCE { + gloTau INTEGER (-2097152..2097151), + gloGamma INTEGER (-1024..1023), + gloDeltaTau INTEGER (-16..15) OPTIONAL +} + +SBASclockModel ::= SEQUENCE { + sbasTo INTEGER (0..5399), + sbasAgfo INTEGER (-2048..2047), + sbasAgf1 INTEGER (-128..127) +} + +-- GANSS Real-Time Integrity IE +GANSSRealTimeIntegrity ::= SEQUENCE { + -- list of satellites with 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 GANSSSignals OPTIONAL -- Coding according to Annex +} + +-- GANSS Data Bit Assistance IE +GANSSDataBitAssist ::= SEQUENCE { + ganssTOD INTEGER (0 .. 59), + -- N_SAT can be read from number of elements in SeqOfGanssDataBitsElement + ganssDataBitsSatList SeqOfGanssDataBitsElement, + ... +} + +SeqOfGanssDataBitsElement ::= SEQUENCE (SIZE(1 .. 32))OF GanssDataBitsElement + +GanssDataBitsElement ::= SEQUENCE { + svID SVID, + -- N_SGN can be read from number of elements in Seq-OfGANSSDataBitsSgn + ganssDataBitsSgnList Seq-OfGANSSDataBitsSgn, + ... +} + +Seq-OfGANSSDataBitsSgn ::= SEQUENCE (SIZE(1..8)) OF GANSSDataBitsSgnElement + +GANSSDataBitsSgnElement ::= SEQUENCE { + ganssSignalType GANSSSignalID, + -- 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 GANSSSignalID, -- Coding according to Annex + ganssRefMeasAssistList 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 + -- ( = -42 + (0 to 63) with 1/210 m/s2 resolution) + doppler1 INTEGER (0..63), + dopplerUncertainty INTEGER (0..4) +} +-- GANSS Reference Measurement Rel-10 Extension: +-- GANSSRefMeasurementAssist-R10-Ext shall contain the same number of elements as the +-- SeqOfGANSSRefMeasurementElement included in GANSSRefMeasurementAssist IE +GANSSRefMeasurementAssist-R10-Ext ::= SEQUENCE (SIZE(1 .. 16)) OF + GANSSRefMeasurement-R10-Ext-Element + +GANSSRefMeasurement-R10-Ext-Element ::= SEQUENCE { + svID SVID, + azimuthLSB INTEGER(0..15), + elevationLSB INTEGER(0..15) +} + +-- GANSS Almanac Model IE +GANSSAlmanacModel ::= SEQUENCE { + weekNumber INTEGER (0 .. 255), + toa INTEGER (0 .. 255) OPTIONAL, + ioda INTEGER (0 .. 3) OPTIONAL, + ganssAlmanacList SeqOfGANSSAlmanacElement +} + + +SeqOfGANSSAlmanacElement ::= SEQUENCE (SIZE(1 .. 36)) OF GANSSAlmanacElement + +-- GANSS Almanac Model +GANSSAlmanacElement ::= CHOICE { + keplerianAlmanacSet Almanac-KeplerianSet, -- Model-1 + ..., + keplerianNAVAlmanac Almanac-NAVKeplerianSet, -- Model-2 + keplerianReducedAlmanac Almanac-ReducedKeplerianSet, -- Model-3 + keplerianMidiAlmanac Almanac-MidiAlmanacSet, -- Model-4 + keplerianGLONASS Almanac-GlonassAlmanacSet, -- Model-5 + ecefSBASAlmanac Almanac-ECEFsbasAlmanacSet -- Model-6 +} + +-- Almanac parameters according to Keplerian parameters +Almanac-KeplerianSet ::= SEQUENCE { + svID SVID, + 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) +} + +Almanac-NAVKeplerianSet ::= SEQUENCE { + svID SVID, + navAlmE INTEGER (0..65535), + navAlmDeltaI INTEGER (-32768..32767), + navAlmOMEGADOT INTEGER (-32768..32767), + navAlmSVHealth INTEGER (0..255), + navAlmSqrtA INTEGER (0..16777215), + navAlmOMEGAo INTEGER (-8388608..8388607), + navAlmOmega INTEGER (-8388608..8388607), + navAlmMo INTEGER (-8388608..8388607), + navAlmaf0 INTEGER (-1024..1023), + navAlmaf1 INTEGER (-1024..1023) +} + +Almanac-ReducedKeplerianSet ::= SEQUENCE { + svID SVID, + redAlmDeltaA INTEGER (-128..127), + redAlmOmega0 INTEGER (-64..63), + redAlmPhi0 INTEGER (-64..63), + redAlmL1Health BOOLEAN, + redAlmL2Health BOOLEAN, + redAlmL5Health BOOLEAN +} + +Almanac-MidiAlmanacSet ::= SEQUENCE { + svID SVID, + midiAlmE INTEGER (0..2047), + midiAlmDeltaI INTEGER (-1024..1023), + midiAlmOmegaDot INTEGER (-1024..1023), + midiAlmSqrtA INTEGER (0..131071), + midiAlmOmega0 INTEGER (-32768..32767), + midiAlmOmega INTEGER (-32768..32767), + midiAlmMo INTEGER (-32768..32767), + midiAlmaf0 INTEGER (-1024..1023), + midiAlmaf1 INTEGER (-512..511), + midiAlmL1Health BOOLEAN, + midiAlmL2Health BOOLEAN, + midiAlmL5Health BOOLEAN +} + +Almanac-GlonassAlmanacSet ::= SEQUENCE { + gloAlmNA INTEGER (1..1461), + gloAlmnA INTEGER (1..24), + gloAlmHA INTEGER (0..31), + gloAlmLambdaA INTEGER (-1048576..1048575), + gloAlmtlambdaA INTEGER (0..2097151), + gloAlmDeltaIa INTEGER (-131072..131071), + gloAlmDeltaTA INTEGER (-2097152..2097151), + gloAlmDeltaTdotA INTEGER (-64..63), + gloAlmEpsilonA INTEGER (0..32767), + gloAlmOmegaA INTEGER (-32768..32767), + gloAlmTauA INTEGER (-512..511), + gloAlmCA INTEGER (0..1), + gloAlmMA BIT STRING (SIZE(2)) OPTIONAL +} + +Almanac-ECEFsbasAlmanacSet ::= SEQUENCE { + sbasAlmDataID INTEGER (0..3), + svID SVID, + sbasAlmHealth BIT STRING (SIZE(8)), + sbasAlmXg INTEGER (-16384..16383), + sbasAlmYg INTEGER (-16384..16383), + sbasAlmZg INTEGER (-256..255), + sbasAlmXgdot INTEGER (-4..3), + sbasAlmYgDot INTEGER (-4..3), + sbasAlmZgDot INTEGER (-8..7), + sbasAlmTo INTEGER (0..2047) +} + +-- GANSS Almanac Model Rel-10 Extension +GANSSAlmanacModel-R10-Ext ::= SEQUENCE { + completeAlmanacProvided BOOLEAN -- TRUE means that complete Almanac is provided +} + +-- GANSS Universal Time Coordinate Model (Model-1) +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) +} + +--GANSS Ephemeris Extension +GANSSEphemerisExtension ::= SEQUENCE { + ganssEphemerisHeader GANSSEphemerisExtensionHeader OPTIONAL, + ganssReferenceSet SeqOfGANSSRefOrbit OPTIONAL, + ganssephemerisDeltasMatrix GANSSEphemerisDeltaMatrix OPTIONAL, +... +} + +-- The ganssEphemerisHeader and the ganssReferenceSet are mandatory only once in the delivery of the +-- GANSS Ephemeris Extension. The ganssReferenceSet shall include all healthy satellite vehicles +-- at the time of message construction. + +GANSSEphemerisExtensionHeader ::= SEQUENCE { + timeAtEstimation GANSSEphemerisExtensionTime, + validityPeriod INTEGER(1..8), +-- The validity period, represented in hours, is the validity period of each individual ephemeris +-- delta payload + ephemerisExtensionDuration INTEGER(1..512), +-- If the ephemerisExtensionDuration does not match the request duration made by the MS, the MS +-- should regard the provided ephemerisExtensionDuration as the limit of the SMLC ephemeris +-- extension capability at this time. +... +} + +GANSSEphemerisExtensionTime ::= SEQUENCE { + ganssEphExtDay INTEGER(0..8191), + ganssEphExtTOD GANSSTOD, +... +} + +-- Reference Nav Model for Ephepmeris Extension +ReferenceNavModel ::= SEQUENCE { + keplerToe INTEGER (0..37799), + keplerW INTEGER (-2147483648..2147483647), + keplerDeltaN INTEGER (-32768..32767), + keplerM0 INTEGER (-2147483648..2147483647), + keplerOmegaDot INTEGER (-8388608..8388607), + keplerE INTEGER (0..4294967295), + keplerIDot INTEGER (-8192..8191), + keplerAPowerHalf INTEGER (0.. 4294967295), + 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) +} + +SeqOfGANSSRefOrbit ::= SEQUENCE (SIZE(1..32)) OF GANSSReferenceOrbit +--The number of reference orbits can be read from number of elements in this sequence + +GANSSReferenceOrbit ::= SEQUENCE { + svID SVID, + ganssOrbitModel ReferenceNavModel, + ganssClockModel GANSSClockModel, +... +} + +GANSSEphemerisDeltaMatrix ::= SEQUENCE (SIZE(1 .. 128)) OF GANSSEphemerisDeltaEpoch + +GANSSEphemerisDeltaEpoch ::= SEQUENCE { + ganssDeltaEpochHeader GANSSDeltaEpochHeader OPTIONAL, + ganssDeltaElementList GANSSDeltaElementList, +... +} +-- Each GANSSDeltaEpoch element contains a header and the delta values for a particular time window +-- for all PRN's. + +GANSSDeltaEpochHeader ::= SEQUENCE { + validityPeriod INTEGER(1..8) OPTIONAL, + ephemerisDeltaSizes GANSSEphemerisDeltaBitSizes OPTIONAL, + ephemerisDeltaScales GANSSEphemerisDeltaScales OPTIONAL, +... +} +-- In each of the GANSSDeltaEpochs, if the optional element, validityPeriod is not included, the +-- value in GANSSEphemerisExtensionHeader shall be used. If the optional elements +-- ephemerisDeltaSizes or ephemerisDeltaScales are not included, then the default ephemeris delta +-- sizes and scales shall be used. The default sizes and scales are found in the annex in the +-- table 55.11. + +GANSSDeltaElementList ::= SEQUENCE (SIZE(1 .. 32)) OF OCTET STRING(SIZE (1..49)) +-- Each octet string element in GANSSDeltaElementList corresponds to one PRN within one epoch + +-- Table 55.11 of the annex shows the organization of the delta ephemeris octet string. +-- Decoding of each of the octet strings is accomplished by consulting the ephemerisDeltaSizes +-- table to learn the length and order of each of the parameters in the ephemerisDelta payload. + +-- Post decode scaling is accomplished by consulting the ephemerisDeltaScales table to learn the +-- scale factors to apply to the terms in the delta ephemeris. + +-- Ephemeris Delta Bit Sizes. + +GANSSEphemerisDeltaBitSizes ::= SEQUENCE { + +-- This structure defines the order and sizes of the fields in the GANSSDeltaEpoch octet string +-- seqNum and svID are the first two elements of each GANSS Ephemeris Delta Element Structure +-- seqNum is always 7 bits, and svID is always 6 bits long and are thus not included in +-- the GANSSEphemerisDeltaBitSizes table. The value of seqNum indicates the GANSSDeltaEpoch number + +-- The Ephemeris delta element payload mimics the bitsize table, but also includes the svID and +-- seqNum as the first two elements (in that order),in each block. + + bitsize-delta-omega INTEGER(1..32), + bitsize-delta-deltaN INTEGER(1..16), + bitsize-delta-m0 INTEGER(1..32), + bitsize-delta-omegadot INTEGER(1..24), + bitsize-delta-e INTEGER(1..32), + bitsize-delta-idot INTEGER(1..14), + bitsize-delta-sqrtA INTEGER(1..32), + bitsize-delta-i0 INTEGER(1..32), + bitsize-delta-omega0 INTEGER(1..32), + bitsize-delta-crs INTEGER(1..16), + bitsize-delta-cis INTEGER(1..16), + bitsize-delta-cus INTEGER(1..16), + bitsize-delta-crc INTEGER(1..16), + bitsize-delta-cic INTEGER(1..16), + bitsize-delta-cuc INTEGER(1..16), + bitsize-delta-tgd1 INTEGER(1..10), + bitsize-delta-tgd2 INTEGER(1..10), +... +} + +GANSSEphemerisDeltaScales ::= SEQUENCE { + + scale-delta-omega INTEGER(-16..15), + scale-delta-deltaN INTEGER(-16..15), + scale-delta-m0 INTEGER(-16..15), + scale-delta-omegadot INTEGER(-16..15), + scale-delta-e INTEGER(-16..15), + scale-delta-idot INTEGER(-16..15), + scale-delta-sqrtA INTEGER(-16..15), + scale-delta-i0 INTEGER(-16..15), + scale-delta-omega0 INTEGER(-16..15), + scale-delta-crs INTEGER(-16..15), + scale-delta-cis INTEGER(-16..15), + scale-delta-cus INTEGER(-16..15), + scale-delta-crc INTEGER(-16..15), + scale-delta-cic INTEGER(-16..15), + scale-delta-cuc INTEGER(-16..15), + scale-delta-tgd1 INTEGER(-16..15), + scale-delta-tgd2 INTEGER(-16..15), +... +} + +-- GANSS Ephemeris Extension Check +GANSSEphemerisExtensionCheck ::= SEQUENCE { + ganssBeginTime GANSSEphemerisExtensionTime, + ganssEndTime GANSSEphemerisExtensionTime, + ganssSatEventsInfo GANSSSatEventsInfo, +... +} + +GANSSSatEventsInfo ::= SEQUENCE { + eventOccured BIT STRING (SIZE (64)), + futureEventNoted BIT STRING (SIZE (64)), +... +} +-- If a bit is clear in the eventOccured field it indicates that no known errors have occured +-- between the current time and the ganssBeginTime nor is a maneuver planned for the next sixty +-- minutes. +-- If a bit is set in the futureEventNoted field it indicates that a maneuver is planned during the +-- time period between current time plus sixty minutes and the ganssEndTime +-- GANSS Additional Universal Time Coordinate Model +GANSSAddUTCModel ::= CHOICE { + utcModel2 UTCmodelSet2, + utcModel3 UTCmodelSet3, + utcModel4 UTCmodelSet4, + ... +} + +UTCmodelSet2 ::= SEQUENCE { + utcA0 INTEGER (-32768..32767), + utcA1 INTEGER (-4096.. 4095), + utcA2 INTEGER (-64..63), + utcDeltaTls INTEGER (-128.. 127), + utcTot INTEGER (0..65535), + utcWNot INTEGER (0..8191), + utcWNlsf INTEGER (0..255), + utcDN BIT STRING (SIZE(4)), + utcDeltaTlsf INTEGER (-128..127) +} + +UTCmodelSet3 ::= SEQUENCE { + nA INTEGER (1..1461), + tauC INTEGER (-2147483648..2147483647), + b1 INTEGER (-1024..1023) OPTIONAL, + b2 INTEGER (-512..511) OPTIONAL, + kp BIT STRING (SIZE(2)) OPTIONAL +} + +UTCmodelSet4 ::= SEQUENCE { + utcA1wnt INTEGER (-8388608..8388607), + utcA0wnt 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), + utcStandardID INTEGER (0..7) -- coding according to annex +} + +-- GANSS Auxiliary Information +GANSSAuxiliaryInformation ::= CHOICE{ + ganssID1 GANSS-ID1, -- This choice may only be present if GANSS ID indicates Modernized GPS + ganssID3 GANSS-ID3, -- This choice may only be present if GANSS ID indicates GLONASS + ... +} + +GANSS-ID1 ::= SEQUENCE (SIZE(1..64)) OF GANSS-ID1-element + +GANSS-ID1-element ::= SEQUENCE { + svID SVID, + signalsAvailable GANSSSignals, + ... +} + +GANSS-ID3 ::= SEQUENCE (SIZE(1..64)) OF GANSS-ID3-element + +GANSS-ID3-element ::= SEQUENCE { + svID SVID, + signalsAvailable GANSSSignals, + channelNumber INTEGER (-7..13), + ... +} + +-- DGANSS Corrections Validity Period: +-- This element may only be included if GANSSDiffCorrections IE is included in +-- GANSSGenericAssistDataElement element. +-- GANSSDiffCorrectionsValidityPeriod shall contain the same number of elements as the +-- SeqOfSgnTypeElement included in GANSSDiffCorrections IE +GANSSDiffCorrectionsValidityPeriod ::= SEQUENCE (SIZE (1..3)) OF DGANSSExtensionSgnTypeElement + +DGANSSExtensionSgnTypeElement ::= SEQUENCE { + ganssSignalID GANSSSignalID, -- signal type identity + dganssExtensionSgnList SeqOfDGANSSExtensionSgnElement +} + +-- SeqOfDGANSSExtensionSgnElement shall contain the same number of elements as the +-- SeqOfDGANSSSgnElement included in GANSSDiffCorrections IE +SeqOfDGANSSExtensionSgnElement ::= SEQUENCE (SIZE (1..16)) OF DGANSSExtensionSgnElement + +DGANSSExtensionSgnElement ::= SEQUENCE { + svID SVID, -- Satellite identity + udreGrowthRate INTEGER(0..7), -- coding according to annex + udreValidityTime INTEGER(0..7), -- coding according to annex + ... +} + +--Required Measurement Request Response Time, range is 1 to 128 seconds. +RequiredResponseTime ::= INTEGER (1..128) + +-- Control header for additional GPS assistance data +Add-GPS-AssistData ::= SEQUENCE { + add-GPS-controlHeader Add-GPS-ControlHeader +} + +Add-GPS-ControlHeader ::= SEQUENCE { + gpsEphemerisExtension GPSEphemerisExtension OPTIONAL, + gpsEphemerisExtensionCheck GPSEphemerisExtensionCheck OPTIONAL, + ... , + dgpsCorrectionsValidityPeriod DGPSCorrectionsValidityPeriod OPTIONAL, + -- If ReferenceTime is included in ControlHeader, GPSReferenceTime-R10-Ext + -- shall also be included. + gpsReferenceTime-R10-Ext GPSReferenceTime-R10-Ext OPTIONAL, + -- If AcquisAssist is included in ControlHeader, GPSAcquisAssist-R10-Ext + -- shall also be included. + gpsAcquisAssist-R10-Ext GPSAcquisAssist-R10-Ext OPTIONAL, + -- If Almanac is included in ControlHeader, GPSAlmanac-R10-Ext + -- shall also be included. + gpsAlmanac-R10-Ext GPSAlmanac-R10-Ext OPTIONAL +} + +GPSClockModel ::= SEQUENCE { + af2 INTEGER (-128..127), + af1 INTEGER (-32768..32767), + af0 INTEGER (-2097152..2097151), + tgd INTEGER (-128..127) +} + +--GPS Ephemeris Extension +GPSEphemerisExtension ::= SEQUENCE { + gpsEphemerisHeader GPSEphemerisExtensionHeader OPTIONAL, + gpsReferenceSet SeqOfGPSRefOrbit OPTIONAL, + gpsephemerisDeltaMatrix GPSEphemerisDeltaMatrix OPTIONAL, +... +} + +-- The gpsEphemerisHeader and the gpsReferenceSet are mandatory only once in the delivery of the +-- GPS Ephemeris Extension. The gpsReferenceSet shall include all healthy satellite vehicles at the +-- time of message construction + +-- The SMLC is required to deliver the gpsReferenceSet for all healthy satellite vehicles +-- at the time of message construction. + +GPSEphemerisExtensionHeader ::= SEQUENCE { + timeofEstimation GPSEphemerisExtensionTime, + validityPeriod INTEGER(1..8), +-- The validity period, represented in hours is the validity period of each individual ephemeris +-- delta payload + ephemerisExtensionDuration INTEGER(1..512), +-- If the ephemerisExtensionDuration does not match the request duration made by the MS, the MS +-- should regard the provided ephemerisExtensionDuration as the limit of the SMLC ephemeris +-- extension capability at this time. +... +} + +GPSEphemerisExtensionTime ::= SEQUENCE { + gpsWeek GPSWeek, + gpsTOW INTEGER (0..604799), +... +} + +SeqOfGPSRefOrbit ::= SEQUENCE (SIZE(1..32)) OF GPSReferenceOrbit +--The number of reference orbits can be read from number of elements in this sequence + +GPSReferenceOrbit ::= SEQUENCE { + svID SVID, + gpsOrbitModel ReferenceNavModel, + gpsClockModel GPSClockModel, +... +} + +GPSEphemerisDeltaMatrix ::= SEQUENCE (SIZE(1 .. 128)) OF GPSEphemerisDeltaEpoch + +GPSEphemerisDeltaEpoch ::= SEQUENCE { + gpsDeltaEpochHeader GPSDeltaEpochHeader OPTIONAL, + gpsDeltaElementList GPSDeltaElementList, +... +} + +-- Each GPSDeltaEpoch element contains a header and the delta values for a particular time window +-- for all PRN's. +GPSDeltaEpochHeader ::= SEQUENCE { + validityPeriod INTEGER(1..8) OPTIONAL, + ephemerisDeltaSizes GPSEphemerisDeltaBitSizes OPTIONAL, + ephemerisDeltaScales GPSEphemerisDeltaScales OPTIONAL, +... +} + +-- In each of the GPSDeltaEpochs, if the optional element validityPeriod is not included, +-- the value in GPSEphemerisExtensionHeader shall be used. if the optional elements +-- ephemerisDeltaSizes or ephemerisDeltaScales are not included, then the default ephemeris delta +-- sizes and scales shall be used. The default sizes and scales are found in the annex in section +-- A.29.m + +GPSDeltaElementList ::= SEQUENCE (SIZE(1 .. 32)) OF OCTET STRING(SIZE (1..47)) + +-- Each octet string element in GPSDeltaElementList corresponds to one PRN within one epoch + +-- Table A.29.m of the annex shows the organization of the delta ephemeris octet string. +-- Decoding of each of the octet strings is accomplished by consulting the ephemerisDeltaSizes +-- table to learn the length and order of each of the parameters in the ephemerisDelta payload + +-- Post decode scaling is accomplished by consulting the ephemerisDeltaScales table to learn the. +-- scale factors to apply to the terms in the delta ephemeris + +-- Ephemeris Delta Bit Sizes. + +GPSEphemerisDeltaBitSizes ::= SEQUENCE { + +-- This structure defines the order and sizes of the fields in the GPSsDeltaEpoch octet string +-- seqNum and svID are the first two elements of each GPS Ephemeris Delta Element Structure +-- seqNum is always 7 bits, and svID is always 5 bits long and are thus not included in +-- the GPSEphemerisDeltaBitSizes table. seqNum indicates the GPSDeltaEpoch number. + +-- The Ephemeris delta element payload mimics the bitsize table, but also includes the svID and +-- seqNum as the first two elements (in that order),in each block. + + bitsize-delta-omega INTEGER(1..32), + bitsize-delta-deltaN INTEGER(1..16), + bitsize-delta-m0 INTEGER(1..32), + bitsize-delta-omegadot INTEGER(1..24), + bitsize-delta-e INTEGER(1..32), + bitsize-delta-idot INTEGER(1..14), + bitsize-delta-sqrtA INTEGER(1..32), + bitsize-delta-i0 INTEGER(1..32), + bitsize-delta-omega0 INTEGER(1..32), + bitsize-delta-crs INTEGER(1..16), + bitsize-delta-cis INTEGER(1..16), + bitsize-delta-cus INTEGER(1..16), + bitsize-delta-crc INTEGER(1..16), + bitsize-delta-cic INTEGER(1..16), + bitsize-delta-cuc INTEGER(1..16), + bitsize-delta-tgd INTEGER(1..10), +... +} + +GPSEphemerisDeltaScales ::= SEQUENCE { + scale-delta-omega INTEGER(-16..15), + scale-delta-deltaN INTEGER(-16..15), + scale-delta-m0 INTEGER(-16..15), + scale-delta-omegadot INTEGER(-16..15), + scale-delta-e INTEGER(-16..15), + scale-delta-idot INTEGER(-16..15), + scale-delta-sqrtA INTEGER(-16..15), + scale-delta-i0 INTEGER(-16..15), + scale-delta-omega0 INTEGER(-16..15), + scale-delta-crs INTEGER(-16..15), + scale-delta-cis INTEGER(-16..15), + scale-delta-cus INTEGER(-16..15), + scale-delta-crc INTEGER(-16..15), + scale-delta-cic INTEGER(-16..15), + scale-delta-cuc INTEGER(-16..15), + scale-delta-tgd INTEGER(-16..15), +... +} + +GPSEphemerisExtensionCheck ::= SEQUENCE { + gpsBeginTime GPSEphemerisExtensionTime, + gpsEndTime GPSEphemerisExtensionTime, + gpsSatEventsInfo GPSSatEventsInfo, +... +} + +GPSSatEventsInfo ::= SEQUENCE { + eventOccured BIT STRING (SIZE (32)), + futureEventNoted BIT STRING (SIZE (32)), +... +} +-- If a bit is clear in the eventOccured field it indicates that no known errors have occured since +-- the gpsBeginTime nor is a maneuver planned for the next sixty minutes. +-- If a bit is set in the futureEventNoted field it indicates that a maneuver is planned during the +-- time period between current time plus sixty minutes and gpsEndTime + +-- DGPS Corrections Validity Period: +-- This element may only be included if DGPSCorrections IE is included in ControlHeader element. +-- DGPSCorrectionsValidityPeriod shall contain the same number of elements as the SeqOfSatElement +-- included in DGPSCorrections IE +DGPSCorrectionsValidityPeriod ::= SEQUENCE (SIZE (1..16)) OF DGPSExtensionSatElement + +DGPSExtensionSatElement ::= SEQUENCE { + satelliteID SatelliteID, + udreGrowthRate INTEGER(0..7), -- coding according to annex + udreValidityTime INTEGER(0..7), -- coding according to annex + ... +} + +-- GPS Reference Time Rel-10 Extension: +GPSReferenceTime-R10-Ext ::= SEQUENCE { + gpsWeekCycleNumber INTEGER(0..7) -- coding according to annex +} + +-- GPS Acquisition Assistance Rel-10 Extension: +-- GPSAcquisAssist-R10-Ext shall contain the same number of elements as the SeqOfAcquisElement +-- included in AcquisAssist IE +GPSAcquisAssist-R10-Ext ::= SEQUENCE(SIZE (1..16)) OF GPSAcquisAssist-R10-Ext-Element + +GPSAcquisAssist-R10-Ext-Element::= SEQUENCE { + satelliteID SatelliteID, + azimuthLSB INTEGER(0..15), + elevationLSB INTEGER(0..15) +} + +-- GPS Almanac Rel-10 Extension: +GPSAlmanac-R10-Ext ::= SEQUENCE { + completeAlmanacProvided BOOLEAN -- TRUE means that complete Almanac is provided +} + +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 + -- a value of 16384 shall not be encoded by the sender + -- the receiver shall consider a value of 16384 to be invalid data + ganssTODUncertainty GANSSTODUncertainty OPTIONAL, -- Coding according to Annex + ganssTimeID INTEGER (0 .. 7) 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), + sbas (3), + modernizedGPS (4), + qzss (5), + glonass (6) } (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 +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 + -- if ganssTODm is included, it is the GNSS specific system time of the GANSS reported + -- first in ganss-SgnTypeList. If GPS Measurement Information element is not included in + -- a Measure Position Response component, this field shall be present. + ganssTODm GANSSTODm OPTIONAL, -- GANSS TOD modulo 1 hour + deltaGANSSTOD INTEGER (0 .. 127) OPTIONAL, + ganssTODUncertainty GANSSTODUncertainty OPTIONAL, -- Coding according to Annex + --N_GANSS can be read from number of elements of SeqOfGANSS-MsrElement + ganss-MsrElementList SeqOfGANSS-MsrElement +} + +SeqOfGANSS-MsrElement ::= SEQUENCE (SIZE(1..8)) OF GANSS-MsrElement + +GANSS-MsrElement ::= SEQUENCE { + ganssID INTEGER (0..7) OPTIONAL, --Absence means Galileo + ganss-SgnTypeList SeqOfGANSS-SgnTypeElement +} + +-- Measurements can be returned up to 8 different signal types +-- N_SGN_TYPE can be read from number of elements of SeqOfGANSS-SgnTypeElement +-- Reporting of multiple signal types as defined in A.2.2.4g +SeqOfGANSS-SgnTypeElement ::= SEQUENCE (SIZE(1..8)) OF GANSS-SgnTypeElement + +GANSS-SgnTypeElement ::= SEQUENCE { + ganssSignalID GANSSSignalID, -- Coding according to Annex + ganssCodePhaseAmbiguity INTEGER (0 .. 127) OPTIONAL, + --N_SGN can be read from number of elements of SeqOfGANSS-SgnElement + ganss-SgnList SeqOfGANSS-SgnElement, + ... +} + +-- Up to 16 Measurements can be returned per signal type +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 .. 127) OPTIONAL, + codePhaseRMSError INTEGER (0..63), -- Coding according 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, + add-GPS-AssistData Add-GPS-AssistData OPTIONAL, + ... +-- Possibly more extensions for Release 7 here +} + +-- Rel-7 Positioning Capability parameters here + +PosCapabilities ::= SEQUENCE { + +-- nonGANSSpositionMethods shall be included if and only if any +-- of the non-GANSS methods is supported. + nonGANSSpositionMethods NonGANSSPositionMethods OPTIONAL, + +-- gANSSpositionMethods shall be included if and only if any of the GANSS methods is supported. + gANSSPositionMethods GANSSPositionMethods OPTIONAL, + +-- multipleMeasurementSets shall be present if and only if 'multiple sets' is supported +-- for any of the positioning methods + multipleMeasurementSets MultipleMeasurementSets OPTIONAL, + ... +} + +NonGANSSPositionMethods ::= BIT STRING { + msAssistedEOTD (0), + msBasedEOTD (1), + msAssistedGPS (2), -- If this bit is set, gpsAssistance in AssistanceSupported IE + -- shall be present + msBasedGPS (3), -- If this bit is set, gpsAssistance in AssistanceSupported IE + -- shall be present + + standaloneGPS (4) } (SIZE (1..16)) + +GANSSPositionMethods ::= SEQUENCE (SIZE(1..16)) OF GANSSPositionMethod + +GANSSPositionMethod ::= SEQUENCE { + ganssID INTEGER (0..7) OPTIONAL, --Absence means Galileo +-- gANSSPositioningMethodTypes may be present for PosCapability-Req +-- and shall be present for PosCapability-Rsp + gANSSPositioningMethodTypes GANSSPositioningMethodTypes OPTIONAL, + gANSSSignals GANSSSignals, + ... , +-- sbasID shall be present if and only if ganssID indicates SBAS + sbasID SBASID OPTIONAL +} + +GANSSPositioningMethodTypes ::= BIT STRING { + msAssisted (0), -- If this bit is set, gANSSAssistanceSet in AssistanceSupported IE + -- shall be present. + msBased (1), -- If this bit is set, gANSSAssistanceSet in AssistanceSupported IE + -- shall be present. + standalone (2) } (SIZE (1..8)) + +-- indicates MS support for particular GANSS signals and frequencies +GANSSSignals ::= BIT STRING { + signal1 (0), + signal2 (1), + signal3 (2), + signal4 (3), + signal5 (4), + signal6 (5), + signal7 (6), + signal8 (7) } (SIZE (1..8)) + +SBASID ::= BIT STRING { + waas (0), + egnos (1), + masas (2), + gagan (3) } (SIZE (1..8)) + +-- indicates MS support of multiple measurement sets for MS assisted position methods +MultipleMeasurementSets ::= BIT STRING { + eotd (0), + gps (1), + ganss (2) } (SIZE (1..8)) + +-- indicates MS support of different types of assistance data +AssistanceSupported ::= SEQUENCE { + gpsAssistance GPSAssistance OPTIONAL, + gANSSAssistanceSet GANSSAssistanceSet OPTIONAL, + ... , +-- gANSSAdditionalAssistanceChoices shall be present if the MS supports other than native models + gANSSAdditionalAssistanceChoices GANSSAdditionalAssistanceChoices OPTIONAL +} + +-- GPS assistance data supported +GPSAssistance ::= BIT STRING { + almanac (0), + uTCmodel (1), + ionosphericModel (2), + navigationmodel (3), + dGPScorrections (4), + referenceLocation (5), + referenceTime (6), + acquisitionAssistance (7), + realTimeIntegrity (8), + ephemerisExtension (9), + ephemerisExtensionCheck (10)} (SIZE (1..16)) + +-- GANSS assistance data supported +GANSSAssistanceSet ::= SEQUENCE { + commonGANSSAssistance CommonGANSSAssistance, + specificGANSSAssistance SpecificGANSSAssistance, + ... +} + +-- Common GANSS assistance data supported +CommonGANSSAssistance ::= BIT STRING { + referenceTime (0), + referenceLocation (1), + ionosphericModel (3), + addIonosphericModel (4), + earthOrientationParam (5) } (SIZE (1..8)) + +SpecificGANSSAssistance ::= SEQUENCE (SIZE(1..16)) OF GANSSAssistanceForOneGANSS + +-- assistance data supported for a particular GANSS system +GANSSAssistanceForOneGANSS ::= SEQUENCE { + ganssID INTEGER (0..7) OPTIONAL, --Absence means Galileo + gANSSAssistance GANSSAssistance, + ... +} + +-- specific GANSS assistance data supported +GANSSAssistance ::= BIT STRING { + realTimeIntegrity (0), + differentialCorrections (1), + almanac (2), + referenceMeasurementInformation (3), + navigationModel (4), + timeModelGNSS-UTC (5), + timeModelGNSS-GNSS (6), + databitassistance (7), + ephemerisExtension (8), + ephemerisExtensionCheck (9), + addUTCmodel (10), + auxiliaryInformation (11) } (SIZE (1..16)) + + +GANSSAdditionalAssistanceChoices ::= SEQUENCE (SIZE(1..16)) OF GANSSAdditionalAssistanceChoicesForOneGANSS + +GANSSAdditionalAssistanceChoicesForOneGANSS ::= SEQUENCE { + ganssID INTEGER (0..7) OPTIONAL, --Absence means Galileo + ganssClockModelChoice GANSSModelID OPTIONAL, + gannsOrbitModelChoice GANSSModelID OPTIONAL, + ganssAlmanacModelChoice GANSSModelID OPTIONAL, + ganssAdditionalUTCModelChoice GANSSModelID OPTIONAL, + ... +} + +GANSSModelID ::= BIT STRING { + model1 (0), + model2 (1), + model3 (2), + model4 (3), + model5 (4), + model6 (5), + model7 (6), + model8 (7) } (SIZE (1..8)) + + +-- indicates assistance data that may be needed by the MS +-- These elements are coded as defined in TS 49.031 with the exceptions defined in section A.8.2.3 +AssistanceNeeded ::= SEQUENCE { + gpsAssistanceData GPSAssistanceData OPTIONAL, + ganssAssistanceData GANSSAssistanceData OPTIONAL, + ... +} + +END diff --git a/epan/dissectors/asn1/rrlp/RRLP-Messages.asn b/epan/dissectors/asn1/rrlp/RRLP-Messages.asn new file mode 100644 index 00000000..8c4bdc84 --- /dev/null +++ b/epan/dissectors/asn1/rrlp/RRLP-Messages.asn @@ -0,0 +1,39 @@ +-- RRLP-Messages.asn +-- Taken from 3GPP TS 44.031 V11.0.0 (2012-09) +-- http://www.3gpp.org/ftp/Specs/archive/44_series/44.031/44031-b00.zip/44031-b00.doc +-- +-- 3.1 General Format of RRLP Message +-- + +RRLP-Messages +-- { RRLP-messages } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + MsrPosition-Req, MsrPosition-Rsp, AssistanceData, + ProtocolError, PosCapability-Req, PosCapability-Rsp +FROM + RRLP-Components -- { RRLP-Components } +; + +PDU ::= SEQUENCE { + referenceNumber INTEGER (0..7), + component RRLP-Component +} + +RRLP-Component ::= CHOICE { + msrPositionReq MsrPosition-Req, + msrPositionRsp MsrPosition-Rsp, + assistanceData AssistanceData, + assistanceDataAck NULL, + protocolError ProtocolError, + ..., + posCapabilityReq PosCapability-Req, + posCapabilityRsp PosCapability-Rsp +} + +END + diff --git a/epan/dissectors/asn1/rrlp/packet-rrlp-template.c b/epan/dissectors/asn1/rrlp/packet-rrlp-template.c new file mode 100644 index 00000000..622542f0 --- /dev/null +++ b/epan/dissectors/asn1/rrlp/packet-rrlp-template.c @@ -0,0 +1,90 @@ +/* packet-rrlp.c + * Routines for 3GPP Radio Resource LCS Protocol (RRLP) packet dissection + * Copyright 2006, Anders Broman <anders.broman@ericsson.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * Ref 3GPP TS 44.031 version 11.0.0 Release 11 + * http://www.3gpp.org + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/asn1.h> + +#include "packet-ber.h" +#include "packet-per.h" +#include "packet-gsm_a_common.h" + +#define PNAME "Radio Resource LCS Protocol (RRLP)" +#define PSNAME "RRLP" +#define PFNAME "rrlp" + + + +#ifdef _MSC_VER +/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */ +#pragma warning(disable:4146) +#endif + +void proto_register_rrlp(void); +void proto_reg_handoff_rrlp(void); + +/* Initialize the protocol and registered fields */ +static int proto_rrlp = -1; + + +#include "packet-rrlp-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_rrlp = -1; +#include "packet-rrlp-ett.c" + +/* Include constants */ +#include "packet-rrlp-val.h" + + +#include "packet-rrlp-fn.c" + + +/*--- proto_register_rrlp -------------------------------------------*/ +void proto_register_rrlp(void) { + + /* List of fields */ + static hf_register_info hf[] = { + +#include "packet-rrlp-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_rrlp, +#include "packet-rrlp-ettarr.c" + }; + + + /* Register protocol */ + proto_rrlp = proto_register_protocol(PNAME, PSNAME, PFNAME); + register_dissector("rrlp", dissect_PDU_PDU, proto_rrlp); + + /* Register fields and subtrees */ + proto_register_field_array(proto_rrlp, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + +} + + +/*--- proto_reg_handoff_rrlp ---------------------------------------*/ +void +proto_reg_handoff_rrlp(void) +{ + +} + + diff --git a/epan/dissectors/asn1/rrlp/rrlp.cnf b/epan/dissectors/asn1/rrlp/rrlp.cnf new file mode 100644 index 00000000..25e1e693 --- /dev/null +++ b/epan/dissectors/asn1/rrlp/rrlp.cnf @@ -0,0 +1,40 @@ +# rrlp.cnf +# rrlp conformation file +# Copyright 2006 Anders Broman + +#.OPT +PER +UNALIGNED +#.END + +#.PDU +PDU + +#.OMIT_ASSIGNMENTS_EXCEPT MAP-LCS-DataTypes +Ext-GeographicalInformation +maxExt-GeographicalInformation +VelocityEstimate +#.END + +#.OMIT_ASSIGNMENT MAP-ExtensionDataTypes +SLR-ArgExtensionContainer +SLR-Arg-PCS-Extensions +#.END + +#.FN_HDR PDU + + proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, ENC_NA); + + col_append_sep_str(actx->pinfo->cinfo, COL_PROTOCOL, "/", "RRLP"); +#.END + + +#.FN_BODY Ext-GeographicalInformation VAL_PTR = ¶meter_tvb + +tvbuff_t *parameter_tvb = NULL; + + %(DEFAULT_BODY)s + + if(parameter_tvb) + dissect_geographical_description(parameter_tvb, %(ACTX)s->pinfo, tree); +#.END |