diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-05-18 12:53:55 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-05-18 12:53:55 +0000 |
commit | 16c10108948a362fab61513c2d54ad182b7aa119 (patch) | |
tree | db96ac560e428fd266cb024e226051d956dbcda3 | |
parent | 16c4aa8e387ade8dd72213b879206b858e6d1ca5 (diff) |
RRLP updated to 3GPP TS 44.031 V7.4.0 (2007-03)
svn path=/trunk/; revision=21825
-rw-r--r-- | asn1/Makefile.am | 6 | ||||
-rw-r--r-- | asn1/gsmmap/MAP-ExtensionDataTypes.asn | 71 | ||||
-rw-r--r-- | asn1/gsmmap/MAP-LCS-DataTypes.asn | 654 | ||||
-rw-r--r-- | asn1/rrlp/Makefile | 7 | ||||
-rw-r--r-- | asn1/rrlp/Makefile.nmake | 12 | ||||
-rw-r--r-- | asn1/rrlp/RRLP-Components.asn | 1487 | ||||
-rw-r--r-- | asn1/rrlp/RRLP-Messages.asn | 38 | ||||
-rw-r--r-- | asn1/rrlp/packet-rrlp-template.c | 2 | ||||
-rw-r--r-- | asn1/rrlp/packet-rrlp-template.h | 35 | ||||
-rw-r--r-- | asn1/rrlp/rrlp.asn | 1052 | ||||
-rw-r--r-- | asn1/rrlp/rrlp.cnf | 25 | ||||
-rw-r--r-- | epan/dissectors/Makefile.common | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-rrlp.c | 2413 | ||||
-rw-r--r-- | epan/dissectors/packet-rrlp.h | 43 |
14 files changed, 4644 insertions, 1202 deletions
diff --git a/asn1/Makefile.am b/asn1/Makefile.am index af7c171887..3b6de9c429 100644 --- a/asn1/Makefile.am +++ b/asn1/Makefile.am @@ -124,6 +124,8 @@ EXTRA_DIST = \ gnm/packet-gnm-template.c \ gnm/packet-gnm-template.h \ gsmmap/GSMMAP.asn \ + gsmmap/MAP-ExtensionDataTypes.asn \ + gsmmap/MAP-LCS-DataTypes.asn \ gsmmap/gsmmap.cnf \ gsmmap/gsm_map-exp.cnf \ gsmmap/Makefile \ @@ -346,8 +348,8 @@ EXTRA_DIST = \ rrlp/Makefile \ rrlp/Makefile.nmake \ rrlp/packet-rrlp-template.c \ - rrlp/packet-rrlp-template.h \ - rrlp/rrlp.asn \ + rrlp/RRLP-Messages.asn \ + rrlp/RRLP-Components.asn \ rrlp/rrlp.cnf \ rtse/Makefile \ rtse/Makefile.nmake \ diff --git a/asn1/gsmmap/MAP-ExtensionDataTypes.asn b/asn1/gsmmap/MAP-ExtensionDataTypes.asn new file mode 100644 index 0000000000..de581b0501 --- /dev/null +++ b/asn1/gsmmap/MAP-ExtensionDataTypes.asn @@ -0,0 +1,71 @@ +-- MAP-ExtensionDataTypes.asn +-- +-- Taken from 3GPP TS 29.002 V8.1.0 (2007-03) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.002/29002-810.zip/29002-810.doc +-- +-- 17.7.11 Extension data types +-- + +MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version11 (11)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + + PrivateExtension, + ExtensionContainer, + SLR-ArgExtensionContainer; + +-- IOC for private MAP extensions + +MAP-EXTENSION ::= CLASS { + &ExtensionType OPTIONAL, + &extensionId OBJECT IDENTIFIER } + -- The length of the Object Identifier shall not exceed 16 octets and the + -- number of components of the Object Identifier shall not exceed 16 + +-- data types + +ExtensionContainer ::= SEQUENCE { + privateExtensionList [0]PrivateExtensionList OPTIONAL, + pcs-Extensions [1]PCS-Extensions OPTIONAL, + ...} + +SLR-ArgExtensionContainer ::= SEQUENCE { + privateExtensionList [0]PrivateExtensionList OPTIONAL, + slr-Arg-PCS-Extensions [1]SLR-Arg-PCS-Extensions OPTIONAL, + ...} + +PrivateExtensionList ::= SEQUENCE SIZE (1..maxNumOfPrivateExtensions) OF + PrivateExtension + +PrivateExtension ::= SEQUENCE { + extId MAP-EXTENSION.&extensionId + ({ExtensionSet}), + extType MAP-EXTENSION.&ExtensionType + ({ExtensionSet}{@extId}) OPTIONAL} + +maxNumOfPrivateExtensions INTEGER ::= 10 + +ExtensionSet MAP-EXTENSION ::= + {... + -- ExtensionSet is the set of all defined private extensions + } + -- Unsupported private extensions shall be discarded if received. + +PCS-Extensions ::= SEQUENCE { + ...} + +SLR-Arg-PCS-Extensions ::= SEQUENCE { + ..., + na-ESRK-Request [0] NULL OPTIONAL } + +END diff --git a/asn1/gsmmap/MAP-LCS-DataTypes.asn b/asn1/gsmmap/MAP-LCS-DataTypes.asn new file mode 100644 index 0000000000..d4a5809ad6 --- /dev/null +++ b/asn1/gsmmap/MAP-LCS-DataTypes.asn @@ -0,0 +1,654 @@ +-- MAP-LCS-DataTypes.asn +-- +-- Taken from 3GPP TS 29.002 V8.1.0 (2007-03) +-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.002/29002-810.zip/29002-810.doc +-- +-- 17.7.13 Location service data types +-- + +MAP-LCS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LCS-DataTypes (25) version11 (11)} + +DEFINITIONS +IMPLICIT TAGS +::= +BEGIN + +EXPORTS + RoutingInfoForLCS-Arg, + RoutingInfoForLCS-Res, + ProvideSubscriberLocation-Arg, + ProvideSubscriberLocation-Res, + SubscriberLocationReport-Arg, + SubscriberLocationReport-Res, + LocationType, + DeferredLocationEventType, + LCSClientName, + LCS-QoS, + Horizontal-Accuracy, + ResponseTime, + Ext-GeographicalInformation, + VelocityEstimate, + SupportedGADShapes, + Add-GeographicalInformation, + LCSRequestorID, + LCS-ReferenceNumber, + LCSCodeword, + AreaEventInfo, + ReportingPLMNList, + PeriodicLDRInfo, + SequenceNumber +; + +IMPORTS + AddressString, + ISDN-AddressString, + IMEI, + IMSI, + LMSI, + SubscriberIdentity, + AgeOfLocationInformation, + LCSClientExternalID, + LCSClientInternalID, + LCSServiceTypeID, + CellGlobalIdOrServiceAreaIdOrLAI, + PLMN-Id +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version11 (11)} + + ExtensionContainer, + SLR-ArgExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version11 (11)} + + USSD-DataCodingScheme, + USSD-String +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-DataTypes (14) version11 (11)} + + APN, + GSN-Address, + SupportedLCS-CapabilitySets +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version11 (11)} + + Additional-Number +FROM MAP-SM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SM-DataTypes (16) version11 (11)} +; + +RoutingInfoForLCS-Arg ::= SEQUENCE { + mlcNumber [0] ISDN-AddressString, + targetMS [1] SubscriberIdentity, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +RoutingInfoForLCS-Res ::= SEQUENCE { + targetMS [0] SubscriberIdentity, + lcsLocationInfo [1] LCSLocationInfo, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + v-gmlc-Address [3] GSN-Address OPTIONAL, + h-gmlc-Address [4] GSN-Address OPTIONAL, + ppr-Address [5] GSN-Address OPTIONAL, + additional-v-gmlc-Address [6] GSN-Address OPTIONAL } + +LCSLocationInfo ::= SEQUENCE { + networkNode-Number ISDN-AddressString, + -- NetworkNode-number can be either msc-number or sgsn-number + lmsi [0] LMSI OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... , + gprsNodeIndicator [2] NULL OPTIONAL, + -- gprsNodeIndicator is set only if the SGSN number is sent as the Network Node Number + additional-Number [3] Additional-Number OPTIONAL, + supportedLCS-CapabilitySets [4] SupportedLCS-CapabilitySets OPTIONAL, + additional-LCS-CapabilitySets [5] SupportedLCS-CapabilitySets OPTIONAL + } + +ProvideSubscriberLocation-Arg ::= SEQUENCE { + locationType LocationType, + mlc-Number ISDN-AddressString, + lcs-ClientID [0] LCS-ClientID OPTIONAL, + privacyOverride [1] NULL OPTIONAL, + imsi [2] IMSI OPTIONAL, + msisdn [3] ISDN-AddressString OPTIONAL, + lmsi [4] LMSI OPTIONAL, + imei [5] IMEI OPTIONAL, + lcs-Priority [6] LCS-Priority OPTIONAL, + lcs-QoS [7] LCS-QoS OPTIONAL, + extensionContainer [8] ExtensionContainer OPTIONAL, + ... , + supportedGADShapes [9] SupportedGADShapes OPTIONAL, + lcs-ReferenceNumber [10] LCS-ReferenceNumber OPTIONAL, + lcsServiceTypeID [11] LCSServiceTypeID OPTIONAL, + lcsCodeword [12] LCSCodeword OPTIONAL, + lcs-PrivacyCheck [13] LCS-PrivacyCheck OPTIONAL, + areaEventInfo [14] AreaEventInfo OPTIONAL, + h-gmlc-Address [15] GSN-Address OPTIONAL, + mo-lrShortCircuitIndicator [16] NULL OPTIONAL, + periodicLDRInfo [17] PeriodicLDRInfo OPTIONAL, + reportingPLMNList [18] ReportingPLMNList OPTIONAL } + + -- one of imsi or msisdn is mandatory + -- If a location estimate type indicates activate deferred location or cancel deferred + -- location, a lcs-Reference number shall be included. + +LocationType ::= SEQUENCE { + locationEstimateType [0] LocationEstimateType, + ..., + deferredLocationEventType [1] DeferredLocationEventType OPTIONAL } + +LocationEstimateType ::= ENUMERATED { + currentLocation (0), + currentOrLastKnownLocation (1), + initialLocation (2), + ..., + activateDeferredLocation (3), + cancelDeferredLocation (4) , + notificationVerificationOnly (5) } +-- exception handling: +-- a ProvideSubscriberLocation-Arg containing an unrecognized LocationEstimateType +-- shall be rejected by the receiver with a return error cause of unexpected data value + +DeferredLocationEventType ::= BIT STRING { + msAvailable (0) , + enteringIntoArea (1), + leavingFromArea (2), + beingInsideArea (3) , + periodicLDR (4) } (SIZE (1..16)) +-- beingInsideArea is always treated as oneTimeEvent regardless of the possible value +-- of occurrenceInfo inside areaEventInfo. +-- exception handling: +-- a ProvideSubscriberLocation-Arg containing other values than listed above in +-- DeferredLocationEventType shall be rejected by the receiver with a return error cause of +-- unexpected data value. + +LCS-ClientID ::= SEQUENCE { + lcsClientType [0] LCSClientType, + lcsClientExternalID [1] LCSClientExternalID OPTIONAL, + lcsClientDialedByMS [2] AddressString OPTIONAL, + lcsClientInternalID [3] LCSClientInternalID OPTIONAL, + lcsClientName [4] LCSClientName OPTIONAL, + ..., + lcsAPN [5] APN OPTIONAL, + lcsRequestorID [6] LCSRequestorID OPTIONAL } + +LCSClientType ::= ENUMERATED { + emergencyServices (0), + valueAddedServices (1), + plmnOperatorServices (2), + lawfulInterceptServices (3), + ... } + -- exception handling: + -- unrecognized values may be ignored if the LCS client uses the privacy override + -- otherwise, an unrecognized value shall be treated as unexpected data by a receiver + -- a return error shall then be returned if received in a MAP invoke + +LCSClientName ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + nameString [2] NameString, + ..., + lcs-FormatIndicator [3] LCS-FormatIndicator OPTIONAL } + +-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the +-- following encoding +-- bit 7 6 5 4 3 2 1 0 +-- 0 0 0 0 1 1 1 1 + +NameString ::= USSD-String (SIZE (1..maxNameStringLength)) + +maxNameStringLength INTEGER ::= 63 + +LCSRequestorID ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + requestorIDString [1] RequestorIDString, + ..., + lcs-FormatIndicator [2] LCS-FormatIndicator OPTIONAL } + +RequestorIDString ::= USSD-String (SIZE (1..maxRequestorIDStringLength)) + +maxRequestorIDStringLength INTEGER ::= 63 + +LCS-FormatIndicator ::= ENUMERATED { + logicalName (0), + e-mailAddress (1), + msisdn (2), + url (3), + sipUrl (4), + ... } + +LCS-Priority ::= OCTET STRING (SIZE (1)) + -- 0 = highest priority + -- 1 = normal priority + -- all other values treated as 1 + +LCS-QoS ::= SEQUENCE { + horizontal-accuracy [0] Horizontal-Accuracy OPTIONAL, + verticalCoordinateRequest [1] NULL OPTIONAL, + vertical-accuracy [2] Vertical-Accuracy OPTIONAL, responseTime [3] ResponseTime OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + velocityRequest [5] NULL OPTIONAL +} + +Horizontal-Accuracy ::= OCTET STRING (SIZE (1)) + -- bit 8 = 0 + -- bits 7-1 = 7 bit Uncertainty Code defined in 3GPP TS 23.032. The horizontal location + -- error should be less than the error indicated by the uncertainty code with 67% + -- confidence. + +Vertical-Accuracy ::= OCTET STRING (SIZE (1)) + -- bit 8 = 0 + -- bits 7-1 = 7 bit Vertical Uncertainty Code defined in 3GPP TS 23.032. + -- The vertical location error should be less than the error indicated + -- by the uncertainty code with 67% confidence. + +ResponseTime ::= SEQUENCE { + responseTimeCategory ResponseTimeCategory, + ...} +-- note: an expandable SEQUENCE simplifies later addition of a numeric response time. + +ResponseTimeCategory ::= ENUMERATED { + lowdelay (0), + delaytolerant (1), + ... } +-- exception handling: +-- an unrecognized value shall be treated the same as value 1 (delaytolerant) + +SupportedGADShapes ::= BIT STRING { + ellipsoidPoint (0), + ellipsoidPointWithUncertaintyCircle (1), + ellipsoidPointWithUncertaintyEllipse (2), + polygon (3), + ellipsoidPointWithAltitude (4), + ellipsoidPointWithAltitudeAndUncertaintyElipsoid (5), + ellipsoidArc (6) } (SIZE (7..16)) +-- A node shall mark in the BIT STRING all Shapes defined in 3GPP TS 23.032 it supports. +-- exception handling: bits 7 to 15 shall be ignored if received. + +LCS-ReferenceNumber::= OCTET STRING (SIZE(1)) + +LCSCodeword ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + lcsCodewordString [1] LCSCodewordString, + ...} + +LCSCodewordString ::= USSD-String (SIZE (1..maxLCSCodewordStringLength)) + +maxLCSCodewordStringLength INTEGER ::= 20 + +LCS-PrivacyCheck ::= SEQUENCE { + callSessionUnrelated [0] PrivacyCheckRelatedAction, + callSessionRelated [1] PrivacyCheckRelatedAction OPTIONAL, + ...} + +PrivacyCheckRelatedAction ::= ENUMERATED { + allowedWithoutNotification (0), + allowedWithNotification (1), + allowedIfNoResponse (2), + restrictedIfNoResponse (3), + notAllowed (4), + ...} +-- exception handling: +-- a ProvideSubscriberLocation-Arg containing an unrecognized PrivacyCheckRelatedAction +-- shall be rejected by the receiver with a return error cause of unexpected data value + +AreaEventInfo ::= SEQUENCE { + areaDefinition [0] AreaDefinition, + occurrenceInfo [1] OccurrenceInfo OPTIONAL, + intervalTime [2] IntervalTime OPTIONAL, + ...} + +AreaDefinition ::= SEQUENCE { + areaList [0] AreaList, + ...} + +AreaList ::= SEQUENCE SIZE (1..maxNumOfAreas) OF Area + +maxNumOfAreas INTEGER ::= 10 + +Area ::= SEQUENCE { + areaType [0] AreaType, + areaIdentification [1] AreaIdentification, + ...} + +AreaType ::= ENUMERATED { + countryCode (0), + plmnId (1), + locationAreaId (2), + routingAreaId (3), + cellGlobalId (4), + ..., + utranCellId (5) } + +AreaIdentification ::= OCTET STRING (SIZE (2..7)) + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit if 3 digit MNC included + -- or filler (1111) + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + -- octets 4 and 5 Location Area Code (LAC) for Local Area Id, + -- Routing Area Id and Cell Global Id + -- octet 6 Routing Area Code (RAC) for Routing Area Id + -- octets 6 and 7 Cell Identity (CI) for Cell Global Id + -- octets 4 until 7 Utran Cell Identity (UC-Id) for Utran Cell Id + +OccurrenceInfo ::= ENUMERATED { + oneTimeEvent (0), + multipleTimeEvent (1), + ...} + +IntervalTime ::= INTEGER (1..32767) + -- minimum interval time between area reports in seconds + +PeriodicLDRInfo ::= SEQUENCE { + reportingAmount ReportingAmount, + reportingInterval ReportingInterval, + ...} +-- reportingInterval x reportingAmount shall not exceed 8639999 (99 days, 23 hours, +-- 59 minutes and 59 seconds) for compatibility with OMA MLP and RLP + +ReportingAmount ::= INTEGER (1..maxReportingAmount) + +maxReportingAmount INTEGER ::= 8639999 + +ReportingInterval ::= INTEGER (1..maxReportingInterval) +-- ReportingInterval is in seconds + +maxReportingInterval INTEGER ::= 8639999 + +ReportingPLMNList::= SEQUENCE { + plmn-ListPrioritized [0] NULL OPTIONAL, + plmn-List [1] PLMNList, + ...} + +PLMNList::= SEQUENCE SIZE (1..maxNumOfReportingPLMN) OF + ReportingPLMN + +maxNumOfReportingPLMN INTEGER ::= 20 + +ReportingPLMN::= SEQUENCE { + plmn-Id [0] PLMN-Id, + ran-Technology [1] RAN-Technology OPTIONAL, + ran-PeriodicLocationSupport [2] NULL OPTIONAL, + ...} + +RAN-Technology ::= ENUMERATED { + gsm (0), + umts (1), + ...} + +ProvideSubscriberLocation-Res ::= SEQUENCE { + locationEstimate Ext-GeographicalInformation, + ageOfLocationEstimate [0] AgeOfLocationInformation OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... , + add-LocationEstimate [2] Add-GeographicalInformation OPTIONAL, + deferredmt-lrResponseIndicator [3] NULL OPTIONAL, + geranPositioningData [4] PositioningDataInformation OPTIONAL, + utranPositioningData [5] UtranPositioningDataInfo OPTIONAL, + cellIdOrSai [6] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + sai-Present [7] NULL OPTIONAL, + accuracyFulfilmentIndicator [8] AccuracyFulfilmentIndicator OPTIONAL, + velocityEstimate [9] VelocityEstimate OPTIONAL, + mo-lrShortCircuitIndicator [10] NULL OPTIONAL } + +-- if deferredmt-lrResponseIndicator is set, locationEstimate is ignored. + +-- the add-LocationEstimate parameter shall not be sent to a node that did not indicate the +-- geographic shapes supported in the ProvideSubscriberLocation-Arg +-- The locationEstimate and the add-locationEstimate parameters shall not be sent if +-- the supportedGADShapes parameter has been received in ProvideSubscriberLocation-Arg +-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked +-- as supported in supportedGADShapes. In such a case ProvideSubscriberLocation +-- shall be rejected with error FacilityNotSupported with additional indication +-- shapeOfLocationEstimateNotSupported. +-- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity. + +AccuracyFulfilmentIndicator ::= ENUMERATED { + requestedAccuracyFulfilled (0), + requestedAccuracyNotFulfilled (1), + ... } + +Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInformation)) + -- Refers to geographical Information defined in 3GPP TS 23.032. + -- This is composed of 1 or more octets with an internal structure according to + -- 3GPP TS 23.032 + -- Octet 1: Type of shape, only the following shapes in 3GPP TS 23.032 are allowed: + -- (a) Ellipsoid point with uncertainty circle + -- (b) Ellipsoid point with uncertainty ellipse + -- (c) Ellipsoid point with altitude and uncertainty ellipsoid + -- (d) Ellipsoid Arc + -- (e) Ellipsoid Point + -- Any other value in octet 1 shall be treated as invalid + -- Octets 2 to 8 for case (a) - Ellipsoid point with uncertainty circle + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Uncertainty code 1 octet + -- Octets 2 to 11 for case (b) - Ellipsoid point with uncertainty ellipse: + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Uncertainty semi-major axis 1 octet + -- Uncertainty semi-minor axis 1 octet + -- Angle of major axis 1 octet + -- Confidence 1 octet + -- Octets 2 to 14 for case (c) - Ellipsoid point with altitude and uncertainty ellipsoid + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Altitude 2 octets + -- Uncertainty semi-major axis 1 octet + -- Uncertainty semi-minor axis 1 octet + -- Angle of major axis 1 octet + -- Uncertainty altitude 1 octet + -- Confidence 1 octet + -- Octets 2 to 13 for case (d) - Ellipsoid Arc + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Inner radius 2 octets + -- Uncertainty radius 1 octet + -- Offset angle 1 octet + -- Included angle 1 octet + -- Confidence 1 octet + -- Octets 2 to 7 for case (e) - Ellipsoid Point + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + + -- + -- An Ext-GeographicalInformation parameter comprising more than one octet and + -- containing any other shape or an incorrect number of octets or coding according + -- to 3GPP TS 23.032 shall be treated as invalid data by a receiver. + -- + -- An Ext-GeographicalInformation parameter comprising one octet shall be discarded + -- by the receiver if an Add-GeographicalInformation parameter is received + -- in the same message. + -- + -- An Ext-GeographicalInformation parameter comprising one octet shall be treated as + -- invalid data by the receiver if an Add-GeographicalInformation parameter is not + -- received in the same message. + +maxExt-GeographicalInformation INTEGER ::= 20 + -- the maximum length allows for further shapes in 3GPP TS 23.032 to be included in later + -- versions of 3GPP TS 29.002 + +VelocityEstimate ::= OCTET STRING (SIZE (4..7)) + -- Refers to Velocity description defined in 3GPP TS 23.032. + -- This is composed of 4 or more octets with an internal structure according to + -- 3GPP TS 23.032 + -- Octet 1: Type of velocity, only the following types in 3GPP TS 23.032 are allowed: + -- (a) Horizontal Velocity + -- (b) Horizontal with Vertical Velocity + -- (c) Horizontal Velocity with Uncertainty + -- (d) Horizontal with Vertical Velocity and Uncertainty + -- For types Horizontal with Vertical Velocity and Horizontal with Vertical Velocity + -- and Uncertainty, the direction of the Vertical Speed is also included in Octet 1 + -- Any other value in octet 1 shall be treated as invalid + -- Octets 2 to 4 for case (a) Horizontal velocity: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Octets 2 to 5 for case (b) - Horizontal with Vertical Velocity: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Vertical Speed 1 octet + -- Octets 2 to 5 for case (c) - Horizontal velocity with Uncertainty: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Uncertainty Speed 1 octet + -- Octets 2 to 7 for case (d) - Horizontal with Vertical Velocity and Uncertainty: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Vertical Speed 1 octet + -- Horizontal Uncertainty Speed 1 octet + -- Vertical Uncertainty Speed 1 octet + +PositioningDataInformation ::= OCTET STRING (SIZE (2..maxPositioningDataInformation)) + -- Refers to the Positioning Data defined in 3GPP TS 49.031. + -- This is composed of 2 or more octets with an internal structure according to + -- 3GPP TS 49.031. + +maxPositioningDataInformation INTEGER ::= 10 + -- + +UtranPositioningDataInfo ::= OCTET STRING (SIZE (3..maxUtranPositioningDataInfo)) + -- Refers to the Position Data defined in 3GPP TS 25.413. + -- This is composed of the positioningDataDiscriminator and the positioningDataSet + -- included in positionData as defined in 3GPP TS 25.413. + +maxUtranPositioningDataInfo INTEGER ::= 11 + -- + +Add-GeographicalInformation ::= OCTET STRING (SIZE (1..maxAdd-GeographicalInformation)) + -- Refers to geographical Information defined in 3GPP TS 23.032. + -- This is composed of 1 or more octets with an internal structure according to + -- 3GPP TS 23.032 + -- Octet 1: Type of shape, all the shapes defined in 3GPP TS 23.032 are allowed: + -- Octets 2 to n (where n is the total number of octets necessary to encode the shape + -- according to 3GPP TS 23.032) are used to encode the shape itself in accordance with the + -- encoding defined in 3GPP TS 23.032 + -- + -- An Add-GeographicalInformation parameter, whether valid or invalid, received + -- together with a valid Ext-GeographicalInformation parameter in the same message + -- shall be discarded. + -- + -- An Add-GeographicalInformation parameter containing any shape not defined in + -- 3GPP TS 23.032 or an incorrect number of octets or coding according to + -- 3GPP TS 23.032 shall be treated as invalid data by a receiver if not received + -- together with a valid Ext-GeographicalInformation parameter in the same message. + +maxAdd-GeographicalInformation INTEGER ::= 91 + -- the maximum length allows support for all the shapes currently defined in 3GPP TS 23.032 + +SubscriberLocationReport-Arg ::= SEQUENCE { + lcs-Event LCS-Event, + lcs-ClientID LCS-ClientID, + lcsLocationInfo LCSLocationInfo, + msisdn [0] ISDN-AddressString OPTIONAL, + imsi [1] IMSI OPTIONAL, + imei [2] IMEI OPTIONAL, + na-ESRD [3] ISDN-AddressString OPTIONAL, + na-ESRK [4] ISDN-AddressString OPTIONAL, + locationEstimate [5] Ext-GeographicalInformation OPTIONAL, + ageOfLocationEstimate [6] AgeOfLocationInformation OPTIONAL, + slr-ArgExtensionContainer [7] SLR-ArgExtensionContainer OPTIONAL, + ... , + add-LocationEstimate [8] Add-GeographicalInformation OPTIONAL, + deferredmt-lrData [9] Deferredmt-lrData OPTIONAL, + lcs-ReferenceNumber [10] LCS-ReferenceNumber OPTIONAL, + geranPositioningData [11] PositioningDataInformation OPTIONAL, + utranPositioningData [12] UtranPositioningDataInfo OPTIONAL, + cellIdOrSai [13] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + h-gmlc-Address [14] GSN-Address OPTIONAL, + lcsServiceTypeID [15] LCSServiceTypeID OPTIONAL, + sai-Present [17] NULL OPTIONAL, + pseudonymIndicator [18] NULL OPTIONAL, + accuracyFulfilmentIndicator [19] AccuracyFulfilmentIndicator OPTIONAL, + velocityEstimate [20] VelocityEstimate OPTIONAL, + sequenceNumber [21] SequenceNumber OPTIONAL, + periodicLDRInfo [22] PeriodicLDRInfo OPTIONAL, + mo-lrShortCircuitIndicator [23] NULL OPTIONAL } + + -- one of msisdn or imsi is mandatory + -- a location estimate that is valid for the locationEstimate parameter should + -- be transferred in this parameter in preference to the add-LocationEstimate. + -- the deferredmt-lrData parameter shall be included if and only if the lcs-Event + -- indicates a deferredmt-lrResponse. + -- if the lcs-Event indicates a deferredmt-lrResponse then the locationEstimate + -- and the add-locationEstimate parameters shall not be sent if the + -- supportedGADShapes parameter had been received in ProvideSubscriberLocation-Arg + -- and the shape encoded in locationEstimate or add-LocationEstimate was not marked + -- as supported in supportedGADShapes. In such a case terminationCause + -- in deferredmt-lrData shall be present with value + -- shapeOfLocationEstimateNotSupported. + -- If a lcs event indicates deferred mt-lr response, the lcs-Reference number shall be + -- included. + -- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity. + +Deferredmt-lrData ::= SEQUENCE { + deferredLocationEventType DeferredLocationEventType, + terminationCause [0] TerminationCause OPTIONAL, + lcsLocationInfo [1] LCSLocationInfo OPTIONAL, + ...} + -- lcsLocationInfo may be included only if a terminationCause is present + -- indicating mt-lrRestart. + +LCS-Event ::= ENUMERATED { + emergencyCallOrigination (0), + emergencyCallRelease (1), + mo-lr (2), + ..., + deferredmt-lrResponse (3) , + deferredmo-lrTTTPInitiation (4) } + -- deferredmt-lrResponse is applicable to the delivery of a location estimate + -- for an LDR initiated earlier by either the network (via an MT-LR activate deferred + -- location) or the UE (via a deferred MO-LR TTTP initiation) + -- exception handling: + -- a SubscriberLocationReport-Arg containing an unrecognized LCS-Event + -- shall be rejected by a receiver with a return error cause of unexpected data value + +TerminationCause ::= ENUMERATED { + normal (0), + errorundefined (1), + internalTimeout (2), + congestion (3), + mt-lrRestart (4), + privacyViolation (5), + ..., + shapeOfLocationEstimateNotSupported (6) , + subscriberTermination (7), + uETermination (8), + networkTermination (9) } +-- mt-lrRestart shall be used to trigger the GMLC to restart the location procedure, +-- either because the sending node knows that the terminal has moved under coverage +-- of another MSC or SGSN (e.g. Send Identification received), or because the subscriber +-- has been deregistered due to a Cancel Location received from HLR. +-- +-- exception handling +-- an unrecognized value shall be treated the same as value 1 (errorundefined) + +SequenceNumber ::= INTEGER (1..maxReportingAmount) + +SubscriberLocationReport-Res ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + na-ESRK [0] ISDN-AddressString OPTIONAL, + na-ESRD [1] ISDN-AddressString OPTIONAL, + h-gmlc-Address [2] GSN-Address OPTIONAL, + mo-lrShortCircuitIndicator [3] NULL OPTIONAL, + reportingPLMNList [4] ReportingPLMNList OPTIONAL, + lcs-ReferenceNumber [5] LCS-ReferenceNumber OPTIONAL } + +-- na-ESRK and na-ESRD are mutually exclusive +-- +-- exception handling +-- receipt of both na-ESRK and na-ESRD shall be treated the same as a return error + +END diff --git a/asn1/rrlp/Makefile b/asn1/rrlp/Makefile index 7ec094eaeb..71d5c00715 100644 --- a/asn1/rrlp/Makefile +++ b/asn1/rrlp/Makefile @@ -1,13 +1,14 @@ # $Id$ -DISSECTOR_FILES=packet-rrlp.c packet-rrlp.h +DISSECTOR_FILES=packet-rrlp.c +RRLP_ASN=RRLP-Messages.asn RRLP-Components.asn ../gsmmap/MAP-ExtensionDataTypes.asn ../gsmmap/MAP-LCS-DataTypes.asn all: generate_dissector generate_dissector: $(DISSECTOR_FILES) -$(DISSECTOR_FILES): ../../tools/asn2wrs.py rrlp.asn packet-rrlp-template.c packet-rrlp-template.h rrlp.cnf - python ../../tools/asn2wrs.py -e -p rrlp -c rrlp.cnf -s packet-rrlp-template rrlp.asn +$(DISSECTOR_FILES): ../../tools/asn2wrs.py $(RRLP_ASN) packet-rrlp-template.c rrlp.cnf + python ../../tools/asn2wrs.py -p rrlp -c rrlp.cnf -s packet-rrlp-template $(RRLP_ASN) clean: rm -f parsetab.py parsetab.pyc $(DISSECTOR_FILES) diff --git a/asn1/rrlp/Makefile.nmake b/asn1/rrlp/Makefile.nmake index 4b880bbf1a..5c4c1ac200 100644 --- a/asn1/rrlp/Makefile.nmake +++ b/asn1/rrlp/Makefile.nmake @@ -7,15 +7,16 @@ include ../../config.nmake UNIX2DOS=$(PERL) ../../tools/unix2dos.pl PROTOCOL_NAME=rrlp -DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h +DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c +RRLP_ASN=RRLP-Messages.asn RRLP-Components.asn ../gsmmap/MAP-ExtensionDataTypes.asn ../gsmmap/MAP-LCS-DataTypes.asn all: generate_dissector generate_dissector: $(DISSECTOR_FILES) -$(DISSECTOR_FILES): ../../tools/asn2wrs.py rrlp.asn packet-rrlp-template.c packet-rrlp-template.h rrlp.cnf +$(DISSECTOR_FILES): ../../tools/asn2wrs.py $(RRLP_ASN) packet-rrlp-template.c rrlp.cnf !IFDEF PYTHON - $(PYTHON) "../../tools/asn2wrs.py" -u -e -p $(PROTOCOL_NAME) -c rrlp.cnf -s packet-rrlp-template rrlp.asn + $(PYTHON) "../../tools/asn2wrs.py" -p $(PROTOCOL_NAME) -c rrlp.cnf -s packet-rrlp-template $(RRLP_ASN) !ELSE @echo Error: You need Python to use asn2wrs.py @exit 1 @@ -31,12 +32,9 @@ clean: fix_eol: generate_dissector move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp - move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c - $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h - del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp + del /f packet-$(PROTOCOL_NAME).c.tmp copy_files: generate_dissector fix_eol xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y - xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y diff --git a/asn1/rrlp/RRLP-Components.asn b/asn1/rrlp/RRLP-Components.asn new file mode 100644 index 0000000000..83f7ff47f7 --- /dev/null +++ b/asn1/rrlp/RRLP-Components.asn @@ -0,0 +1,1487 @@ +-- RRLP-Components.asn +-- +-- 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 { + ccitt identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LCS-DataTypes (25) version5 (5)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + ccitt identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version4 (4)} +; + +-- 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 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), -- 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 diff --git a/asn1/rrlp/RRLP-Messages.asn b/asn1/rrlp/RRLP-Messages.asn new file mode 100644 index 0000000000..c68a357488 --- /dev/null +++ b/asn1/rrlp/RRLP-Messages.asn @@ -0,0 +1,38 @@ +-- RRLP-Messages.asn +-- +-- 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 +-- +-- 3.1 General Format of RRLP Message +-- + +RRLP-Messages +-- { RRLP-messages } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + MsrPosition-Req, MsrPosition-Rsp, AssistanceData, + ProtocolError +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, + ... + +} + +END diff --git a/asn1/rrlp/packet-rrlp-template.c b/asn1/rrlp/packet-rrlp-template.c index 48e1d40b47..bccbf703fa 100644 --- a/asn1/rrlp/packet-rrlp-template.c +++ b/asn1/rrlp/packet-rrlp-template.c @@ -38,8 +38,6 @@ #include <stdio.h> #include <string.h> -#include "packet-rrlp.h" - #include "packet-ber.h" #include "packet-per.h" #include "packet-gsm_map.h" diff --git a/asn1/rrlp/packet-rrlp-template.h b/asn1/rrlp/packet-rrlp-template.h deleted file mode 100644 index 5c34608fca..0000000000 --- a/asn1/rrlp/packet-rrlp-template.h +++ /dev/null @@ -1,35 +0,0 @@ -/* packet-rrlp.h - * Routines for 3GPP Radio Resource LCS Protocol (RRLP) packet dissection - * Copyright 2006, Anders Broman <anders.broman@ericsson.com> - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs <gerald@wireshark.org> - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef PACKET_RRLP_H -#define PACKET_RRLP_H - - - -/* #include "packet-rrlp-exp.h" */ - -#endif /* PACKET_RRLP_H */ - - diff --git a/asn1/rrlp/rrlp.asn b/asn1/rrlp/rrlp.asn deleted file mode 100644 index 0379f80ce4..0000000000 --- a/asn1/rrlp/rrlp.asn +++ /dev/null @@ -1,1052 +0,0 @@ -RRLP-Messages --- { RRLP-messages } - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - ---IMPORTS - --- MsrPosition-Req, MsrPosition-Rsp, AssistanceData, --- ProtocolError - ---FROM --- RRLP-Components --- { RRLP-Components } ---; - -IMPORTS --- Ext-GeographicalInformation ---FROM --- MAP-LCS-DataTypes { --- ccitt identified-organization (4) etsi (0) mobileDomain (0) --- gsm-Network (1) modules (3) map-LCS-DataTypes (25) version5 (5)} - --- ExtensionContainer ---FROM MAP-ExtensionDataTypes { --- ccitt identified-organization (4) etsi (0) mobileDomain (0) --- gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version4 (4)} - ; --- local import --- maxExt-GeographicalInformation INTEGER ::= 20 -Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..20)) -ExtensionContainer ::= OCTET STRING - ---ExtensionContainer ::= SEQUENCE { --- privateExtensionList [0] IMPLICIT PrivateExtensionList OPTIONAL, --- pcsExtensions [1] IMPLICIT PcsExtensions OPTIONAL, --- ... } - ---PrivateExtensionList ::= SEQUENCE OF PrivateExtension - ---PrivateExtension ::= SEQUENCE { --- extId OBJECT IDENTIFIER, MAP-EXTENSION .&extensionId --- extType ANY OPTIONAL { @extId } ---} - ---PcsExtensions ::= SEQUENCE { --- ... --- } - - -PDU ::= SEQUENCE { - referenceNumber INTEGER (0..7), - component RRLP-Component -} - -RRLP-Component ::= CHOICE { - msrPositionReq MsrPosition-Req, - msrPositionRsp MsrPosition-Rsp, - assistanceData AssistanceData, - assistanceDataAck NULL, - protocolError ProtocolError, - ... -} - ---RRLP-Components --- { RRLP-Components } --- ETSI TS 144 031 V6.8.0 ---DEFINITIONS AUTOMATIC TAGS ::= - ---BEGIN - ---IMPORTS - --- Ext-GeographicalInformation ---FROM --- MAP-LCS-DataTypes { --- ccitt identified-organization (4) etsi (0) mobileDomain (0) --- gsm-Network (1) modules (3) map-LCS-DataTypes (25) version5 (5)} - --- ExtensionContainer ---FROM MAP-ExtensionDataTypes { --- ccitt identified-organization (4) etsi (0) mobileDomain (0) --- gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version4 (4)} --- ; --- Add here other ASN.1 definitions presented below --- in chapters 4 and 5. - --- add this definition to RRLP-Components module --- 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 -} - --- add this defintion to RRLP-Components module --- 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 -} - --- add this defintion to RRLP-Components module --- 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 -} - --- add this defintion to RRLP-Components module --- Protocol Error component - ProtocolError ::= SEQUENCE { - errorCause ErrorCodes, - extensionContainer ExtensionContainer OPTIONAL, - ..., --- Release extensions here - rel-5-ProtocolError-Extension Rel-5-ProtocolError-Extension OPTIONAL -} - -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), - ... -} - --- 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, -... -} - -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 --- 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 -} - -END
\ No newline at end of file diff --git a/asn1/rrlp/rrlp.cnf b/asn1/rrlp/rrlp.cnf index 94c0a9fc21..e63cadde86 100644 --- a/asn1/rrlp/rrlp.cnf +++ b/asn1/rrlp/rrlp.cnf @@ -3,17 +3,31 @@ # Copyright 2006 Anders Broman # $Id$ +#.OPT +PER +UNALIGNED +#.END + #.PDU PDU -#.FN_BODY PDU +#.OMIT_ASSIGNMENTS_EXCEPT MAP-LCS-DataTypes +Ext-GeographicalInformation +maxExt-GeographicalInformation +VelocityEstimate +#.END + +#.CLASS MAP-EXTENSION +ExtensionType +extensionId ObjectIdentifierType +#.END + +#.FN_HDR PDU proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, FALSE); - if (check_col(%(ACTX)s->pinfo->cinfo, COL_PROTOCOL)) - col_append_str(%(ACTX)s->pinfo->cinfo, COL_PROTOCOL, "/RRLP"); - - %(DEFAULT_BODY)s + if (check_col(actx->pinfo->cinfo, COL_PROTOCOL)) + col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "/RRLP"); #.END @@ -25,3 +39,4 @@ tvbuff_t *parameter_tvb = NULL; if(parameter_tvb) dissect_geographical_description(parameter_tvb, %(ACTX)s->pinfo, tree); +#.END diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 985fc5eb77..8f906f6a5b 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -968,7 +968,6 @@ DISSECTOR_INCLUDES = \ packet-ros.h \ packet-rpc.h \ packet-rquota.h \ - packet-rrlp.h \ packet-rsvp.h \ packet-rtcp.h \ packet-rtp.h \ diff --git a/epan/dissectors/packet-rrlp.c b/epan/dissectors/packet-rrlp.c index dfebdf9f6a..bb39e4809c 100644 --- a/epan/dissectors/packet-rrlp.c +++ b/epan/dissectors/packet-rrlp.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* .\packet-rrlp.c */ -/* ../../tools/asn2wrs.py -u -e -p rrlp -c rrlp.cnf -s packet-rrlp-template rrlp.asn */ +/* ../../tools/asn2wrs.py -p rrlp -c rrlp.cnf -s packet-rrlp-template RRLP-Messages.asn RRLP-Components.asn ../gsmmap/MAP-ExtensionDataTypes.asn ../gsmmap/MAP-LCS-DataTypes.asn */ /* Input file: packet-rrlp-template.c */ @@ -46,8 +46,6 @@ #include <stdio.h> #include <string.h> -#include "packet-rrlp.h" - #include "packet-ber.h" #include "packet-per.h" #include "packet-gsm_map.h" @@ -89,6 +87,7 @@ static int hf_rrlp_gps_AssistData = -1; /* GPS_AssistData */ static int hf_rrlp_extensionContainer = -1; /* ExtensionContainer */ static int hf_rrlp_rel98_MsrPosition_Req_extension = -1; /* Rel98_MsrPosition_Req_Extension */ static int hf_rrlp_rel5_MsrPosition_Req_extension = -1; /* Rel5_MsrPosition_Req_Extension */ +static int hf_rrlp_rel7_MsrPosition_Req_extension = -1; /* Rel7_MsrPosition_Req_Extension */ static int hf_rrlp_multipleSets = -1; /* MultipleSets */ static int hf_rrlp_referenceIdentity = -1; /* ReferenceIdentity */ static int hf_rrlp_otd_MeasureInfo = -1; /* OTD_MeasureInfo */ @@ -97,9 +96,11 @@ static int hf_rrlp_gps_MeasureInfo = -1; /* GPS_MeasureInfo */ static int hf_rrlp_locationError = -1; /* LocationError */ static int hf_rrlp_rel_98_MsrPosition_Rsp_Extension = -1; /* Rel_98_MsrPosition_Rsp_Extension */ static int hf_rrlp_rel_5_MsrPosition_Rsp_Extension = -1; /* Rel_5_MsrPosition_Rsp_Extension */ +static int hf_rrlp_rel_7_MsrPosition_Rsp_Extension = -1; /* Rel_7_MsrPosition_Rsp_Extension */ static int hf_rrlp_moreAssDataToBeSent = -1; /* MoreAssDataToBeSent */ static int hf_rrlp_rel98_AssistanceData_Extension = -1; /* Rel98_AssistanceData_Extension */ static int hf_rrlp_rel5_AssistanceData_Extension = -1; /* Rel5_AssistanceData_Extension */ +static int hf_rrlp_rel7_AssistanceData_Extension = -1; /* Rel7_AssistanceData_Extension */ static int hf_rrlp_errorCause = -1; /* ErrorCodes */ static int hf_rrlp_rel_5_ProtocolError_Extension = -1; /* Rel_5_ProtocolError_Extension */ static int hf_rrlp_methodType = -1; /* MethodType */ @@ -185,6 +186,7 @@ static int hf_rrlp_pseuRangeRMSErr = -1; /* INTEGER_0_63 */ static int hf_rrlp_locErrorReason = -1; /* LocErrorReason */ static int hf_rrlp_additionalAssistanceData = -1; /* AdditionalAssistanceData */ static int hf_rrlp_gpsAssistanceData = -1; /* GPSAssistanceData */ +static int hf_rrlp_ganssAssistanceData = -1; /* GANSSAssistanceData */ static int hf_rrlp_controlHeader = -1; /* ControlHeader */ static int hf_rrlp_referenceTime = -1; /* ReferenceTime */ static int hf_rrlp_refLocation = -1; /* RefLocation */ @@ -334,9 +336,177 @@ static int hf_rrlp_otd_MeasureInfo_5_Ext = -1; /* OTD_MeasureInfo_5_Ext */ static int hf_rrlp_ulPseudoSegInd = -1; /* UlPseudoSegInd */ static int hf_rrlp_smlc_code = -1; /* INTEGER_0_63 */ static int hf_rrlp_transaction_ID = -1; /* INTEGER_0_262143 */ +static int hf_rrlp_velocityRequested = -1; /* NULL */ +static int hf_rrlp_ganssPositionMethod = -1; /* GANSSPositioningMethod */ +static int hf_rrlp_ganss_AssistData = -1; /* GANSS_AssistData */ +static int hf_rrlp_ganssCarrierPhaseMeasurementRequest = -1; /* NULL */ +static int hf_rrlp_ganssTODGSMTimeAssociationMeasurementRequest = -1; /* NULL */ +static int hf_rrlp_requiredResponseTime = -1; /* RequiredResponseTime */ +static int hf_rrlp_ganss_controlHeader = -1; /* GANSS_ControlHeader */ +static int hf_rrlp_ganssCommonAssistData = -1; /* GANSSCommonAssistData */ +static int hf_rrlp_ganssGenericAssistDataList = -1; /* SeqOfGANSSGenericAssistDataElement */ +static int hf_rrlp_ganssReferenceTime = -1; /* GANSSReferenceTime */ +static int hf_rrlp_ganssRefLocation = -1; /* GANSSRefLocation */ +static int hf_rrlp_ganssIonosphericModel = -1; /* GANSSIonosphericModel */ +static int hf_rrlp_SeqOfGANSSGenericAssistDataElement_item = -1; /* GANSSGenericAssistDataElement */ +static int hf_rrlp_ganssID = -1; /* INTEGER_0_7 */ +static int hf_rrlp_ganssTimeModel = -1; /* SeqOfGANSSTimeModel */ +static int hf_rrlp_ganssDiffCorrections = -1; /* GANSSDiffCorrections */ +static int hf_rrlp_ganssNavigationModel = -1; /* GANSSNavModel */ +static int hf_rrlp_ganssRealTimeIntegrity = -1; /* GANSSRealTimeIntegrity */ +static int hf_rrlp_ganssDataBitAssist = -1; /* GANSSDataBitAssist */ +static int hf_rrlp_ganssRefMeasurementAssist = -1; /* GANSSRefMeasurementAssist */ +static int hf_rrlp_ganssAlmanacModel = -1; /* GANSSAlmanacModel */ +static int hf_rrlp_ganssUTCModel = -1; /* GANSSUTCModel */ +static int hf_rrlp_ganssRefTimeInfo = -1; /* GANSSRefTimeInfo */ +static int hf_rrlp_ganssTOD_GSMTimeAssociation = -1; /* GANSSTOD_GSMTimeAssociation */ +static int hf_rrlp_ganssDay = -1; /* INTEGER_0_8191 */ +static int hf_rrlp_ganssTOD = -1; /* GANSSTOD */ +static int hf_rrlp_ganssTODUncertainty = -1; /* GANSSTODUncertainty */ +static int hf_rrlp_ganssTimeID = -1; /* INTEGER_0_7 */ +static int hf_rrlp_frameDrift = -1; /* FrameDrift */ +static int hf_rrlp_ganssIonoModel = -1; /* GANSSIonosphereModel */ +static int hf_rrlp_ganssIonoStormFlags = -1; /* GANSSIonoStormFlags */ +static int hf_rrlp_ai0 = -1; /* INTEGER_0_4095 */ +static int hf_rrlp_ai1 = -1; /* INTEGER_0_4095 */ +static int hf_rrlp_ai2 = -1; /* INTEGER_0_4095 */ +static int hf_rrlp_ionoStormFlag1 = -1; /* INTEGER_0_1 */ +static int hf_rrlp_ionoStormFlag2 = -1; /* INTEGER_0_1 */ +static int hf_rrlp_ionoStormFlag3 = -1; /* INTEGER_0_1 */ +static int hf_rrlp_ionoStormFlag4 = -1; /* INTEGER_0_1 */ +static int hf_rrlp_ionoStormFlag5 = -1; /* INTEGER_0_1 */ +static int hf_rrlp_SeqOfGANSSTimeModel_item = -1; /* GANSSTimeModelElement */ +static int hf_rrlp_ganssTimeModelRefTime = -1; /* INTEGER_0_65535 */ +static int hf_rrlp_tA0 = -1; /* TA0 */ +static int hf_rrlp_tA1 = -1; /* TA1 */ +static int hf_rrlp_tA2 = -1; /* TA2 */ +static int hf_rrlp_gnssTOID = -1; /* INTEGER_0_7 */ +static int hf_rrlp_weekNumber = -1; /* INTEGER_0_8191 */ +static int hf_rrlp_dganssRefTime = -1; /* INTEGER_0_119 */ +static int hf_rrlp_sgnTypeList = -1; /* SeqOfSgnTypeElement */ +static int hf_rrlp_SeqOfSgnTypeElement_item = -1; /* SgnTypeElement */ +static int hf_rrlp_ganssSignalID = -1; /* GANSSSignalID */ +static int hf_rrlp_ganssStatusHealth = -1; /* INTEGER_0_7 */ +static int hf_rrlp_dganssSgnList = -1; /* SeqOfDGANSSSgnElement */ +static int hf_rrlp_SeqOfDGANSSSgnElement_item = -1; /* DGANSSSgnElement */ +static int hf_rrlp_svID = -1; /* SVID */ +static int hf_rrlp_iod = -1; /* INTEGER_0_1023 */ +static int hf_rrlp_nonBroadcastIndFlag = -1; /* INTEGER_0_1 */ +static int hf_rrlp_toeMSB = -1; /* INTEGER_0_31 */ +static int hf_rrlp_eMSB = -1; /* INTEGER_0_127 */ +static int hf_rrlp_sqrtAMBS = -1; /* INTEGER_0_63 */ +static int hf_rrlp_ganssSatelliteList = -1; /* SeqOfGANSSSatelliteElement */ +static int hf_rrlp_SeqOfGANSSSatelliteElement_item = -1; /* GANSSSatelliteElement */ +static int hf_rrlp_svHealth = -1; /* INTEGER_M7_13 */ +static int hf_rrlp_ganssClockModel = -1; /* GANSSClockModel */ +static int hf_rrlp_ganssOrbitModel = -1; /* GANSSOrbitModel */ +static int hf_rrlp_keplerianSet = -1; /* NavModel_KeplerianSet */ +static int hf_rrlp_keplerToeLSB = -1; /* INTEGER_0_511 */ +static int hf_rrlp_keplerW = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_rrlp_keplerDeltaN = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_keplerM0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_rrlp_keplerOmegaDot = -1; /* INTEGER_M8388608_8388607 */ +static int hf_rrlp_keplerELSB = -1; /* INTEGER_0_33554431 */ +static int hf_rrlp_keplerIDot = -1; /* INTEGER_M8192_8191 */ +static int hf_rrlp_keplerAPowerHalfLSB = -1; /* INTEGER_0_67108863 */ +static int hf_rrlp_keplerI0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_rrlp_keplerOmega0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_rrlp_keplerCrs = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_keplerCis = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_keplerCus = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_keplerCrc = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_keplerCic = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_keplerCuc = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_standardClockModelList = -1; /* SeqOfStandardClockModelElement */ +static int hf_rrlp_SeqOfStandardClockModelElement_item = -1; /* StandardClockModelElement */ +static int hf_rrlp_stanClockTocLSB = -1; /* INTEGER_0_511 */ +static int hf_rrlp_stanClockAF2 = -1; /* INTEGER_M2048_2047 */ +static int hf_rrlp_stanClockAF1 = -1; /* INTEGER_M131072_131071 */ +static int hf_rrlp_stanClockAF0 = -1; /* INTEGER_M134217728_134217727 */ +static int hf_rrlp_stanClockTgd = -1; /* INTEGER_M512_511 */ +static int hf_rrlp_stanModelID = -1; /* INTEGER_0_1 */ +static int hf_rrlp_ganssBadSignalList = -1; /* SeqOfBadSignalElement */ +static int hf_rrlp_SeqOfBadSignalElement_item = -1; /* BadSignalElement */ +static int hf_rrlp_badSVID = -1; /* SVID */ +static int hf_rrlp_badSignalID = -1; /* INTEGER_0_3 */ +static int hf_rrlp_ganssTOD1 = -1; /* INTEGER_0_59 */ +static int hf_rrlp_ganssDataTypeID = -1; /* INTEGER_0_2 */ +static int hf_rrlp_ganssDataBits = -1; /* SeqOf_GANSSDataBits */ +static int hf_rrlp_SeqOf_GANSSDataBits_item = -1; /* GANSSDataBit */ +static int hf_rrlp_ganssSignalID1 = -1; /* INTEGER_0_3 */ +static int hf_rrlp_ganssRefMeasAssitList = -1; /* SeqOfGANSSRefMeasurementElement */ +static int hf_rrlp_SeqOfGANSSRefMeasurementElement_item = -1; /* GANSSRefMeasurementElement */ +static int hf_rrlp_additionalDoppler = -1; /* AdditionalDopplerFields */ +static int hf_rrlp_intCodePhase1 = -1; /* INTEGER_0_127 */ +static int hf_rrlp_codePhaseSearchWindow1 = -1; /* INTEGER_0_31 */ +static int hf_rrlp_additionalAngle = -1; /* AddionalAngleFields */ +static int hf_rrlp_dopplerUncertainty1 = -1; /* INTEGER_0_4 */ +static int hf_rrlp_weekNumber1 = -1; /* INTEGER_0_255 */ +static int hf_rrlp_svIDMask = -1; /* SVIDMASK */ +static int hf_rrlp_toa = -1; /* INTEGER_0_255 */ +static int hf_rrlp_ioda = -1; /* INTEGER_0_3 */ +static int hf_rrlp_ganssAlmanacList = -1; /* SeqOfGANSSAlmanacElement */ +static int hf_rrlp_SeqOfGANSSAlmanacElement_item = -1; /* GANSSAlmanacElement */ +static int hf_rrlp_keplerianAlmanacSet = -1; /* Almanac_KeplerianSet */ +static int hf_rrlp_kepAlmanacE = -1; /* INTEGER_0_2047 */ +static int hf_rrlp_kepAlmanacDeltaI = -1; /* INTEGER_M1024_1023 */ +static int hf_rrlp_kepAlmanacOmegaDot = -1; /* INTEGER_M1024_1023 */ +static int hf_rrlp_kepSVHealth = -1; /* INTEGER_0_15 */ +static int hf_rrlp_kepAlmanacAPowerHalf = -1; /* INTEGER_M65536_65535 */ +static int hf_rrlp_kepAlmanacOmega0 = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_kepAlmanacW = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_kepAlmanacM0 = -1; /* INTEGER_M32768_32767 */ +static int hf_rrlp_kepAlmanacAF0 = -1; /* INTEGER_M8192_8191 */ +static int hf_rrlp_kepAlmanacAF1 = -1; /* INTEGER_M1024_1023 */ +static int hf_rrlp_ganssUtcA1 = -1; /* INTEGER_M8388608_8388607 */ +static int hf_rrlp_ganssUtcA0 = -1; /* INTEGER_M2147483648_2147483647 */ +static int hf_rrlp_ganssUtcTot = -1; /* INTEGER_0_255 */ +static int hf_rrlp_ganssUtcWNt = -1; /* INTEGER_0_255 */ +static int hf_rrlp_ganssUtcDeltaTls = -1; /* INTEGER_M128_127 */ +static int hf_rrlp_ganssUtcWNlsf = -1; /* INTEGER_0_255 */ +static int hf_rrlp_ganssUtcDN = -1; /* INTEGER_M128_127 */ +static int hf_rrlp_ganssUtcDeltaTlsf = -1; /* INTEGER_M128_127 */ +static int hf_rrlp_velEstimate = -1; /* VelocityEstimate */ +static int hf_rrlp_ganssLocationInfo = -1; /* GANSSLocationInfo */ +static int hf_rrlp_ganssMeasureInfo = -1; /* GANSSMeasureInfo */ +static int hf_rrlp_referenceFrame = -1; /* ReferenceFrame */ +static int hf_rrlp_ganssTODm = -1; /* GANSSTODm */ +static int hf_rrlp_ganssTODFrac = -1; /* INTEGER_0_16384 */ +static int hf_rrlp_ganssTimeID1 = -1; /* INTEGER_0_3 */ +static int hf_rrlp_posData = -1; /* PositionData */ +static int hf_rrlp_stationaryIndication = -1; /* INTEGER_0_1 */ +static int hf_rrlp_referenceFN = -1; /* INTEGER_0_65535 */ +static int hf_rrlp_referenceFNMSB = -1; /* INTEGER_0_63 */ +static int hf_rrlp_ganssMsrSetList = -1; /* SeqOfGANSS_MsrSetElement */ +static int hf_rrlp_SeqOfGANSS_MsrSetElement_item = -1; /* GANSS_MsrSetElement */ +static int hf_rrlp_deltaGNASSTOD = -1; /* INTEGER_0_127 */ +static int hf_rrlp_ganss_SgnTypeList = -1; /* SeqOfGANSS_SgnTypeElement */ +static int hf_rrlp_SeqOfGANSS_SgnTypeElement_item = -1; /* GANSS_SgnTypeElement */ +static int hf_rrlp_ganssSignalID2 = -1; /* INTEGER_0_15 */ +static int hf_rrlp_ganss_SgnList = -1; /* SeqOfGANSS_SgnElement */ +static int hf_rrlp_SeqOfGANSS_SgnElement_item = -1; /* GANSS_SgnElement */ +static int hf_rrlp_mpathDet = -1; /* MpathIndic */ +static int hf_rrlp_carrierQualityInd = -1; /* INTEGER_0_3 */ +static int hf_rrlp_codePhase1 = -1; /* INTEGER_0_2097151 */ +static int hf_rrlp_integerCodePhase = -1; /* INTEGER_0_63 */ +static int hf_rrlp_codePhaseRMSError = -1; /* INTEGER_0_63 */ +static int hf_rrlp_adr = -1; /* INTEGER_0_33554431 */ +static int hf_rrlp_privateExtensionList = -1; /* PrivateExtensionList */ +static int hf_rrlp_pcs_Extensions = -1; /* PCS_Extensions */ +static int hf_rrlp_slr_Arg_PCS_Extensions = -1; /* SLR_Arg_PCS_Extensions */ +static int hf_rrlp_PrivateExtensionList_item = -1; /* PrivateExtension */ +static int hf_rrlp_extId = -1; /* OBJECT_IDENTIFIER */ +static int hf_rrlp_extType = -1; /* T_extType */ +static int hf_rrlp_na_ESRK_Request = -1; /* NULL */ +/* named bits */ +static int hf_rrlp_GANSSPositioningMethod_gps = -1; +static int hf_rrlp_GANSSPositioningMethod_galileo = -1; +static int hf_rrlp_PositionData_e_otd = -1; +static int hf_rrlp_PositionData_gps = -1; +static int hf_rrlp_PositionData_galileo = -1; /*--- End of included file: packet-rrlp-hf.c ---*/ -#line 66 "packet-rrlp-template.c" +#line 64 "packet-rrlp-template.c" /* Initialize the subtree pointers */ static gint ett_rrlp = -1; @@ -439,18 +609,82 @@ static gint ett_rrlp_Extended_reference = -1; static gint ett_rrlp_Rel5_MsrPosition_Req_Extension = -1; static gint ett_rrlp_Rel5_AssistanceData_Extension = -1; static gint ett_rrlp_Rel_5_ProtocolError_Extension = -1; +static gint ett_rrlp_Rel7_MsrPosition_Req_Extension = -1; +static gint ett_rrlp_GANSSPositioningMethod = -1; +static gint ett_rrlp_GANSS_AssistData = -1; +static gint ett_rrlp_GANSS_ControlHeader = -1; +static gint ett_rrlp_GANSSCommonAssistData = -1; +static gint ett_rrlp_SeqOfGANSSGenericAssistDataElement = -1; +static gint ett_rrlp_GANSSGenericAssistDataElement = -1; +static gint ett_rrlp_GANSSReferenceTime = -1; +static gint ett_rrlp_GANSSRefTimeInfo = -1; +static gint ett_rrlp_GANSSTOD_GSMTimeAssociation = -1; +static gint ett_rrlp_GANSSRefLocation = -1; +static gint ett_rrlp_GANSSIonosphericModel = -1; +static gint ett_rrlp_GANSSIonosphereModel = -1; +static gint ett_rrlp_GANSSIonoStormFlags = -1; +static gint ett_rrlp_SeqOfGANSSTimeModel = -1; +static gint ett_rrlp_GANSSTimeModelElement = -1; +static gint ett_rrlp_GANSSDiffCorrections = -1; +static gint ett_rrlp_SeqOfSgnTypeElement = -1; +static gint ett_rrlp_SgnTypeElement = -1; +static gint ett_rrlp_SeqOfDGANSSSgnElement = -1; +static gint ett_rrlp_DGANSSSgnElement = -1; +static gint ett_rrlp_GANSSNavModel = -1; +static gint ett_rrlp_SeqOfGANSSSatelliteElement = -1; +static gint ett_rrlp_GANSSSatelliteElement = -1; +static gint ett_rrlp_GANSSOrbitModel = -1; +static gint ett_rrlp_NavModel_KeplerianSet = -1; +static gint ett_rrlp_GANSSClockModel = -1; +static gint ett_rrlp_SeqOfStandardClockModelElement = -1; +static gint ett_rrlp_StandardClockModelElement = -1; +static gint ett_rrlp_GANSSRealTimeIntegrity = -1; +static gint ett_rrlp_SeqOfBadSignalElement = -1; +static gint ett_rrlp_BadSignalElement = -1; +static gint ett_rrlp_GANSSDataBitAssist = -1; +static gint ett_rrlp_SeqOf_GANSSDataBits = -1; +static gint ett_rrlp_GANSSRefMeasurementAssist = -1; +static gint ett_rrlp_SeqOfGANSSRefMeasurementElement = -1; +static gint ett_rrlp_GANSSRefMeasurementElement = -1; +static gint ett_rrlp_AdditionalDopplerFields = -1; +static gint ett_rrlp_GANSSAlmanacModel = -1; +static gint ett_rrlp_SeqOfGANSSAlmanacElement = -1; +static gint ett_rrlp_GANSSAlmanacElement = -1; +static gint ett_rrlp_Almanac_KeplerianSet = -1; +static gint ett_rrlp_GANSSUTCModel = -1; +static gint ett_rrlp_Rel_7_MsrPosition_Rsp_Extension = -1; +static gint ett_rrlp_GANSSLocationInfo = -1; +static gint ett_rrlp_PositionData = -1; +static gint ett_rrlp_ReferenceFrame = -1; +static gint ett_rrlp_GANSSMeasureInfo = -1; +static gint ett_rrlp_SeqOfGANSS_MsrSetElement = -1; +static gint ett_rrlp_GANSS_MsrSetElement = -1; +static gint ett_rrlp_SeqOfGANSS_SgnTypeElement = -1; +static gint ett_rrlp_GANSS_SgnTypeElement = -1; +static gint ett_rrlp_SeqOfGANSS_SgnElement = -1; +static gint ett_rrlp_GANSS_SgnElement = -1; +static gint ett_rrlp_Rel7_AssistanceData_Extension = -1; +static gint ett_rrlp_ExtensionContainer = -1; +static gint ett_rrlp_SLR_ArgExtensionContainer = -1; +static gint ett_rrlp_PrivateExtensionList = -1; +static gint ett_rrlp_PrivateExtension = -1; +static gint ett_rrlp_PCS_Extensions = -1; +static gint ett_rrlp_SLR_Arg_PCS_Extensions = -1; /*--- End of included file: packet-rrlp-ett.c ---*/ -#line 70 "packet-rrlp-template.c" +#line 68 "packet-rrlp-template.c" /* Include constants */ /*--- Included file: packet-rrlp-val.h ---*/ #line 1 "packet-rrlp-val.h" #define maxGPSAssistanceData 40 +#define maxGANSSAssistanceData 40 +#define maxNumOfPrivateExtensions 10 +#define maxExt_GeographicalInformation 20 /*--- End of included file: packet-rrlp-val.h ---*/ -#line 73 "packet-rrlp-template.c" +#line 71 "packet-rrlp-template.c" @@ -459,35 +693,6 @@ static gint ett_rrlp_Rel_5_ProtocolError_Extension = -1; static int -dissect_rrlp_Ext_GeographicalInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 21 "rrlp.cnf" - -tvbuff_t *parameter_tvb = NULL; - - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - 1, 20, ¶meter_tvb); - - - if(parameter_tvb) - dissect_geographical_description(parameter_tvb, actx->pinfo, tree); - - - return offset; -} - - - -static int -dissect_rrlp_ExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - NO_BOUND, NO_BOUND, NULL); - - return offset; -} - - - -static int dissect_rrlp_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 7U, NULL, FALSE); @@ -662,6 +867,25 @@ dissect_rrlp_TimeSlotScheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int +dissect_rrlp_Ext_GeographicalInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 35 "rrlp.cnf" + +tvbuff_t *parameter_tvb = NULL; + + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 1, maxExt_GeographicalInformation, ¶meter_tvb); + + + if(parameter_tvb) + dissect_geographical_description(parameter_tvb, actx->pinfo, tree); + + + return offset; +} + + + +static int dissect_rrlp_BTSPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_rrlp_Ext_GeographicalInformation(tvb, offset, actx, tree, hf_index); @@ -1777,6 +2001,81 @@ dissect_rrlp_GPS_AssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int +dissect_rrlp_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + + +static int +dissect_rrlp_T_extType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + + return offset; +} + + +static const per_sequence_t PrivateExtension_sequence[] = { + { &hf_rrlp_extId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_OBJECT_IDENTIFIER }, + { &hf_rrlp_extType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_T_extType }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_PrivateExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_PrivateExtension, PrivateExtension_sequence); + + return offset; +} + + +static const per_sequence_t PrivateExtensionList_sequence_of[1] = { + { &hf_rrlp_PrivateExtensionList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_PrivateExtension }, +}; + +static int +dissect_rrlp_PrivateExtensionList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_PrivateExtensionList, PrivateExtensionList_sequence_of, + 1, maxNumOfPrivateExtensions); + + return offset; +} + + +static const per_sequence_t PCS_Extensions_sequence[] = { + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_PCS_Extensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_PCS_Extensions, PCS_Extensions_sequence); + + return offset; +} + + +static const per_sequence_t ExtensionContainer_sequence[] = { + { &hf_rrlp_privateExtensionList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_PrivateExtensionList }, + { &hf_rrlp_pcs_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_PCS_Extensions }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_ExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_ExtensionContainer, ExtensionContainer_sequence); + + return offset; +} + + + +static int dissect_rrlp_ExpectedOTD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 1250U, NULL, FALSE); @@ -1983,6 +2282,1001 @@ dissect_rrlp_Rel5_MsrPosition_Req_Extension(tvbuff_t *tvb _U_, int offset _U_, a } +static const asn_namedbit GANSSPositioningMethod_bits[] = { + { 0, &hf_rrlp_GANSSPositioningMethod_gps, -1, -1, "gps", NULL }, + { 1, &hf_rrlp_GANSSPositioningMethod_galileo, -1, -1, "galileo", NULL }, + { 0, NULL, 0, 0, NULL, NULL } +}; + +static int +dissect_rrlp_GANSSPositioningMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 2, 16, FALSE, NULL); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_8191(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 8191U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_GANSSTOD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 86399U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_GANSSTODUncertainty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 127U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GANSSRefTimeInfo_sequence[] = { + { &hf_rrlp_ganssDay , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_8191 }, + { &hf_rrlp_ganssTOD , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSTOD }, + { &hf_rrlp_ganssTODUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_GANSSTODUncertainty }, + { &hf_rrlp_ganssTimeID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_7 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSRefTimeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSRefTimeInfo, GANSSRefTimeInfo_sequence); + + return offset; +} + + + +static int +dissect_rrlp_FrameDrift(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -64, 63U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GANSSTOD_GSMTimeAssociation_sequence[] = { + { &hf_rrlp_bcchCarrier , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_BCCHCarrier }, + { &hf_rrlp_bsic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_BSIC }, + { &hf_rrlp_frameNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_FrameNumber }, + { &hf_rrlp_timeSlot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_TimeSlot }, + { &hf_rrlp_bitNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_BitNumber }, + { &hf_rrlp_frameDrift , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_FrameDrift }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSTOD_GSMTimeAssociation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSTOD_GSMTimeAssociation, GANSSTOD_GSMTimeAssociation_sequence); + + return offset; +} + + +static const per_sequence_t GANSSReferenceTime_sequence[] = { + { &hf_rrlp_ganssRefTimeInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSRefTimeInfo }, + { &hf_rrlp_ganssTOD_GSMTimeAssociation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_GANSSTOD_GSMTimeAssociation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSReferenceTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSReferenceTime, GANSSReferenceTime_sequence); + + return offset; +} + + +static const per_sequence_t GANSSRefLocation_sequence[] = { + { &hf_rrlp_threeDLocation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_Ext_GeographicalInformation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSRefLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSRefLocation, GANSSRefLocation_sequence); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4095U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GANSSIonosphereModel_sequence[] = { + { &hf_rrlp_ai0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_4095 }, + { &hf_rrlp_ai1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_4095 }, + { &hf_rrlp_ai2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_4095 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSIonosphereModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSIonosphereModel, GANSSIonosphereModel_sequence); + + return offset; +} + + +static const per_sequence_t GANSSIonoStormFlags_sequence[] = { + { &hf_rrlp_ionoStormFlag1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1 }, + { &hf_rrlp_ionoStormFlag2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1 }, + { &hf_rrlp_ionoStormFlag3 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1 }, + { &hf_rrlp_ionoStormFlag4 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1 }, + { &hf_rrlp_ionoStormFlag5 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSIonoStormFlags(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSIonoStormFlags, GANSSIonoStormFlags_sequence); + + return offset; +} + + +static const per_sequence_t GANSSIonosphericModel_sequence[] = { + { &hf_rrlp_ganssIonoModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSIonosphereModel }, + { &hf_rrlp_ganssIonoStormFlags, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSIonoStormFlags }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSIonosphericModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSIonosphericModel, GANSSIonosphericModel_sequence); + + return offset; +} + + +static const per_sequence_t GANSSCommonAssistData_sequence[] = { + { &hf_rrlp_ganssReferenceTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSReferenceTime }, + { &hf_rrlp_ganssRefLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSRefLocation }, + { &hf_rrlp_ganssIonosphericModel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSIonosphericModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSCommonAssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSCommonAssistData, GANSSCommonAssistData_sequence); + + return offset; +} + + + +static int +dissect_rrlp_TA0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -2147483648, 2147483647U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_TA1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -8388608, 8388607U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_TA2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -64, 63U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GANSSTimeModelElement_sequence[] = { + { &hf_rrlp_ganssTimeModelRefTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_65535 }, + { &hf_rrlp_tA0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_TA0 }, + { &hf_rrlp_tA1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_TA1 }, + { &hf_rrlp_tA2 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_TA2 }, + { &hf_rrlp_gnssTOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_7 }, + { &hf_rrlp_weekNumber , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_8191 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSTimeModelElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSTimeModelElement, GANSSTimeModelElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSSTimeModel_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSSTimeModel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSTimeModelElement }, +}; + +static int +dissect_rrlp_SeqOfGANSSTimeModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSSTimeModel, SeqOfGANSSTimeModel_sequence_of, + 1, 7); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_119(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 119U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_GANSSSignalID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_SVID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t DGANSSSgnElement_sequence[] = { + { &hf_rrlp_svID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SVID }, + { &hf_rrlp_iod , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1023 }, + { &hf_rrlp_udre , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_3 }, + { &hf_rrlp_pseudoRangeCor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2047_2047 }, + { &hf_rrlp_rangeRateCor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M127_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_DGANSSSgnElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_DGANSSSgnElement, DGANSSSgnElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfDGANSSSgnElement_sequence_of[1] = { + { &hf_rrlp_SeqOfDGANSSSgnElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_DGANSSSgnElement }, +}; + +static int +dissect_rrlp_SeqOfDGANSSSgnElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfDGANSSSgnElement, SeqOfDGANSSSgnElement_sequence_of, + 1, 16); + + return offset; +} + + +static const per_sequence_t SgnTypeElement_sequence[] = { + { &hf_rrlp_ganssSignalID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_GANSSSignalID }, + { &hf_rrlp_ganssStatusHealth, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_7 }, + { &hf_rrlp_dganssSgnList , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfDGANSSSgnElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_SgnTypeElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_SgnTypeElement, SgnTypeElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfSgnTypeElement_sequence_of[1] = { + { &hf_rrlp_SeqOfSgnTypeElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SgnTypeElement }, +}; + +static int +dissect_rrlp_SeqOfSgnTypeElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfSgnTypeElement, SeqOfSgnTypeElement_sequence_of, + 1, 3); + + return offset; +} + + +static const per_sequence_t GANSSDiffCorrections_sequence[] = { + { &hf_rrlp_dganssRefTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_119 }, + { &hf_rrlp_sgnTypeList , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfSgnTypeElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSDiffCorrections(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSDiffCorrections, GANSSDiffCorrections_sequence); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 127U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_M7_13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -7, 13U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 511U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_M131072_131071(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -131072, 131071U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_M134217728_134217727(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -134217728, 134217727U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_M512_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -512, 511U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t StandardClockModelElement_sequence[] = { + { &hf_rrlp_stanClockTocLSB, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_511 }, + { &hf_rrlp_stanClockAF2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2048_2047 }, + { &hf_rrlp_stanClockAF1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M131072_131071 }, + { &hf_rrlp_stanClockAF0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M134217728_134217727 }, + { &hf_rrlp_stanClockTgd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_INTEGER_M512_511 }, + { &hf_rrlp_stanModelID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_1 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_StandardClockModelElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_StandardClockModelElement, StandardClockModelElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfStandardClockModelElement_sequence_of[1] = { + { &hf_rrlp_SeqOfStandardClockModelElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_StandardClockModelElement }, +}; + +static int +dissect_rrlp_SeqOfStandardClockModelElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfStandardClockModelElement, SeqOfStandardClockModelElement_sequence_of, + 1, 2); + + return offset; +} + + +static const value_string rrlp_GANSSClockModel_vals[] = { + { 0, "standardClockModelList" }, + { 0, NULL } +}; + +static const per_choice_t GANSSClockModel_choice[] = { + { 0, &hf_rrlp_standardClockModelList, ASN1_EXTENSION_ROOT , dissect_rrlp_SeqOfStandardClockModelElement }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_rrlp_GANSSClockModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSClockModel, GANSSClockModel_choice, + NULL); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_33554431(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 33554431U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_67108863(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 67108863U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t NavModel_KeplerianSet_sequence[] = { + { &hf_rrlp_keplerToeLSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_511 }, + { &hf_rrlp_keplerW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2147483648_2147483647 }, + { &hf_rrlp_keplerDeltaN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_keplerM0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2147483648_2147483647 }, + { &hf_rrlp_keplerOmegaDot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M8388608_8388607 }, + { &hf_rrlp_keplerELSB , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_33554431 }, + { &hf_rrlp_keplerIDot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M8192_8191 }, + { &hf_rrlp_keplerAPowerHalfLSB, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_67108863 }, + { &hf_rrlp_keplerI0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2147483648_2147483647 }, + { &hf_rrlp_keplerOmega0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2147483648_2147483647 }, + { &hf_rrlp_keplerCrs , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_keplerCis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_keplerCus , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_keplerCrc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_keplerCic , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_keplerCuc , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_NavModel_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_NavModel_KeplerianSet, NavModel_KeplerianSet_sequence); + + return offset; +} + + +static const value_string rrlp_GANSSOrbitModel_vals[] = { + { 0, "keplerianSet" }, + { 0, NULL } +}; + +static const per_choice_t GANSSOrbitModel_choice[] = { + { 0, &hf_rrlp_keplerianSet , ASN1_EXTENSION_ROOT , dissect_rrlp_NavModel_KeplerianSet }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_rrlp_GANSSOrbitModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSOrbitModel, GANSSOrbitModel_choice, + NULL); + + return offset; +} + + +static const per_sequence_t GANSSSatelliteElement_sequence[] = { + { &hf_rrlp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_SVID }, + { &hf_rrlp_svHealth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M7_13 }, + { &hf_rrlp_iod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1023 }, + { &hf_rrlp_ganssClockModel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSClockModel }, + { &hf_rrlp_ganssOrbitModel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSOrbitModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSSatelliteElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSSatelliteElement, GANSSSatelliteElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSSSatelliteElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSSSatelliteElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSSatelliteElement }, +}; + +static int +dissect_rrlp_SeqOfGANSSSatelliteElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSSSatelliteElement, SeqOfGANSSSatelliteElement_sequence_of, + 1, 32); + + return offset; +} + + +static const per_sequence_t GANSSNavModel_sequence[] = { + { &hf_rrlp_nonBroadcastIndFlag, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1 }, + { &hf_rrlp_toeMSB , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_31 }, + { &hf_rrlp_eMSB , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_127 }, + { &hf_rrlp_sqrtAMBS , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_63 }, + { &hf_rrlp_ganssSatelliteList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfGANSSSatelliteElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSNavModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSNavModel, GANSSNavModel_sequence); + + return offset; +} + + +static const per_sequence_t BadSignalElement_sequence[] = { + { &hf_rrlp_badSVID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SVID }, + { &hf_rrlp_badSignalID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_3 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_BadSignalElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_BadSignalElement, BadSignalElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfBadSignalElement_sequence_of[1] = { + { &hf_rrlp_SeqOfBadSignalElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_BadSignalElement }, +}; + +static int +dissect_rrlp_SeqOfBadSignalElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfBadSignalElement, SeqOfBadSignalElement_sequence_of, + 1, 16); + + return offset; +} + + +static const per_sequence_t GANSSRealTimeIntegrity_sequence[] = { + { &hf_rrlp_ganssBadSignalList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfBadSignalElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSRealTimeIntegrity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSRealTimeIntegrity, GANSSRealTimeIntegrity_sequence); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 59U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_GANSSDataBit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 1U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t SeqOf_GANSSDataBits_sequence_of[1] = { + { &hf_rrlp_SeqOf_GANSSDataBits_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSDataBit }, +}; + +static int +dissect_rrlp_SeqOf_GANSSDataBits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOf_GANSSDataBits, SeqOf_GANSSDataBits_sequence_of, + 1, 1024); + + return offset; +} + + +static const per_sequence_t GANSSDataBitAssist_sequence[] = { + { &hf_rrlp_ganssTOD1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_59 }, + { &hf_rrlp_svID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SVID }, + { &hf_rrlp_ganssDataTypeID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_2 }, + { &hf_rrlp_ganssDataBits , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOf_GANSSDataBits }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSDataBitAssist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSDataBitAssist, GANSSDataBitAssist_sequence); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t AdditionalDopplerFields_sequence[] = { + { &hf_rrlp_doppler1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_63 }, + { &hf_rrlp_dopplerUncertainty1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_4 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_AdditionalDopplerFields(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_AdditionalDopplerFields, AdditionalDopplerFields_sequence); + + return offset; +} + + +static const per_sequence_t GANSSRefMeasurementElement_sequence[] = { + { &hf_rrlp_svID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_SVID }, + { &hf_rrlp_doppler0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2048_2047 }, + { &hf_rrlp_additionalDoppler, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_AdditionalDopplerFields }, + { &hf_rrlp_codePhase , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_1022 }, + { &hf_rrlp_intCodePhase1 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_127 }, + { &hf_rrlp_codePhaseSearchWindow1, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_31 }, + { &hf_rrlp_additionalAngle, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_AddionalAngleFields }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSRefMeasurementElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSRefMeasurementElement, GANSSRefMeasurementElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSSRefMeasurementElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSSRefMeasurementElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSRefMeasurementElement }, +}; + +static int +dissect_rrlp_SeqOfGANSSRefMeasurementElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSSRefMeasurementElement, SeqOfGANSSRefMeasurementElement_sequence_of, + 1, 16); + + return offset; +} + + +static const per_sequence_t GANSSRefMeasurementAssist_sequence[] = { + { &hf_rrlp_ganssSignalID1 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_3 }, + { &hf_rrlp_ganssRefMeasAssitList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfGANSSRefMeasurementElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSRefMeasurementAssist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSRefMeasurementAssist, GANSSRefMeasurementAssist_sequence); + + return offset; +} + + + +static int +dissect_rrlp_SVIDMASK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 36, FALSE, NULL); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2047U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_M65536_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -65536, 65535U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t Almanac_KeplerianSet_sequence[] = { + { &hf_rrlp_kepAlmanacE , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_2047 }, + { &hf_rrlp_kepAlmanacDeltaI, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M1024_1023 }, + { &hf_rrlp_kepAlmanacOmegaDot, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M1024_1023 }, + { &hf_rrlp_kepSVHealth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_15 }, + { &hf_rrlp_kepAlmanacAPowerHalf, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M65536_65535 }, + { &hf_rrlp_kepAlmanacOmega0, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_kepAlmanacW , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_kepAlmanacM0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_kepAlmanacAF0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M8192_8191 }, + { &hf_rrlp_kepAlmanacAF1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M1024_1023 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_Almanac_KeplerianSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_Almanac_KeplerianSet, Almanac_KeplerianSet_sequence); + + return offset; +} + + +static const value_string rrlp_GANSSAlmanacElement_vals[] = { + { 0, "keplerianAlmanacSet" }, + { 0, NULL } +}; + +static const per_choice_t GANSSAlmanacElement_choice[] = { + { 0, &hf_rrlp_keplerianAlmanacSet, ASN1_EXTENSION_ROOT , dissect_rrlp_Almanac_KeplerianSet }, + { 0, NULL, 0, NULL } +}; + +static int +dissect_rrlp_GANSSAlmanacElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSAlmanacElement, GANSSAlmanacElement_choice, + NULL); + + return offset; +} + + +static const per_sequence_t SeqOfGANSSAlmanacElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSSAlmanacElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSAlmanacElement }, +}; + +static int +dissect_rrlp_SeqOfGANSSAlmanacElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSSAlmanacElement, SeqOfGANSSAlmanacElement_sequence_of, + 1, 36); + + return offset; +} + + +static const per_sequence_t GANSSAlmanacModel_sequence[] = { + { &hf_rrlp_weekNumber1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_255 }, + { &hf_rrlp_svIDMask , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SVIDMASK }, + { &hf_rrlp_toa , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_255 }, + { &hf_rrlp_ioda , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_3 }, + { &hf_rrlp_ganssAlmanacList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfGANSSAlmanacElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSAlmanacModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSAlmanacModel, GANSSAlmanacModel_sequence); + + return offset; +} + + +static const per_sequence_t GANSSUTCModel_sequence[] = { + { &hf_rrlp_ganssUtcA1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M8388608_8388607 }, + { &hf_rrlp_ganssUtcA0 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M2147483648_2147483647 }, + { &hf_rrlp_ganssUtcTot , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_255 }, + { &hf_rrlp_ganssUtcWNt , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_255 }, + { &hf_rrlp_ganssUtcDeltaTls, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M128_127 }, + { &hf_rrlp_ganssUtcWNlsf , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_255 }, + { &hf_rrlp_ganssUtcDN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M128_127 }, + { &hf_rrlp_ganssUtcDeltaTlsf, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_M128_127 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSUTCModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSUTCModel, GANSSUTCModel_sequence); + + return offset; +} + + +static const per_sequence_t GANSSGenericAssistDataElement_sequence[] = { + { &hf_rrlp_ganssID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_7 }, + { &hf_rrlp_ganssTimeModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_SeqOfGANSSTimeModel }, + { &hf_rrlp_ganssDiffCorrections, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSDiffCorrections }, + { &hf_rrlp_ganssNavigationModel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSNavModel }, + { &hf_rrlp_ganssRealTimeIntegrity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSRealTimeIntegrity }, + { &hf_rrlp_ganssDataBitAssist, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSDataBitAssist }, + { &hf_rrlp_ganssRefMeasurementAssist, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSRefMeasurementAssist }, + { &hf_rrlp_ganssAlmanacModel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSAlmanacModel }, + { &hf_rrlp_ganssUTCModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSUTCModel }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSGenericAssistDataElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSGenericAssistDataElement, GANSSGenericAssistDataElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSSGenericAssistDataElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSSGenericAssistDataElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSSGenericAssistDataElement }, +}; + +static int +dissect_rrlp_SeqOfGANSSGenericAssistDataElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSSGenericAssistDataElement, SeqOfGANSSGenericAssistDataElement_sequence_of, + 1, 8); + + return offset; +} + + +static const per_sequence_t GANSS_ControlHeader_sequence[] = { + { &hf_rrlp_ganssCommonAssistData, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_GANSSCommonAssistData }, + { &hf_rrlp_ganssGenericAssistDataList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_SeqOfGANSSGenericAssistDataElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSS_ControlHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSS_ControlHeader, GANSS_ControlHeader_sequence); + + return offset; +} + + +static const per_sequence_t GANSS_AssistData_sequence[] = { + { &hf_rrlp_ganss_controlHeader, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSS_ControlHeader }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSS_AssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSS_AssistData, GANSS_AssistData_sequence); + + return offset; +} + + + +static int +dissect_rrlp_RequiredResponseTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 128U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t Rel7_MsrPosition_Req_Extension_sequence[] = { + { &hf_rrlp_velocityRequested, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_NULL }, + { &hf_rrlp_ganssPositionMethod, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSPositioningMethod }, + { &hf_rrlp_ganss_AssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSS_AssistData }, + { &hf_rrlp_ganssCarrierPhaseMeasurementRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_NULL }, + { &hf_rrlp_ganssTODGSMTimeAssociationMeasurementRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_NULL }, + { &hf_rrlp_requiredResponseTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_RequiredResponseTime }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_Rel7_MsrPosition_Req_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_Rel7_MsrPosition_Req_Extension, Rel7_MsrPosition_Req_Extension_sequence); + + return offset; +} + + static const per_sequence_t MsrPosition_Req_sequence[] = { { &hf_rrlp_positionInstruct, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_PositionInstruct }, { &hf_rrlp_referenceAssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ReferenceAssistData }, @@ -1992,6 +3286,7 @@ static const per_sequence_t MsrPosition_Req_sequence[] = { { &hf_rrlp_extensionContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ExtensionContainer }, { &hf_rrlp_rel98_MsrPosition_Req_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel98_MsrPosition_Req_Extension }, { &hf_rrlp_rel5_MsrPosition_Req_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel5_MsrPosition_Req_Extension }, + { &hf_rrlp_rel7_MsrPosition_Req_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel7_MsrPosition_Req_Extension }, { NULL, 0, 0, NULL } }; @@ -2658,6 +3953,9 @@ static const value_string rrlp_LocErrorReason_vals[] = { { 8, "notProcessed" }, { 9, "refBTSForGPSNotServingBTS" }, { 10, "refBTSForEOTDNotServingBTS" }, + { 11, "notEnoughGANSSSats" }, + { 12, "ganssAssDataMissing" }, + { 13, "refBTSForGANSSNotServingBTS" }, { 0, NULL } }; @@ -2665,7 +3963,7 @@ static const value_string rrlp_LocErrorReason_vals[] = { static int dissect_rrlp_LocErrorReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 11, NULL, TRUE, 0, NULL); + 11, NULL, TRUE, 3, NULL); return offset; } @@ -2681,9 +3979,20 @@ dissect_rrlp_GPSAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } + +static int +dissect_rrlp_GANSSAssistanceData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 1, maxGANSSAssistanceData, NULL); + + return offset; +} + + static const per_sequence_t AdditionalAssistanceData_sequence[] = { { &hf_rrlp_gpsAssistanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GPSAssistanceData }, { &hf_rrlp_extensionContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ExtensionContainer }, + { &hf_rrlp_ganssAssistanceData, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_GANSSAssistanceData }, { NULL, 0, 0, NULL } }; @@ -2777,16 +4086,6 @@ dissect_rrlp_INTEGER_0_9999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } - -static int -dissect_rrlp_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 127U, NULL, FALSE); - - return offset; -} - - static const per_sequence_t GPSTimeAssistanceMeasurements_sequence[] = { { &hf_rrlp_referenceFrameMSB, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_63 }, { &hf_rrlp_gpsTowSubms , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_9999 }, @@ -2860,6 +4159,226 @@ dissect_rrlp_Rel_5_MsrPosition_Rsp_Extension(tvbuff_t *tvb _U_, int offset _U_, } + +static int +dissect_rrlp_VelocityEstimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 7, NULL); + + return offset; +} + + +static const per_sequence_t ReferenceFrame_sequence[] = { + { &hf_rrlp_referenceFN , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_65535 }, + { &hf_rrlp_referenceFNMSB , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_63 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_ReferenceFrame(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_ReferenceFrame, ReferenceFrame_sequence); + + return offset; +} + + + +static int +dissect_rrlp_GANSSTODm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 3599999U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_16384(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 16384U, NULL, FALSE); + + return offset; +} + + +static const asn_namedbit PositionData_bits[] = { + { 0, &hf_rrlp_PositionData_e_otd, -1, -1, "e-otd", NULL }, + { 1, &hf_rrlp_PositionData_gps, -1, -1, "gps", NULL }, + { 2, &hf_rrlp_PositionData_galileo, -1, -1, "galileo", NULL }, + { 0, NULL, 0, 0, NULL, NULL } +}; + +static int +dissect_rrlp_PositionData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 3, 16, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t GANSSLocationInfo_sequence[] = { + { &hf_rrlp_referenceFrame , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ReferenceFrame }, + { &hf_rrlp_ganssTODm , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSTODm }, + { &hf_rrlp_ganssTODFrac , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_16384 }, + { &hf_rrlp_ganssTODUncertainty, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSTODUncertainty }, + { &hf_rrlp_ganssTimeID1 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_3 }, + { &hf_rrlp_fixType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_FixType }, + { &hf_rrlp_posData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_PositionData }, + { &hf_rrlp_stationaryIndication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_1 }, + { &hf_rrlp_posEstimate , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rrlp_Ext_GeographicalInformation }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSLocationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSLocationInfo, GANSSLocationInfo_sequence); + + return offset; +} + + + +static int +dissect_rrlp_INTEGER_0_2097151(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2097151U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GANSS_SgnElement_sequence[] = { + { &hf_rrlp_svID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SVID }, + { &hf_rrlp_cNo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_63 }, + { &hf_rrlp_mpathDet , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_MpathIndic }, + { &hf_rrlp_carrierQualityInd, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_3 }, + { &hf_rrlp_codePhase1 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_2097151 }, + { &hf_rrlp_integerCodePhase, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_63 }, + { &hf_rrlp_codePhaseRMSError, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_63 }, + { &hf_rrlp_doppler , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_M32768_32767 }, + { &hf_rrlp_adr , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_33554431 }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSS_SgnElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSS_SgnElement, GANSS_SgnElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSS_SgnElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSS_SgnElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSS_SgnElement }, +}; + +static int +dissect_rrlp_SeqOfGANSS_SgnElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSS_SgnElement, SeqOfGANSS_SgnElement_sequence_of, + 1, 16); + + return offset; +} + + +static const per_sequence_t GANSS_SgnTypeElement_sequence[] = { + { &hf_rrlp_ganssSignalID2 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_0_15 }, + { &hf_rrlp_ganss_SgnList , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfGANSS_SgnElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSS_SgnTypeElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSS_SgnTypeElement, GANSS_SgnTypeElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSS_SgnTypeElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSS_SgnTypeElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSS_SgnTypeElement }, +}; + +static int +dissect_rrlp_SeqOfGANSS_SgnTypeElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSS_SgnTypeElement, SeqOfGANSS_SgnTypeElement_sequence_of, + 1, 6); + + return offset; +} + + +static const per_sequence_t GANSS_MsrSetElement_sequence[] = { + { &hf_rrlp_referenceFrame , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_ReferenceFrame }, + { &hf_rrlp_ganssTODm , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_GANSSTODm }, + { &hf_rrlp_deltaGNASSTOD , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_INTEGER_0_127 }, + { &hf_rrlp_ganssTODUncertainty, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_rrlp_GANSSTODUncertainty }, + { &hf_rrlp_ganss_SgnTypeList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfGANSS_SgnTypeElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSS_MsrSetElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSS_MsrSetElement, GANSS_MsrSetElement_sequence); + + return offset; +} + + +static const per_sequence_t SeqOfGANSS_MsrSetElement_sequence_of[1] = { + { &hf_rrlp_SeqOfGANSS_MsrSetElement_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_GANSS_MsrSetElement }, +}; + +static int +dissect_rrlp_SeqOfGANSS_MsrSetElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_rrlp_SeqOfGANSS_MsrSetElement, SeqOfGANSS_MsrSetElement_sequence_of, + 1, 3); + + return offset; +} + + +static const per_sequence_t GANSSMeasureInfo_sequence[] = { + { &hf_rrlp_ganssMsrSetList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfGANSS_MsrSetElement }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_GANSSMeasureInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_GANSSMeasureInfo, GANSSMeasureInfo_sequence); + + return offset; +} + + +static const per_sequence_t Rel_7_MsrPosition_Rsp_Extension_sequence[] = { + { &hf_rrlp_velEstimate , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_VelocityEstimate }, + { &hf_rrlp_ganssLocationInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSLocationInfo }, + { &hf_rrlp_ganssMeasureInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSSMeasureInfo }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_Rel_7_MsrPosition_Rsp_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_Rel_7_MsrPosition_Rsp_Extension, Rel_7_MsrPosition_Rsp_Extension_sequence); + + return offset; +} + + static const per_sequence_t MsrPosition_Rsp_sequence[] = { { &hf_rrlp_multipleSets , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_MultipleSets }, { &hf_rrlp_referenceIdentity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ReferenceIdentity }, @@ -2870,6 +4389,7 @@ static const per_sequence_t MsrPosition_Rsp_sequence[] = { { &hf_rrlp_extensionContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ExtensionContainer }, { &hf_rrlp_rel_98_MsrPosition_Rsp_Extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel_98_MsrPosition_Rsp_Extension }, { &hf_rrlp_rel_5_MsrPosition_Rsp_Extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel_5_MsrPosition_Rsp_Extension }, + { &hf_rrlp_rel_7_MsrPosition_Rsp_Extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel_7_MsrPosition_Rsp_Extension }, { NULL, 0, 0, NULL } }; @@ -2928,6 +4448,22 @@ dissect_rrlp_Rel5_AssistanceData_Extension(tvbuff_t *tvb _U_, int offset _U_, as } +static const per_sequence_t Rel7_AssistanceData_Extension_sequence[] = { + { &hf_rrlp_ganss_AssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_GANSS_AssistData }, + { &hf_rrlp_ganssCarrierPhaseMeasurementRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_NULL }, + { &hf_rrlp_ganssTODGSMTimeAssociationMeasurementRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_Rel7_AssistanceData_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_Rel7_AssistanceData_Extension, Rel7_AssistanceData_Extension_sequence); + + return offset; +} + + static const per_sequence_t AssistanceData_sequence[] = { { &hf_rrlp_referenceAssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ReferenceAssistData }, { &hf_rrlp_msrAssistData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_MsrAssistData }, @@ -2937,6 +4473,7 @@ static const per_sequence_t AssistanceData_sequence[] = { { &hf_rrlp_extensionContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_ExtensionContainer }, { &hf_rrlp_rel98_AssistanceData_Extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel98_AssistanceData_Extension }, { &hf_rrlp_rel5_AssistanceData_Extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel5_AssistanceData_Extension }, + { &hf_rrlp_rel7_AssistanceData_Extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_Rel7_AssistanceData_Extension }, { NULL, 0, 0, NULL } }; @@ -3035,17 +4572,44 @@ static const per_sequence_t PDU_sequence[] = { static int dissect_rrlp_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 10 "rrlp.cnf" +#line 26 "rrlp.cnf" proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, FALSE); if (check_col(actx->pinfo->cinfo, COL_PROTOCOL)) col_append_str(actx->pinfo->cinfo, COL_PROTOCOL, "/RRLP"); - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_rrlp_PDU, PDU_sequence); + return offset; +} + +static const per_sequence_t SLR_Arg_PCS_Extensions_sequence[] = { + { &hf_rrlp_na_ESRK_Request, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rrlp_NULL }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_SLR_Arg_PCS_Extensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_SLR_Arg_PCS_Extensions, SLR_Arg_PCS_Extensions_sequence); + + return offset; +} + + +static const per_sequence_t SLR_ArgExtensionContainer_sequence[] = { + { &hf_rrlp_privateExtensionList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_PrivateExtensionList }, + { &hf_rrlp_slr_Arg_PCS_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rrlp_SLR_Arg_PCS_Extensions }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_rrlp_SLR_ArgExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_rrlp_SLR_ArgExtensionContainer, SLR_ArgExtensionContainer_sequence); return offset; } @@ -3060,7 +4624,7 @@ static void dissect_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tre /*--- End of included file: packet-rrlp-fn.c ---*/ -#line 76 "packet-rrlp-template.c" +#line 74 "packet-rrlp-template.c" /*--- proto_register_rrlp -------------------------------------------*/ @@ -3126,7 +4690,7 @@ void proto_register_rrlp(void) { "rrlp.GPS_AssistData", HFILL }}, { &hf_rrlp_extensionContainer, { "extensionContainer", "rrlp.extensionContainer", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_NONE, NULL, 0, "rrlp.ExtensionContainer", HFILL }}, { &hf_rrlp_rel98_MsrPosition_Req_extension, { "rel98-MsrPosition-Req-extension", "rrlp.rel98_MsrPosition_Req_extension", @@ -3136,6 +4700,10 @@ void proto_register_rrlp(void) { { "rel5-MsrPosition-Req-extension", "rrlp.rel5_MsrPosition_Req_extension", FT_NONE, BASE_NONE, NULL, 0, "rrlp.Rel5_MsrPosition_Req_Extension", HFILL }}, + { &hf_rrlp_rel7_MsrPosition_Req_extension, + { "rel7-MsrPosition-Req-extension", "rrlp.rel7_MsrPosition_Req_extension", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.Rel7_MsrPosition_Req_Extension", HFILL }}, { &hf_rrlp_multipleSets, { "multipleSets", "rrlp.multipleSets", FT_NONE, BASE_NONE, NULL, 0, @@ -3168,6 +4736,10 @@ void proto_register_rrlp(void) { { "rel-5-MsrPosition-Rsp-Extension", "rrlp.rel_5_MsrPosition_Rsp_Extension", FT_NONE, BASE_NONE, NULL, 0, "rrlp.Rel_5_MsrPosition_Rsp_Extension", HFILL }}, + { &hf_rrlp_rel_7_MsrPosition_Rsp_Extension, + { "rel-7-MsrPosition-Rsp-Extension", "rrlp.rel_7_MsrPosition_Rsp_Extension", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.Rel_7_MsrPosition_Rsp_Extension", HFILL }}, { &hf_rrlp_moreAssDataToBeSent, { "moreAssDataToBeSent", "rrlp.moreAssDataToBeSent", FT_UINT32, BASE_DEC, VALS(rrlp_MoreAssDataToBeSent_vals), 0, @@ -3180,6 +4752,10 @@ void proto_register_rrlp(void) { { "rel5-AssistanceData-Extension", "rrlp.rel5_AssistanceData_Extension", FT_NONE, BASE_NONE, NULL, 0, "rrlp.Rel5_AssistanceData_Extension", HFILL }}, + { &hf_rrlp_rel7_AssistanceData_Extension, + { "rel7-AssistanceData-Extension", "rrlp.rel7_AssistanceData_Extension", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.Rel7_AssistanceData_Extension", HFILL }}, { &hf_rrlp_errorCause, { "errorCause", "rrlp.errorCause", FT_UINT32, BASE_DEC, VALS(rrlp_ErrorCodes_vals), 0, @@ -3520,6 +5096,10 @@ void proto_register_rrlp(void) { { "gpsAssistanceData", "rrlp.gpsAssistanceData", FT_BYTES, BASE_HEX, NULL, 0, "rrlp.GPSAssistanceData", HFILL }}, + { &hf_rrlp_ganssAssistanceData, + { "ganssAssistanceData", "rrlp.ganssAssistanceData", + FT_BYTES, BASE_HEX, NULL, 0, + "rrlp.GANSSAssistanceData", HFILL }}, { &hf_rrlp_controlHeader, { "controlHeader", "rrlp.controlHeader", FT_NONE, BASE_NONE, NULL, 0, @@ -4116,9 +5696,677 @@ void proto_register_rrlp(void) { { "transaction-ID", "rrlp.transaction_ID", FT_UINT32, BASE_DEC, NULL, 0, "rrlp.INTEGER_0_262143", HFILL }}, + { &hf_rrlp_velocityRequested, + { "velocityRequested", "rrlp.velocityRequested", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.NULL", HFILL }}, + { &hf_rrlp_ganssPositionMethod, + { "ganssPositionMethod", "rrlp.ganssPositionMethod", + FT_BYTES, BASE_HEX, NULL, 0, + "rrlp.GANSSPositioningMethod", HFILL }}, + { &hf_rrlp_ganss_AssistData, + { "ganss-AssistData", "rrlp.ganss_AssistData", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSS_AssistData", HFILL }}, + { &hf_rrlp_ganssCarrierPhaseMeasurementRequest, + { "ganssCarrierPhaseMeasurementRequest", "rrlp.ganssCarrierPhaseMeasurementRequest", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.NULL", HFILL }}, + { &hf_rrlp_ganssTODGSMTimeAssociationMeasurementRequest, + { "ganssTODGSMTimeAssociationMeasurementRequest", "rrlp.ganssTODGSMTimeAssociationMeasurementRequest", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.NULL", HFILL }}, + { &hf_rrlp_requiredResponseTime, + { "requiredResponseTime", "rrlp.requiredResponseTime", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.RequiredResponseTime", HFILL }}, + { &hf_rrlp_ganss_controlHeader, + { "ganss-controlHeader", "rrlp.ganss_controlHeader", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSS_ControlHeader", HFILL }}, + { &hf_rrlp_ganssCommonAssistData, + { "ganssCommonAssistData", "rrlp.ganssCommonAssistData", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSCommonAssistData", HFILL }}, + { &hf_rrlp_ganssGenericAssistDataList, + { "ganssGenericAssistDataList", "rrlp.ganssGenericAssistDataList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSSGenericAssistDataElement", HFILL }}, + { &hf_rrlp_ganssReferenceTime, + { "ganssReferenceTime", "rrlp.ganssReferenceTime", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSReferenceTime", HFILL }}, + { &hf_rrlp_ganssRefLocation, + { "ganssRefLocation", "rrlp.ganssRefLocation", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSRefLocation", HFILL }}, + { &hf_rrlp_ganssIonosphericModel, + { "ganssIonosphericModel", "rrlp.ganssIonosphericModel", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSIonosphericModel", HFILL }}, + { &hf_rrlp_SeqOfGANSSGenericAssistDataElement_item, + { "Item", "rrlp.SeqOfGANSSGenericAssistDataElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSGenericAssistDataElement", HFILL }}, + { &hf_rrlp_ganssID, + { "ganssID", "rrlp.ganssID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_7", HFILL }}, + { &hf_rrlp_ganssTimeModel, + { "ganssTimeModel", "rrlp.ganssTimeModel", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSSTimeModel", HFILL }}, + { &hf_rrlp_ganssDiffCorrections, + { "ganssDiffCorrections", "rrlp.ganssDiffCorrections", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSDiffCorrections", HFILL }}, + { &hf_rrlp_ganssNavigationModel, + { "ganssNavigationModel", "rrlp.ganssNavigationModel", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSNavModel", HFILL }}, + { &hf_rrlp_ganssRealTimeIntegrity, + { "ganssRealTimeIntegrity", "rrlp.ganssRealTimeIntegrity", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSRealTimeIntegrity", HFILL }}, + { &hf_rrlp_ganssDataBitAssist, + { "ganssDataBitAssist", "rrlp.ganssDataBitAssist", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSDataBitAssist", HFILL }}, + { &hf_rrlp_ganssRefMeasurementAssist, + { "ganssRefMeasurementAssist", "rrlp.ganssRefMeasurementAssist", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSRefMeasurementAssist", HFILL }}, + { &hf_rrlp_ganssAlmanacModel, + { "ganssAlmanacModel", "rrlp.ganssAlmanacModel", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSAlmanacModel", HFILL }}, + { &hf_rrlp_ganssUTCModel, + { "ganssUTCModel", "rrlp.ganssUTCModel", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSUTCModel", HFILL }}, + { &hf_rrlp_ganssRefTimeInfo, + { "ganssRefTimeInfo", "rrlp.ganssRefTimeInfo", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSRefTimeInfo", HFILL }}, + { &hf_rrlp_ganssTOD_GSMTimeAssociation, + { "ganssTOD-GSMTimeAssociation", "rrlp.ganssTOD_GSMTimeAssociation", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSTOD_GSMTimeAssociation", HFILL }}, + { &hf_rrlp_ganssDay, + { "ganssDay", "rrlp.ganssDay", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_8191", HFILL }}, + { &hf_rrlp_ganssTOD, + { "ganssTOD", "rrlp.ganssTOD", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.GANSSTOD", HFILL }}, + { &hf_rrlp_ganssTODUncertainty, + { "ganssTODUncertainty", "rrlp.ganssTODUncertainty", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.GANSSTODUncertainty", HFILL }}, + { &hf_rrlp_ganssTimeID, + { "ganssTimeID", "rrlp.ganssTimeID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_7", HFILL }}, + { &hf_rrlp_frameDrift, + { "frameDrift", "rrlp.frameDrift", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.FrameDrift", HFILL }}, + { &hf_rrlp_ganssIonoModel, + { "ganssIonoModel", "rrlp.ganssIonoModel", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSIonosphereModel", HFILL }}, + { &hf_rrlp_ganssIonoStormFlags, + { "ganssIonoStormFlags", "rrlp.ganssIonoStormFlags", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSIonoStormFlags", HFILL }}, + { &hf_rrlp_ai0, + { "ai0", "rrlp.ai0", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_4095", HFILL }}, + { &hf_rrlp_ai1, + { "ai1", "rrlp.ai1", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_4095", HFILL }}, + { &hf_rrlp_ai2, + { "ai2", "rrlp.ai2", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_4095", HFILL }}, + { &hf_rrlp_ionoStormFlag1, + { "ionoStormFlag1", "rrlp.ionoStormFlag1", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_ionoStormFlag2, + { "ionoStormFlag2", "rrlp.ionoStormFlag2", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_ionoStormFlag3, + { "ionoStormFlag3", "rrlp.ionoStormFlag3", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_ionoStormFlag4, + { "ionoStormFlag4", "rrlp.ionoStormFlag4", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_ionoStormFlag5, + { "ionoStormFlag5", "rrlp.ionoStormFlag5", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_SeqOfGANSSTimeModel_item, + { "Item", "rrlp.SeqOfGANSSTimeModel_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSTimeModelElement", HFILL }}, + { &hf_rrlp_ganssTimeModelRefTime, + { "ganssTimeModelRefTime", "rrlp.ganssTimeModelRefTime", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_65535", HFILL }}, + { &hf_rrlp_tA0, + { "tA0", "rrlp.tA0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.TA0", HFILL }}, + { &hf_rrlp_tA1, + { "tA1", "rrlp.tA1", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.TA1", HFILL }}, + { &hf_rrlp_tA2, + { "tA2", "rrlp.tA2", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.TA2", HFILL }}, + { &hf_rrlp_gnssTOID, + { "gnssTOID", "rrlp.gnssTOID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_7", HFILL }}, + { &hf_rrlp_weekNumber, + { "weekNumber", "rrlp.weekNumber", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_8191", HFILL }}, + { &hf_rrlp_dganssRefTime, + { "dganssRefTime", "rrlp.dganssRefTime", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_119", HFILL }}, + { &hf_rrlp_sgnTypeList, + { "sgnTypeList", "rrlp.sgnTypeList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfSgnTypeElement", HFILL }}, + { &hf_rrlp_SeqOfSgnTypeElement_item, + { "Item", "rrlp.SeqOfSgnTypeElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.SgnTypeElement", HFILL }}, + { &hf_rrlp_ganssSignalID, + { "ganssSignalID", "rrlp.ganssSignalID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.GANSSSignalID", HFILL }}, + { &hf_rrlp_ganssStatusHealth, + { "ganssStatusHealth", "rrlp.ganssStatusHealth", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_7", HFILL }}, + { &hf_rrlp_dganssSgnList, + { "dganssSgnList", "rrlp.dganssSgnList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfDGANSSSgnElement", HFILL }}, + { &hf_rrlp_SeqOfDGANSSSgnElement_item, + { "Item", "rrlp.SeqOfDGANSSSgnElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.DGANSSSgnElement", HFILL }}, + { &hf_rrlp_svID, + { "svID", "rrlp.svID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SVID", HFILL }}, + { &hf_rrlp_iod, + { "iod", "rrlp.iod", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1023", HFILL }}, + { &hf_rrlp_nonBroadcastIndFlag, + { "nonBroadcastIndFlag", "rrlp.nonBroadcastIndFlag", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_toeMSB, + { "toeMSB", "rrlp.toeMSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_31", HFILL }}, + { &hf_rrlp_eMSB, + { "eMSB", "rrlp.eMSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_127", HFILL }}, + { &hf_rrlp_sqrtAMBS, + { "sqrtAMBS", "rrlp.sqrtAMBS", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_63", HFILL }}, + { &hf_rrlp_ganssSatelliteList, + { "ganssSatelliteList", "rrlp.ganssSatelliteList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSSSatelliteElement", HFILL }}, + { &hf_rrlp_SeqOfGANSSSatelliteElement_item, + { "Item", "rrlp.SeqOfGANSSSatelliteElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSSatelliteElement", HFILL }}, + { &hf_rrlp_svHealth, + { "svHealth", "rrlp.svHealth", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M7_13", HFILL }}, + { &hf_rrlp_ganssClockModel, + { "ganssClockModel", "rrlp.ganssClockModel", + FT_UINT32, BASE_DEC, VALS(rrlp_GANSSClockModel_vals), 0, + "rrlp.GANSSClockModel", HFILL }}, + { &hf_rrlp_ganssOrbitModel, + { "ganssOrbitModel", "rrlp.ganssOrbitModel", + FT_UINT32, BASE_DEC, VALS(rrlp_GANSSOrbitModel_vals), 0, + "rrlp.GANSSOrbitModel", HFILL }}, + { &hf_rrlp_keplerianSet, + { "keplerianSet", "rrlp.keplerianSet", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.NavModel_KeplerianSet", HFILL }}, + { &hf_rrlp_keplerToeLSB, + { "keplerToeLSB", "rrlp.keplerToeLSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_511", HFILL }}, + { &hf_rrlp_keplerW, + { "keplerW", "rrlp.keplerW", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_rrlp_keplerDeltaN, + { "keplerDeltaN", "rrlp.keplerDeltaN", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_keplerM0, + { "keplerM0", "rrlp.keplerM0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_rrlp_keplerOmegaDot, + { "keplerOmegaDot", "rrlp.keplerOmegaDot", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M8388608_8388607", HFILL }}, + { &hf_rrlp_keplerELSB, + { "keplerELSB", "rrlp.keplerELSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_33554431", HFILL }}, + { &hf_rrlp_keplerIDot, + { "keplerIDot", "rrlp.keplerIDot", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M8192_8191", HFILL }}, + { &hf_rrlp_keplerAPowerHalfLSB, + { "keplerAPowerHalfLSB", "rrlp.keplerAPowerHalfLSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_67108863", HFILL }}, + { &hf_rrlp_keplerI0, + { "keplerI0", "rrlp.keplerI0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_rrlp_keplerOmega0, + { "keplerOmega0", "rrlp.keplerOmega0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_rrlp_keplerCrs, + { "keplerCrs", "rrlp.keplerCrs", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_keplerCis, + { "keplerCis", "rrlp.keplerCis", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_keplerCus, + { "keplerCus", "rrlp.keplerCus", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_keplerCrc, + { "keplerCrc", "rrlp.keplerCrc", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_keplerCic, + { "keplerCic", "rrlp.keplerCic", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_keplerCuc, + { "keplerCuc", "rrlp.keplerCuc", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_standardClockModelList, + { "standardClockModelList", "rrlp.standardClockModelList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfStandardClockModelElement", HFILL }}, + { &hf_rrlp_SeqOfStandardClockModelElement_item, + { "Item", "rrlp.SeqOfStandardClockModelElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.StandardClockModelElement", HFILL }}, + { &hf_rrlp_stanClockTocLSB, + { "stanClockTocLSB", "rrlp.stanClockTocLSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_511", HFILL }}, + { &hf_rrlp_stanClockAF2, + { "stanClockAF2", "rrlp.stanClockAF2", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M2048_2047", HFILL }}, + { &hf_rrlp_stanClockAF1, + { "stanClockAF1", "rrlp.stanClockAF1", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M131072_131071", HFILL }}, + { &hf_rrlp_stanClockAF0, + { "stanClockAF0", "rrlp.stanClockAF0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M134217728_134217727", HFILL }}, + { &hf_rrlp_stanClockTgd, + { "stanClockTgd", "rrlp.stanClockTgd", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M512_511", HFILL }}, + { &hf_rrlp_stanModelID, + { "stanModelID", "rrlp.stanModelID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_ganssBadSignalList, + { "ganssBadSignalList", "rrlp.ganssBadSignalList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfBadSignalElement", HFILL }}, + { &hf_rrlp_SeqOfBadSignalElement_item, + { "Item", "rrlp.SeqOfBadSignalElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.BadSignalElement", HFILL }}, + { &hf_rrlp_badSVID, + { "badSVID", "rrlp.badSVID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SVID", HFILL }}, + { &hf_rrlp_badSignalID, + { "badSignalID", "rrlp.badSignalID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_3", HFILL }}, + { &hf_rrlp_ganssTOD1, + { "ganssTOD", "rrlp.ganssTOD", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_59", HFILL }}, + { &hf_rrlp_ganssDataTypeID, + { "ganssDataTypeID", "rrlp.ganssDataTypeID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_2", HFILL }}, + { &hf_rrlp_ganssDataBits, + { "ganssDataBits", "rrlp.ganssDataBits", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOf_GANSSDataBits", HFILL }}, + { &hf_rrlp_SeqOf_GANSSDataBits_item, + { "Item", "rrlp.SeqOf_GANSSDataBits_item", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.GANSSDataBit", HFILL }}, + { &hf_rrlp_ganssSignalID1, + { "ganssSignalID", "rrlp.ganssSignalID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_3", HFILL }}, + { &hf_rrlp_ganssRefMeasAssitList, + { "ganssRefMeasAssitList", "rrlp.ganssRefMeasAssitList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSSRefMeasurementElement", HFILL }}, + { &hf_rrlp_SeqOfGANSSRefMeasurementElement_item, + { "Item", "rrlp.SeqOfGANSSRefMeasurementElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSRefMeasurementElement", HFILL }}, + { &hf_rrlp_additionalDoppler, + { "additionalDoppler", "rrlp.additionalDoppler", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.AdditionalDopplerFields", HFILL }}, + { &hf_rrlp_intCodePhase1, + { "intCodePhase", "rrlp.intCodePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_127", HFILL }}, + { &hf_rrlp_codePhaseSearchWindow1, + { "codePhaseSearchWindow", "rrlp.codePhaseSearchWindow", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_31", HFILL }}, + { &hf_rrlp_additionalAngle, + { "additionalAngle", "rrlp.additionalAngle", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.AddionalAngleFields", HFILL }}, + { &hf_rrlp_dopplerUncertainty1, + { "dopplerUncertainty", "rrlp.dopplerUncertainty", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_4", HFILL }}, + { &hf_rrlp_weekNumber1, + { "weekNumber", "rrlp.weekNumber", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_255", HFILL }}, + { &hf_rrlp_svIDMask, + { "svIDMask", "rrlp.svIDMask", + FT_BYTES, BASE_HEX, NULL, 0, + "rrlp.SVIDMASK", HFILL }}, + { &hf_rrlp_toa, + { "toa", "rrlp.toa", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_255", HFILL }}, + { &hf_rrlp_ioda, + { "ioda", "rrlp.ioda", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_3", HFILL }}, + { &hf_rrlp_ganssAlmanacList, + { "ganssAlmanacList", "rrlp.ganssAlmanacList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSSAlmanacElement", HFILL }}, + { &hf_rrlp_SeqOfGANSSAlmanacElement_item, + { "Item", "rrlp.SeqOfGANSSAlmanacElement_item", + FT_UINT32, BASE_DEC, VALS(rrlp_GANSSAlmanacElement_vals), 0, + "rrlp.GANSSAlmanacElement", HFILL }}, + { &hf_rrlp_keplerianAlmanacSet, + { "keplerianAlmanacSet", "rrlp.keplerianAlmanacSet", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.Almanac_KeplerianSet", HFILL }}, + { &hf_rrlp_kepAlmanacE, + { "kepAlmanacE", "rrlp.kepAlmanacE", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_2047", HFILL }}, + { &hf_rrlp_kepAlmanacDeltaI, + { "kepAlmanacDeltaI", "rrlp.kepAlmanacDeltaI", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M1024_1023", HFILL }}, + { &hf_rrlp_kepAlmanacOmegaDot, + { "kepAlmanacOmegaDot", "rrlp.kepAlmanacOmegaDot", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M1024_1023", HFILL }}, + { &hf_rrlp_kepSVHealth, + { "kepSVHealth", "rrlp.kepSVHealth", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_15", HFILL }}, + { &hf_rrlp_kepAlmanacAPowerHalf, + { "kepAlmanacAPowerHalf", "rrlp.kepAlmanacAPowerHalf", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M65536_65535", HFILL }}, + { &hf_rrlp_kepAlmanacOmega0, + { "kepAlmanacOmega0", "rrlp.kepAlmanacOmega0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_kepAlmanacW, + { "kepAlmanacW", "rrlp.kepAlmanacW", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_kepAlmanacM0, + { "kepAlmanacM0", "rrlp.kepAlmanacM0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M32768_32767", HFILL }}, + { &hf_rrlp_kepAlmanacAF0, + { "kepAlmanacAF0", "rrlp.kepAlmanacAF0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M8192_8191", HFILL }}, + { &hf_rrlp_kepAlmanacAF1, + { "kepAlmanacAF1", "rrlp.kepAlmanacAF1", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M1024_1023", HFILL }}, + { &hf_rrlp_ganssUtcA1, + { "ganssUtcA1", "rrlp.ganssUtcA1", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M8388608_8388607", HFILL }}, + { &hf_rrlp_ganssUtcA0, + { "ganssUtcA0", "rrlp.ganssUtcA0", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M2147483648_2147483647", HFILL }}, + { &hf_rrlp_ganssUtcTot, + { "ganssUtcTot", "rrlp.ganssUtcTot", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_255", HFILL }}, + { &hf_rrlp_ganssUtcWNt, + { "ganssUtcWNt", "rrlp.ganssUtcWNt", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_255", HFILL }}, + { &hf_rrlp_ganssUtcDeltaTls, + { "ganssUtcDeltaTls", "rrlp.ganssUtcDeltaTls", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M128_127", HFILL }}, + { &hf_rrlp_ganssUtcWNlsf, + { "ganssUtcWNlsf", "rrlp.ganssUtcWNlsf", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_255", HFILL }}, + { &hf_rrlp_ganssUtcDN, + { "ganssUtcDN", "rrlp.ganssUtcDN", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M128_127", HFILL }}, + { &hf_rrlp_ganssUtcDeltaTlsf, + { "ganssUtcDeltaTlsf", "rrlp.ganssUtcDeltaTlsf", + FT_INT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_M128_127", HFILL }}, + { &hf_rrlp_velEstimate, + { "velEstimate", "rrlp.velEstimate", + FT_BYTES, BASE_HEX, NULL, 0, + "rrlp.VelocityEstimate", HFILL }}, + { &hf_rrlp_ganssLocationInfo, + { "ganssLocationInfo", "rrlp.ganssLocationInfo", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSLocationInfo", HFILL }}, + { &hf_rrlp_ganssMeasureInfo, + { "ganssMeasureInfo", "rrlp.ganssMeasureInfo", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSSMeasureInfo", HFILL }}, + { &hf_rrlp_referenceFrame, + { "referenceFrame", "rrlp.referenceFrame", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.ReferenceFrame", HFILL }}, + { &hf_rrlp_ganssTODm, + { "ganssTODm", "rrlp.ganssTODm", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.GANSSTODm", HFILL }}, + { &hf_rrlp_ganssTODFrac, + { "ganssTODFrac", "rrlp.ganssTODFrac", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_16384", HFILL }}, + { &hf_rrlp_ganssTimeID1, + { "ganssTimeID", "rrlp.ganssTimeID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_3", HFILL }}, + { &hf_rrlp_posData, + { "posData", "rrlp.posData", + FT_BYTES, BASE_HEX, NULL, 0, + "rrlp.PositionData", HFILL }}, + { &hf_rrlp_stationaryIndication, + { "stationaryIndication", "rrlp.stationaryIndication", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_1", HFILL }}, + { &hf_rrlp_referenceFN, + { "referenceFN", "rrlp.referenceFN", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_65535", HFILL }}, + { &hf_rrlp_referenceFNMSB, + { "referenceFNMSB", "rrlp.referenceFNMSB", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_63", HFILL }}, + { &hf_rrlp_ganssMsrSetList, + { "ganssMsrSetList", "rrlp.ganssMsrSetList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSS_MsrSetElement", HFILL }}, + { &hf_rrlp_SeqOfGANSS_MsrSetElement_item, + { "Item", "rrlp.SeqOfGANSS_MsrSetElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSS_MsrSetElement", HFILL }}, + { &hf_rrlp_deltaGNASSTOD, + { "deltaGNASSTOD", "rrlp.deltaGNASSTOD", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_127", HFILL }}, + { &hf_rrlp_ganss_SgnTypeList, + { "ganss-SgnTypeList", "rrlp.ganss_SgnTypeList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSS_SgnTypeElement", HFILL }}, + { &hf_rrlp_SeqOfGANSS_SgnTypeElement_item, + { "Item", "rrlp.SeqOfGANSS_SgnTypeElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSS_SgnTypeElement", HFILL }}, + { &hf_rrlp_ganssSignalID2, + { "ganssSignalID", "rrlp.ganssSignalID", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_15", HFILL }}, + { &hf_rrlp_ganss_SgnList, + { "ganss-SgnList", "rrlp.ganss_SgnList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.SeqOfGANSS_SgnElement", HFILL }}, + { &hf_rrlp_SeqOfGANSS_SgnElement_item, + { "Item", "rrlp.SeqOfGANSS_SgnElement_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.GANSS_SgnElement", HFILL }}, + { &hf_rrlp_mpathDet, + { "mpathDet", "rrlp.mpathDet", + FT_UINT32, BASE_DEC, VALS(rrlp_MpathIndic_vals), 0, + "rrlp.MpathIndic", HFILL }}, + { &hf_rrlp_carrierQualityInd, + { "carrierQualityInd", "rrlp.carrierQualityInd", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_3", HFILL }}, + { &hf_rrlp_codePhase1, + { "codePhase", "rrlp.codePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_2097151", HFILL }}, + { &hf_rrlp_integerCodePhase, + { "integerCodePhase", "rrlp.integerCodePhase", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_63", HFILL }}, + { &hf_rrlp_codePhaseRMSError, + { "codePhaseRMSError", "rrlp.codePhaseRMSError", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_63", HFILL }}, + { &hf_rrlp_adr, + { "adr", "rrlp.adr", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.INTEGER_0_33554431", HFILL }}, + { &hf_rrlp_privateExtensionList, + { "privateExtensionList", "rrlp.privateExtensionList", + FT_UINT32, BASE_DEC, NULL, 0, + "rrlp.PrivateExtensionList", HFILL }}, + { &hf_rrlp_pcs_Extensions, + { "pcs-Extensions", "rrlp.pcs_Extensions", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.PCS_Extensions", HFILL }}, + { &hf_rrlp_slr_Arg_PCS_Extensions, + { "slr-Arg-PCS-Extensions", "rrlp.slr_Arg_PCS_Extensions", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.SLR_Arg_PCS_Extensions", HFILL }}, + { &hf_rrlp_PrivateExtensionList_item, + { "Item", "rrlp.PrivateExtensionList_item", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.PrivateExtension", HFILL }}, + { &hf_rrlp_extId, + { "extId", "rrlp.extId", + FT_OID, BASE_NONE, NULL, 0, + "rrlp.OBJECT_IDENTIFIER", HFILL }}, + { &hf_rrlp_extType, + { "extType", "rrlp.extType", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.T_extType", HFILL }}, + { &hf_rrlp_na_ESRK_Request, + { "na-ESRK-Request", "rrlp.na_ESRK_Request", + FT_NONE, BASE_NONE, NULL, 0, + "rrlp.NULL", HFILL }}, + { &hf_rrlp_GANSSPositioningMethod_gps, + { "gps", "rrlp.gps", + FT_BOOLEAN, 8, NULL, 0x80, + "", HFILL }}, + { &hf_rrlp_GANSSPositioningMethod_galileo, + { "galileo", "rrlp.galileo", + FT_BOOLEAN, 8, NULL, 0x40, + "", HFILL }}, + { &hf_rrlp_PositionData_e_otd, + { "e-otd", "rrlp.e-otd", + FT_BOOLEAN, 8, NULL, 0x80, + "", HFILL }}, + { &hf_rrlp_PositionData_gps, + { "gps", "rrlp.gps", + FT_BOOLEAN, 8, NULL, 0x40, + "", HFILL }}, + { &hf_rrlp_PositionData_galileo, + { "galileo", "rrlp.galileo", + FT_BOOLEAN, 8, NULL, 0x20, + "", HFILL }}, /*--- End of included file: packet-rrlp-hfarr.c ---*/ -#line 85 "packet-rrlp-template.c" +#line 83 "packet-rrlp-template.c" }; /* List of subtrees */ @@ -4223,9 +6471,70 @@ void proto_register_rrlp(void) { &ett_rrlp_Rel5_MsrPosition_Req_Extension, &ett_rrlp_Rel5_AssistanceData_Extension, &ett_rrlp_Rel_5_ProtocolError_Extension, + &ett_rrlp_Rel7_MsrPosition_Req_Extension, + &ett_rrlp_GANSSPositioningMethod, + &ett_rrlp_GANSS_AssistData, + &ett_rrlp_GANSS_ControlHeader, + &ett_rrlp_GANSSCommonAssistData, + &ett_rrlp_SeqOfGANSSGenericAssistDataElement, + &ett_rrlp_GANSSGenericAssistDataElement, + &ett_rrlp_GANSSReferenceTime, + &ett_rrlp_GANSSRefTimeInfo, + &ett_rrlp_GANSSTOD_GSMTimeAssociation, + &ett_rrlp_GANSSRefLocation, + &ett_rrlp_GANSSIonosphericModel, + &ett_rrlp_GANSSIonosphereModel, + &ett_rrlp_GANSSIonoStormFlags, + &ett_rrlp_SeqOfGANSSTimeModel, + &ett_rrlp_GANSSTimeModelElement, + &ett_rrlp_GANSSDiffCorrections, + &ett_rrlp_SeqOfSgnTypeElement, + &ett_rrlp_SgnTypeElement, + &ett_rrlp_SeqOfDGANSSSgnElement, + &ett_rrlp_DGANSSSgnElement, + &ett_rrlp_GANSSNavModel, + &ett_rrlp_SeqOfGANSSSatelliteElement, + &ett_rrlp_GANSSSatelliteElement, + &ett_rrlp_GANSSOrbitModel, + &ett_rrlp_NavModel_KeplerianSet, + &ett_rrlp_GANSSClockModel, + &ett_rrlp_SeqOfStandardClockModelElement, + &ett_rrlp_StandardClockModelElement, + &ett_rrlp_GANSSRealTimeIntegrity, + &ett_rrlp_SeqOfBadSignalElement, + &ett_rrlp_BadSignalElement, + &ett_rrlp_GANSSDataBitAssist, + &ett_rrlp_SeqOf_GANSSDataBits, + &ett_rrlp_GANSSRefMeasurementAssist, + &ett_rrlp_SeqOfGANSSRefMeasurementElement, + &ett_rrlp_GANSSRefMeasurementElement, + &ett_rrlp_AdditionalDopplerFields, + &ett_rrlp_GANSSAlmanacModel, + &ett_rrlp_SeqOfGANSSAlmanacElement, + &ett_rrlp_GANSSAlmanacElement, + &ett_rrlp_Almanac_KeplerianSet, + &ett_rrlp_GANSSUTCModel, + &ett_rrlp_Rel_7_MsrPosition_Rsp_Extension, + &ett_rrlp_GANSSLocationInfo, + &ett_rrlp_PositionData, + &ett_rrlp_ReferenceFrame, + &ett_rrlp_GANSSMeasureInfo, + &ett_rrlp_SeqOfGANSS_MsrSetElement, + &ett_rrlp_GANSS_MsrSetElement, + &ett_rrlp_SeqOfGANSS_SgnTypeElement, + &ett_rrlp_GANSS_SgnTypeElement, + &ett_rrlp_SeqOfGANSS_SgnElement, + &ett_rrlp_GANSS_SgnElement, + &ett_rrlp_Rel7_AssistanceData_Extension, + &ett_rrlp_ExtensionContainer, + &ett_rrlp_SLR_ArgExtensionContainer, + &ett_rrlp_PrivateExtensionList, + &ett_rrlp_PrivateExtension, + &ett_rrlp_PCS_Extensions, + &ett_rrlp_SLR_Arg_PCS_Extensions, /*--- End of included file: packet-rrlp-ettarr.c ---*/ -#line 91 "packet-rrlp-template.c" +#line 89 "packet-rrlp-template.c" }; diff --git a/epan/dissectors/packet-rrlp.h b/epan/dissectors/packet-rrlp.h deleted file mode 100644 index e619485ebf..0000000000 --- a/epan/dissectors/packet-rrlp.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Do not modify this file. */ -/* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-rrlp.h */ -/* ../../tools/asn2wrs.py -u -e -p rrlp -c rrlp.cnf -s packet-rrlp-template rrlp.asn */ - -/* Input file: packet-rrlp-template.h */ - -#line 1 "packet-rrlp-template.h" -/* packet-rrlp.h - * Routines for 3GPP Radio Resource LCS Protocol (RRLP) packet dissection - * Copyright 2006, Anders Broman <anders.broman@ericsson.com> - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs <gerald@wireshark.org> - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef PACKET_RRLP_H -#define PACKET_RRLP_H - - - -/* #include "packet-rrlp-exp.h" */ - -#endif /* PACKET_RRLP_H */ - - |