RRLP updated to 3GPP TS 44.031 V7.4.0 (2007-03)
authorkukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 18 May 2007 12:53:55 +0000 (12:53 +0000)
committerkukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 18 May 2007 12:53:55 +0000 (12:53 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@21825 f5534014-38df-0310-8fa8-9805f1628bb7

14 files changed:
asn1/Makefile.am
asn1/gsmmap/MAP-ExtensionDataTypes.asn [new file with mode: 0644]
asn1/gsmmap/MAP-LCS-DataTypes.asn [new file with mode: 0644]
asn1/rrlp/Makefile
asn1/rrlp/Makefile.nmake
asn1/rrlp/RRLP-Components.asn [new file with mode: 0644]
asn1/rrlp/RRLP-Messages.asn [new file with mode: 0644]
asn1/rrlp/packet-rrlp-template.c
asn1/rrlp/packet-rrlp-template.h [deleted file]
asn1/rrlp/rrlp.asn [deleted file]
asn1/rrlp/rrlp.cnf
epan/dissectors/Makefile.common
epan/dissectors/packet-rrlp.c
epan/dissectors/packet-rrlp.h [deleted file]

index af7c17188740ec7d3edf28a79a12a7a97a3acc33..3b6de9c4293a1d7bf914ad0b9c5d674cf282c1ef 100644 (file)
@@ -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 (file)
index 0000000..de581b0
--- /dev/null
@@ -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 (file)
index 0000000..d4a5809
--- /dev/null
@@ -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
index 7ec094eaebf50ee57b609c1f1c19e89b8254968d..71d5c007156502b4909a050d5be42ec5037d421d 100644 (file)
@@ -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)
index 4b880bbf1af26042774e2ed1fe0d894b04f3060e..5c4c1ac2009db0523ed838c0da994bc18e505716 100644 (file)
@@ -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 (file)
index 0000000..83f7ff4
--- /dev/null
@@ -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 (file)
index 0000000..c68a357
--- /dev/null
@@ -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
index 48e1d40b477d4a633fb01f7bc34b82d1eaf9f6ae..bccbf703fa3df5c673e1c96cdc57a0d28c041a76 100644 (file)
@@ -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 (file)
index 5c34608..0000000
+++ /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 (file)
index 0379f80..0000000
+++ /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
index 94c0a9fc21aa6f9278788de85d80edd41ecc963f..e63cadde8677c1b39ab0c90182ef6d3b0d5b0ed7 100644 (file)
@@ -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
index 985fc5eb7781eccba9ff173dcc6c98b53b49e64e..8f906f6a5b87669194118fa8de439b72633cfdac 100644 (file)
@@ -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    \
index dfebdf9f6a3001b0efd693273d42226fe63d2fe2..bb39e4809cd212876c0b5c353ddf063ca10fb96c 100644 (file)
@@ -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"
 
 
 
@@ -458,35 +692,6 @@ static gint ett_rrlp_Rel_5_ProtocolError_Extension = -1;
 #line 1 "packet-rrlp-fn.c"
 
 
-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, &parameter_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,
@@ -661,6 +866,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, &parameter_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);
@@ -1776,6 +2000,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,
@@ -1983,22 +2282,16 @@ dissect_rrlp_Rel5_MsrPosition_Req_Extension(tvbuff_t *tvb _U_, int offset _U_, a
 }
 
 
-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 },
-  { &hf_rrlp_msrAssistData  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rrlp_MsrAssistData },
-  { &hf_rrlp_systemInfoAssistData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rrlp_SystemInfoAssistData },
-  { &hf_rrlp_gps_AssistData , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rrlp_GPS_AssistData },
-  { &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 },
-  { NULL, 0, 0, NULL }
+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_MsrPosition_Req(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_MsrPosition_Req, MsrPosition_Req_sequence);
+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;
 }
@@ -2006,9 +2299,9 @@ dissect_rrlp_MsrPosition_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_rrlp_INTEGER_2_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                              2U, 3U, NULL, FALSE);
+                                              0U, 8191U, NULL, FALSE);
 
   return offset;
 }
@@ -2016,87 +2309,94 @@ dissect_rrlp_INTEGER_2_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
 
 
 static int
-dissect_rrlp_INTEGER_1_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                              1U, 3U, NULL, FALSE);
+                                              0U, 86399U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const value_string rrlp_ReferenceRelation_vals[] = {
-  {   0, "secondBTSThirdSet" },
-  {   1, "secondBTSSecondSet" },
-  {   2, "firstBTSFirstSet" },
-  { 0, NULL }
-};
-
 
 static int
-dissect_rrlp_ReferenceRelation(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,
-                                     3, NULL, FALSE, 0, NULL);
+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 MultipleSets_sequence[] = {
-  { &hf_rrlp_nbrOfSets      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_2_3 },
-  { &hf_rrlp_nbrOfReferenceBTSs, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_1_3 },
-  { &hf_rrlp_referenceRelation, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_rrlp_ReferenceRelation },
+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_MultipleSets(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_MultipleSets, MultipleSets_sequence);
+                                   ett_rrlp_GANSSRefTimeInfo, GANSSRefTimeInfo_sequence);
 
   return offset;
 }
 
 
-static const per_sequence_t BSICAndCarrier_sequence[] = {
-  { &hf_rrlp_carrier        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_BCCHCarrier },
-  { &hf_rrlp_bsic           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_BSIC },
-  { NULL, 0, 0, NULL }
-};
 
 static int
-dissect_rrlp_BSICAndCarrier(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_BSICAndCarrier, BSICAndCarrier_sequence);
+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_CellID(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, 65535U, NULL, FALSE);
+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_RequestIndex(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, 16U, NULL, FALSE);
+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_SystemInfoIndex(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, 32U, NULL, FALSE);
+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;
 }
@@ -2104,80 +2404,74 @@ dissect_rrlp_SystemInfoIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_rrlp_LAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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, 65535U, NULL, FALSE);
+                                              0U, 4095U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t CellIDAndLAC_sequence[] = {
-  { &hf_rrlp_referenceLAC   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_LAC },
-  { &hf_rrlp_referenceCI    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_CellID },
+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_CellIDAndLAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_CellIDAndLAC, CellIDAndLAC_sequence);
+                                   ett_rrlp_GANSSIonosphereModel, GANSSIonosphereModel_sequence);
 
   return offset;
 }
 
 
-static const value_string rrlp_ReferenceIdentityType_vals[] = {
-  {   0, "bsicAndCarrier" },
-  {   1, "ci" },
-  {   2, "requestIndex" },
-  {   3, "systemInfoIndex" },
-  {   4, "ciAndLAC" },
-  { 0, NULL }
-};
-
-static const per_choice_t ReferenceIdentityType_choice[] = {
-  {   0, &hf_rrlp_bsicAndCarrier , ASN1_NO_EXTENSIONS     , dissect_rrlp_BSICAndCarrier },
-  {   1, &hf_rrlp_ci             , ASN1_NO_EXTENSIONS     , dissect_rrlp_CellID },
-  {   2, &hf_rrlp_requestIndex   , ASN1_NO_EXTENSIONS     , dissect_rrlp_RequestIndex },
-  {   3, &hf_rrlp_systemInfoIndex, ASN1_NO_EXTENSIONS     , dissect_rrlp_SystemInfoIndex },
-  {   4, &hf_rrlp_ciAndLAC       , ASN1_NO_EXTENSIONS     , dissect_rrlp_CellIDAndLAC },
-  { 0, NULL, 0, NULL }
+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_ReferenceIdentityType(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_ReferenceIdentityType, ReferenceIdentityType_choice,
-                                 NULL);
+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 SeqOfReferenceIdentityType_sequence_of[1] = {
-  { &hf_rrlp_SeqOfReferenceIdentityType_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_ReferenceIdentityType },
+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_SeqOfReferenceIdentityType(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_SeqOfReferenceIdentityType, SeqOfReferenceIdentityType_sequence_of,
-                                                  1, 3);
+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 ReferenceIdentity_sequence[] = {
-  { &hf_rrlp_refBTSList     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfReferenceIdentityType },
+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_ReferenceIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_ReferenceIdentity, ReferenceIdentity_sequence);
+                                   ett_rrlp_GANSSCommonAssistData, GANSSCommonAssistData_sequence);
 
   return offset;
 }
@@ -2185,9 +2479,9 @@ dissect_rrlp_ReferenceIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
 
 
 static int
-dissect_rrlp_INTEGER_0_42431(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                              0U, 42431U, NULL, FALSE);
+                                              -2147483648, 2147483647U, NULL, FALSE);
 
   return offset;
 }
@@ -2195,9 +2489,9 @@ dissect_rrlp_INTEGER_0_42431(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_rrlp_ModuloTimeSlot(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                              0U, 3U, NULL, FALSE);
+                                              -8388608, 8388607U, NULL, FALSE);
 
   return offset;
 }
@@ -2205,34 +2499,42 @@ dissect_rrlp_ModuloTimeSlot(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
 
 
 static int
-dissect_rrlp_RefQuality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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,
-                                              0U, 31U, NULL, FALSE);
+                                              -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_NumOfMeasurements(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);
+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 TOA_MeasurementsOfRef_sequence[] = {
-  { &hf_rrlp_refQuality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_RefQuality },
-  { &hf_rrlp_numOfMeasurements, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_NumOfMeasurements },
-  { NULL, 0, 0, NULL }
+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_TOA_MeasurementsOfRef(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_TOA_MeasurementsOfRef, TOA_MeasurementsOfRef_sequence);
+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;
 }
@@ -2240,7 +2542,17 @@ dissect_rrlp_TOA_MeasurementsOfRef(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
 
 
 static int
-dissect_rrlp_StdResolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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);
 
@@ -2250,36 +2562,1019 @@ dissect_rrlp_StdResolution(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _
 
 
 static int
-dissect_rrlp_INTEGER_0_960(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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, 960U, NULL, FALSE);
+                                              0U, 63U, NULL, FALSE);
 
   return offset;
 }
 
 
-static const per_sequence_t MultiFrameCarrier_sequence[] = {
-  { &hf_rrlp_bcchCarrier    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_BCCHCarrier },
-  { &hf_rrlp_multiFrameOffset, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_MultiFrameOffset },
+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_MultiFrameCarrier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+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_MultiFrameCarrier, MultiFrameCarrier_sequence);
+                                   ett_rrlp_DGANSSSgnElement, DGANSSSgnElement_sequence);
 
   return offset;
 }
 
 
-static const value_string rrlp_NeighborIdentity_vals[] = {
-  {   0, "bsicAndCarrier" },
-  {   1, "ci" },
-  {   2, "multiFrameCarrier" },
-  {   3, "requestIndex" },
-  {   4, "systemInfoIndex" },
-  {   5, "ciAndLAC" },
+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 },
+  { &hf_rrlp_msrAssistData  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rrlp_MsrAssistData },
+  { &hf_rrlp_systemInfoAssistData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rrlp_SystemInfoAssistData },
+  { &hf_rrlp_gps_AssistData , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rrlp_GPS_AssistData },
+  { &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 }
+};
+
+static int
+dissect_rrlp_MsrPosition_Req(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_MsrPosition_Req, MsrPosition_Req_sequence);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_2_3(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,
+                                              2U, 3U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_1_3(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, 3U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const value_string rrlp_ReferenceRelation_vals[] = {
+  {   0, "secondBTSThirdSet" },
+  {   1, "secondBTSSecondSet" },
+  {   2, "firstBTSFirstSet" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_ReferenceRelation(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,
+                                     3, NULL, FALSE, 0, NULL);
+
+  return offset;
+}
+
+
+static const per_sequence_t MultipleSets_sequence[] = {
+  { &hf_rrlp_nbrOfSets      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_2_3 },
+  { &hf_rrlp_nbrOfReferenceBTSs, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_INTEGER_1_3 },
+  { &hf_rrlp_referenceRelation, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_rrlp_ReferenceRelation },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MultipleSets(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_MultipleSets, MultipleSets_sequence);
+
+  return offset;
+}
+
+
+static const per_sequence_t BSICAndCarrier_sequence[] = {
+  { &hf_rrlp_carrier        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_BCCHCarrier },
+  { &hf_rrlp_bsic           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_BSIC },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_BSICAndCarrier(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_BSICAndCarrier, BSICAndCarrier_sequence);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_CellID(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, 65535U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_RequestIndex(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, 16U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_SystemInfoIndex(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, 32U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_LAC(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, 65535U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t CellIDAndLAC_sequence[] = {
+  { &hf_rrlp_referenceLAC   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_LAC },
+  { &hf_rrlp_referenceCI    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_CellID },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_CellIDAndLAC(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_CellIDAndLAC, CellIDAndLAC_sequence);
+
+  return offset;
+}
+
+
+static const value_string rrlp_ReferenceIdentityType_vals[] = {
+  {   0, "bsicAndCarrier" },
+  {   1, "ci" },
+  {   2, "requestIndex" },
+  {   3, "systemInfoIndex" },
+  {   4, "ciAndLAC" },
+  { 0, NULL }
+};
+
+static const per_choice_t ReferenceIdentityType_choice[] = {
+  {   0, &hf_rrlp_bsicAndCarrier , ASN1_NO_EXTENSIONS     , dissect_rrlp_BSICAndCarrier },
+  {   1, &hf_rrlp_ci             , ASN1_NO_EXTENSIONS     , dissect_rrlp_CellID },
+  {   2, &hf_rrlp_requestIndex   , ASN1_NO_EXTENSIONS     , dissect_rrlp_RequestIndex },
+  {   3, &hf_rrlp_systemInfoIndex, ASN1_NO_EXTENSIONS     , dissect_rrlp_SystemInfoIndex },
+  {   4, &hf_rrlp_ciAndLAC       , ASN1_NO_EXTENSIONS     , dissect_rrlp_CellIDAndLAC },
+  { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceIdentityType(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_ReferenceIdentityType, ReferenceIdentityType_choice,
+                                 NULL);
+
+  return offset;
+}
+
+
+static const per_sequence_t SeqOfReferenceIdentityType_sequence_of[1] = {
+  { &hf_rrlp_SeqOfReferenceIdentityType_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_ReferenceIdentityType },
+};
+
+static int
+dissect_rrlp_SeqOfReferenceIdentityType(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_SeqOfReferenceIdentityType, SeqOfReferenceIdentityType_sequence_of,
+                                                  1, 3);
+
+  return offset;
+}
+
+
+static const per_sequence_t ReferenceIdentity_sequence[] = {
+  { &hf_rrlp_refBTSList     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_SeqOfReferenceIdentityType },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceIdentity(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_ReferenceIdentity, ReferenceIdentity_sequence);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_42431(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, 42431U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_ModuloTimeSlot(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_RefQuality(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, 31U, NULL, FALSE);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_NumOfMeasurements(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);
+
+  return offset;
+}
+
+
+static const per_sequence_t TOA_MeasurementsOfRef_sequence[] = {
+  { &hf_rrlp_refQuality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_RefQuality },
+  { &hf_rrlp_numOfMeasurements, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_NumOfMeasurements },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_TOA_MeasurementsOfRef(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_TOA_MeasurementsOfRef, TOA_MeasurementsOfRef_sequence);
+
+  return offset;
+}
+
+
+
+static int
+dissect_rrlp_StdResolution(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_INTEGER_0_960(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, 960U, NULL, FALSE);
+
+  return offset;
+}
+
+
+static const per_sequence_t MultiFrameCarrier_sequence[] = {
+  { &hf_rrlp_bcchCarrier    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_BCCHCarrier },
+  { &hf_rrlp_multiFrameOffset, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rrlp_MultiFrameOffset },
+  { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MultiFrameCarrier(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_MultiFrameCarrier, MultiFrameCarrier_sequence);
+
+  return offset;
+}
+
+
+static const value_string rrlp_NeighborIdentity_vals[] = {
+  {   0, "bsicAndCarrier" },
+  {   1, "ci" },
+  {   2, "multiFrameCarrier" },
+  {   3, "requestIndex" },
+  {   4, "systemInfoIndex" },
+  {   5, "ciAndLAC" },
   { 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 }
 };
 
@@ -2922,7 +4442,23 @@ static const per_sequence_t Rel5_AssistanceData_Extension_sequence[] = {
 static int
 dissect_rrlp_Rel5_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_Rel5_AssistanceData_Extension, Rel5_AssistanceData_Extension_sequence);
+                                   ett_rrlp_Rel5_AssistanceData_Extension, Rel5_AssistanceData_Extension_sequence);
+
+  return offset;
+}
+
+
+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;
 }
@@ -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 (file)
index e619485..0000000
+++ /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 */
-
-