aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-05-10 16:51:41 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-05-10 16:51:41 +0000
commit30fc91887cd7d849c1d51626fbce941605f0b2c6 (patch)
treea9e1b92799857028a2349c2b3bb54f00dcc173d1
parent056f65bcbec0553438acc0d44ea8a3e9760e43a0 (diff)
downloadwireshark-30fc91887cd7d849c1d51626fbce941605f0b2c6.tar.gz
wireshark-30fc91887cd7d849c1d51626fbce941605f0b2c6.tar.bz2
wireshark-30fc91887cd7d849c1d51626fbce941605f0b2c6.zip
Add 3GPP Radio Resource LCS Protocol (RRLP) packet dissector
svn path=/trunk/; revision=18124
-rw-r--r--asn1/Makefile.nmake10
-rw-r--r--asn1/rrlp/Makefile17
-rw-r--r--asn1/rrlp/Makefile.nmake42
-rw-r--r--asn1/rrlp/packet-rrlp-template.c122
-rw-r--r--asn1/rrlp/packet-rrlp-template.h35
-rw-r--r--asn1/rrlp/rrlp.asn1031
-rw-r--r--asn1/rrlp/rrlp.cnf19
-rw-r--r--epan/dissectors/Makefile.common2
-rw-r--r--epan/dissectors/packet-rrlp.c5015
-rw-r--r--epan/dissectors/packet-rrlp.h43
10 files changed, 6334 insertions, 2 deletions
diff --git a/asn1/Makefile.nmake b/asn1/Makefile.nmake
index 55d3a98d8b..42582bbf2d 100644
--- a/asn1/Makefile.nmake
+++ b/asn1/Makefile.nmake
@@ -235,7 +235,7 @@ distclean: clean
maintainer-clean: distclean
-ber: \
+ber: \
acse \
acp133 \
camel \
@@ -285,13 +285,14 @@ ber: \
x509if \
x509sat
-per: \
+per: \
h225 \
h235 \
h245 \
h450 \
ranap \
rnsap \
+ rrlp \
ulp
acse::
@@ -503,6 +504,11 @@ ros::
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
cd ..
+rrlp::
+ cd rrlp
+ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
+ cd ..
+
rtse::
cd rtse
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
diff --git a/asn1/rrlp/Makefile b/asn1/rrlp/Makefile
new file mode 100644
index 0000000000..464eedc872
--- /dev/null
+++ b/asn1/rrlp/Makefile
@@ -0,0 +1,17 @@
+# $Id$
+
+DISSECTOR_FILES=packet-rrlp.c packet-rrlp.h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py rrlp.asn packet-rrlp-template.c packet-rrlp-template.h rrlp.cnf
+ python ../../tools/asn2eth.py -X -e -p rrlp -c rrlp.cnf -s packet-rrlp-template rrlp.asn
+
+clean:
+ rm -f parsetab.py parsetab.pyc $(DISSECTOR_FILES)
+
+copy_files: generate_dissector
+ cp $(DISSECTOR_FILES) ../../epan/dissectors
+
diff --git a/asn1/rrlp/Makefile.nmake b/asn1/rrlp/Makefile.nmake
new file mode 100644
index 0000000000..3ed03295c1
--- /dev/null
+++ b/asn1/rrlp/Makefile.nmake
@@ -0,0 +1,42 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=rrlp
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py rrlp.asn packet-rrlp-template.c packet-rrlp-template.h rrlp.cnf
+!IFDEF PYTHON
+ $(PYTHON) ../../tools/asn2eth.py -X -e -p $(PROTOCOL_NAME) -c rrlp.cnf -s packet-rrlp-template rrlp.asn
+!ELSE
+ @echo Error: You need Python to use asn2eth.py
+ @exit 1
+!ENDIF
+
+clean:
+ rm -f parsetab.py $(DISSECTOR_FILES)
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while
+# the generated stuff has "\n".
+
+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
+
+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/packet-rrlp-template.c b/asn1/rrlp/packet-rrlp-template.c
new file mode 100644
index 0000000000..0ad8710bfe
--- /dev/null
+++ b/asn1/rrlp/packet-rrlp-template.c
@@ -0,0 +1,122 @@
+/* packet-rrlp.c
+ * Routines for 3GPP Radio Resource LCS Protocol (RRLP) packet dissection
+ * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * 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.
+ *
+ * Ref 3GPP TS 44.031 version 6.8.0 Release 6
+ * http://www.3gpp.org
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-rrlp.h"
+
+#include "packet-ber.h"
+#include "packet-per.h"
+#include "packet-gsm_map.h"
+
+#define PNAME "Radio Resource LCS Protocol (RRLP)"
+#define PSNAME "RRLP"
+#define PFNAME "rrlp"
+
+static dissector_handle_t rrlp_handle=NULL;
+
+
+/* Initialize the protocol and registered fields */
+static int proto_rrlp = -1;
+
+
+#include "packet-rrlp-hf.c"
+
+/* Initialize the subtree pointers */
+static gint ett_rrlp = -1;
+#include "packet-rrlp-ett.c"
+
+/* Include constants */
+#include "packet-rrlp-val.h"
+
+/* If trying to use module import the "dissect_gsm_map_ExtensionContainer" will be wrongly constructed
+ * presumably because it assumes it will be PER encoded
+ */
+static int
+dissect_MAP_ExtensionDataTypes_ExtensionContainer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index){
+
+ return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_index);
+}
+
+static int
+dissect_MAP_LCS_DataTypes_Ext_GeographicalInformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index){
+
+ return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_index);
+}
+
+#include "packet-rrlp-fn.c"
+
+
+/*--- proto_register_rrlp -------------------------------------------*/
+void proto_register_rrlp(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+#include "packet-rrlp-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_rrlp,
+#include "packet-rrlp-ettarr.c"
+ };
+
+
+ /* Register protocol */
+ proto_rrlp = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ register_dissector("rrlp", dissect_PDU_PDU, proto_rrlp);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_rrlp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+
+}
+
+
+/*--- proto_reg_handoff_rrlp ---------------------------------------*/
+void
+proto_reg_handoff_rrlp(void)
+{
+
+ rrlp_handle = create_dissector_handle(dissect_PDU_PDU, proto_rrlp);
+
+
+}
+
+
diff --git a/asn1/rrlp/packet-rrlp-template.h b/asn1/rrlp/packet-rrlp-template.h
new file mode 100644
index 0000000000..a5016d9877
--- /dev/null
+++ b/asn1/rrlp/packet-rrlp-template.h
@@ -0,0 +1,35 @@
+/* packet-rrlp.h
+ * Routines for 3GPP Radio Resource LCS Protocol (RRLP) packet dissection
+ * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * 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
new file mode 100644
index 0000000000..31bdda3691
--- /dev/null
+++ b/asn1/rrlp/rrlp.asn
@@ -0,0 +1,1031 @@
+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)}
+ ;
+
+PDU ::= SEQUENCE {
+ referenceNumber INTEGER (0..7),
+ component RRLP-Component
+}
+
+RRLP-Component ::= CHOICE {
+ msrPositionReq MsrPosition-Req,
+ msrPositionRsp MsrPosition-Rsp,
+ assistanceData AssistanceData,
+ assistanceDataAck NULL,
+ protocolError ProtocolError,
+ ...
+}
+
+--RRLP-Components
+-- { RRLP-Components }
+-- ETSI TS 144 031 V6.8.0
+--DEFINITIONS AUTOMATIC TAGS ::=
+
+--BEGIN
+
+--IMPORTS
+
+-- Ext-GeographicalInformation
+--FROM
+-- MAP-LCS-DataTypes {
+-- ccitt identified-organization (4) etsi (0) mobileDomain (0)
+-- gsm-Network (1) modules (3) map-LCS-DataTypes (25) version5 (5)}
+
+-- ExtensionContainer
+--FROM MAP-ExtensionDataTypes {
+-- ccitt identified-organization (4) etsi (0) mobileDomain (0)
+-- gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version4 (4)}
+-- ;
+-- Add here other ASN.1 definitions presented below
+-- in chapters 4 and 5.
+
+-- add this definition to RRLP-Components module
+-- Measurement Position request component
+
+MsrPosition-Req ::= SEQUENCE {
+ positionInstruct PositionInstruct,
+ referenceAssistData ReferenceAssistData OPTIONAL,
+ msrAssistData MsrAssistData OPTIONAL,
+ systemInfoAssistData SystemInfoAssistData OPTIONAL,
+ gps-AssistData GPS-AssistData OPTIONAL,
+ extensionContainer ExtensionContainer OPTIONAL,
+ ...,
+-- Release 98 extension element
+ rel98-MsrPosition-Req-extension Rel98-MsrPosition-Req-Extension OPTIONAL,
+-- Release 5 extension element
+ rel5-MsrPosition-Req-extension Rel5-MsrPosition-Req-Extension OPTIONAL
+}
+
+-- add this defintion to RRLP-Components module
+-- Measurement Position response component
+
+MsrPosition-Rsp ::= SEQUENCE {
+ multipleSets MultipleSets OPTIONAL,
+ referenceIdentity ReferenceIdentity OPTIONAL,
+ otd-MeasureInfo OTD-MeasureInfo OPTIONAL,
+ locationInfo LocationInfo OPTIONAL,
+ gps-MeasureInfo GPS-MeasureInfo OPTIONAL,
+ locationError LocationError OPTIONAL,
+ extensionContainer ExtensionContainer OPTIONAL,
+ ...,
+-- Release extension here
+ rel-98-MsrPosition-Rsp-Extension Rel-98-MsrPosition-Rsp-Extension OPTIONAL,
+ rel-5-MsrPosition-Rsp-Extension Rel-5-MsrPosition-Rsp-Extension OPTIONAL
+-- rel-5-MsrPosition-Rsp-Extension and other possible future extensions
+-- are the only information elements that may be included in the 2nd
+-- MsrPosition-Rsp component when RRLP pseudo-segmentation is used
+}
+
+-- add this defintion to RRLP-Components module
+-- Assistance Data component
+
+AssistanceData ::= SEQUENCE {
+ referenceAssistData ReferenceAssistData OPTIONAL,
+ msrAssistData MsrAssistData OPTIONAL,
+ systemInfoAssistData SystemInfoAssistData OPTIONAL,
+ gps-AssistData GPS-AssistData OPTIONAL,
+ moreAssDataToBeSent MoreAssDataToBeSent OPTIONAL, -- If not present, interpret as only
+-- Assistance Data component used to
+-- deliver entire set of assistance
+-- data.
+ extensionContainer ExtensionContainer OPTIONAL,
+ ...,
+-- Release extension here
+ rel98-AssistanceData-Extension Rel98-AssistanceData-Extension OPTIONAL,
+ rel5-AssistanceData-Extension Rel5-AssistanceData-Extension OPTIONAL
+}
+
+-- add this defintion to RRLP-Components module
+-- Protocol Error component
+ ProtocolError ::= SEQUENCE {
+ errorCause ErrorCodes,
+ extensionContainer ExtensionContainer OPTIONAL,
+ ...,
+-- Release extensions here
+ rel-5-ProtocolError-Extension Rel-5-ProtocolError-Extension OPTIONAL
+}
+
+PositionInstruct ::= SEQUENCE {
+-- Method type
+ methodType MethodType,
+ positionMethod PositionMethod,
+ measureResponseTime MeasureResponseTime,
+ useMultipleSets UseMultipleSets,
+ environmentCharacter EnvironmentCharacter OPTIONAL
+}
+
+--
+MethodType ::= CHOICE {
+ msAssisted AccuracyOpt, -- accuracy is optional
+ msBased Accuracy, -- accuracy is mandatory
+ msBasedPref Accuracy, -- accuracy is mandatory
+ msAssistedPref Accuracy -- accuracy is mandatory
+}
+
+-- Accuracy of the location estimation
+AccuracyOpt ::= SEQUENCE {
+ accuracy Accuracy OPTIONAL
+}
+
+-- The values of this field are defined in 3GPP TS 23.032 (Uncertainty code)
+Accuracy ::= INTEGER (0..127)
+
+-- Position Method
+PositionMethod ::= ENUMERATED {
+ eotd (0),
+ gps (1),
+ gpsOrEOTD (2)
+}
+
+-- Measurement request response time
+MeasureResponseTime ::= INTEGER (0..7)
+
+-- useMultiple Sets, FFS!
+UseMultipleSets ::= ENUMERATED {
+ multipleSets (0), -- multiple sets are allowed
+ oneSet (1) -- sending of multiple is not allowed
+}
+
+-- Environment characterization
+EnvironmentCharacter ::= ENUMERATED {
+ badArea (0), -- bad urban or suburban, heavy multipath and NLOS
+ notBadArea (1), -- light multipath and NLOS
+ mixedArea (2), -- not defined or mixed environment
+ ...
+}
+-- E-OTD reference BTS for Assitance data IE
+ReferenceAssistData ::= SEQUENCE {
+ bcchCarrier BCCHCarrier, -- BCCH carrier
+ bsic BSIC, -- BSIC
+ timeSlotScheme TimeSlotScheme, -- Timeslot scheme
+ btsPosition BTSPosition OPTIONAL
+}
+
+-- ellipsoid point and
+-- ellipsoid point with altitude and uncertainty ellipsoid shapes are supported
+BTSPosition ::= Ext-GeographicalInformation
+
+-- RF channel number of BCCH
+BCCHCarrier ::= INTEGER (0..1023)
+
+-- Base station Identity Code
+BSIC ::= INTEGER (0..63)
+
+-- Timeslot scheme
+TimeSlotScheme ::= ENUMERATED {
+ equalLength (0),
+ variousLength (1)
+}
+
+-- Time slot (modulo)
+ModuloTimeSlot ::= INTEGER (0..3)
+
+-- E-OTD measurement assistance data IE
+-- The total number of neighbors in this element (MsrAssistData)
+-- and in SystemInfoAssistData element (presented neighbors
+-- can be at a maximum 15!)
+MsrAssistData ::= SEQUENCE {
+ msrAssistList SeqOfMsrAssistBTS
+}
+
+SeqOfMsrAssistBTS ::= SEQUENCE (SIZE(1..15)) OF MsrAssistBTS
+
+MsrAssistBTS ::= SEQUENCE {
+ bcchCarrier BCCHCarrier, -- BCCH carrier
+ bsic BSIC, -- BSIC
+ multiFrameOffset MultiFrameOffset, -- multiframe offset
+ timeSlotScheme TimeSlotScheme, -- Timeslot scheme
+ roughRTD RoughRTD, -- rough RTD value
+-- Location Calculation Assistance data is moved here
+ calcAssistanceBTS CalcAssistanceBTS OPTIONAL
+}
+-- Multiframe offset
+MultiFrameOffset ::= INTEGER (0..51)
+-- The Multiframe Offset value 51 shall not be encoded by the transmitting entity and
+-- shall be treated by the receiving entity as 0.
+-- Rough RTD value between one base station and reference BTS
+
+RoughRTD ::= INTEGER (0..1250)
+-- The RoughRTD value 1250 shall not be encoded by the transmitting entity and shall
+-- be treated by the receiving entity as 0.
+-- E-OTD Measurement assistance data for system information List IE
+-- The total number of base stations in this element (SystemInfoAssistData
+-- presented neighbors) and in MsrAssistData element can be at a maximum 15.
+
+SystemInfoAssistData ::= SEQUENCE {
+ systemInfoAssistList SeqOfSystemInfoAssistBTS
+}
+
+SeqOfSystemInfoAssistBTS::= SEQUENCE (SIZE(1..32)) OF SystemInfoAssistBTS
+-- whether n.th is present or not ?
+
+SystemInfoAssistBTS ::= CHOICE {
+ notPresent NULL,
+ present AssistBTSData
+}
+
+-- Actual assistance data for system information base station
+AssistBTSData ::= SEQUENCE {
+ bsic BSIC, -- BSIC
+ multiFrameOffset MultiFrameOffset, -- multiframe offset
+ timeSlotScheme TimeSlotScheme, -- Timeslot scheme
+ roughRTD RoughRTD, -- rough RTD value
+-- Location Calculation Assistance data
+ calcAssistanceBTS CalcAssistanceBTS OPTIONAL
+}
+
+-- E-OTD Location calculation assistance data,
+-- CalcAssistanceBTS element is optional not subfields
+CalcAssistanceBTS ::= SEQUENCE {
+ fineRTD FineRTD, -- fine RTD value between base stations
+ referenceWGS84 ReferenceWGS84 -- reference coordinates
+}
+
+-- Coordinates of neighbour BTS, WGS-84 ellipsoid
+ReferenceWGS84 ::= SEQUENCE {
+ relativeNorth RelDistance, -- relative distance (south negative)
+ relativeEast RelDistance, -- relative distance (west negative)
+-- Relative Altitude is not always known
+ relativeAlt RelativeAlt OPTIONAL -- relative altitude
+}
+
+-- Fine RTD value between this BTS and the reference BTS
+FineRTD ::= INTEGER (0..255)
+
+-- Relative north/east distance
+RelDistance ::= INTEGER (-200000..200000)
+
+-- Relative altitude
+
+RelativeAlt ::= INTEGER (-4000..4000)
+-- Measure position response IEs
+-- Reference Identity
+-- Multiple sets
+
+MultipleSets ::= SEQUENCE {
+ -- number of reference sets
+ nbrOfSets INTEGER (2..3),
+ -- This field actually tells the number of reference BTSs
+ nbrOfReferenceBTSs INTEGER (1..3),
+ -- This field is conditional and included optionally only if
+ -- nbrOfSets is 3 and number of reference BTSs is 2.
+ referenceRelation ReferenceRelation OPTIONAL
+}
+
+-- Relation between refence BTSs and sets
+ReferenceRelation ::= ENUMERATED {
+ secondBTSThirdSet (0), -- 1st BTS related to 1st and 2nd sets
+ secondBTSSecondSet (1), -- 1st BTS related to 1st and 3rd sets
+ firstBTSFirstSet (2) -- 1st BTS related to 1st set
+}
+
+-- Reference BTS Identity, this element contains number of
+-- BTSs told nbrOfReferenceBTSs field in Multiple sets element)
+
+ReferenceIdentity ::= SEQUENCE {
+ -- Reference BTS list
+ refBTSList SeqOfReferenceIdentityType
+}
+SeqOfReferenceIdentityType ::= SEQUENCE (SIZE(1..3)) OF ReferenceIdentityType
+
+-- Cell identity
+ReferenceIdentityType ::= CHOICE {
+ bsicAndCarrier BSICAndCarrier, -- BSIC and Carrier
+ ci CellID, -- Cell ID, LAC not needed
+ requestIndex RequestIndex, -- Index to Requested Neighbor List
+ systemInfoIndex SystemInfoIndex, -- Index to System info list, this type of ref. identity
+ -- shall not be used by the MS unless it has received
+ -- the SystemInfoAssistData from the SMLC for this cell.
+ ciAndLAC CellIDAndLAC -- CI and LAC
+}
+
+BSICAndCarrier ::= SEQUENCE {
+ carrier BCCHCarrier,
+ bsic BSIC
+}
+
+RequestIndex ::= INTEGER (1..16)
+
+SystemInfoIndex ::= INTEGER (1..32)
+
+CellIDAndLAC ::= SEQUENCE {
+ referenceLAC LAC, -- Location area code
+ referenceCI CellID -- Cell identity
+}
+
+CellID ::= INTEGER (0..65535)
+
+LAC ::= INTEGER (0..65535)
+
+-- OTD-MeasureInfo
+
+OTD-MeasureInfo ::= SEQUENCE {
+ -- Measurement info elements, OTD-MsrElement is repeated number of times
+ -- told in nbrOfReferenceBTSs in MultipleSets, default value is 1
+ otdMsrFirstSets OTD-MsrElementFirst,
+ -- if more than one sets are present this element is repeated
+ -- NumberOfSets - 1 (-1 = first set)
+ otdMsrRestSets SeqOfOTD-MsrElementRest OPTIONAL
+}
+
+SeqOfOTD-MsrElementRest ::= SEQUENCE (SIZE(1..2)) OF OTD-MsrElementRest
+
+-- OTD measurent information for 1 set
+OTD-MsrElementFirst ::= SEQUENCE {
+ refFrameNumber INTEGER (0..42431), -- Frame number modulo 42432
+ referenceTimeSlot ModuloTimeSlot,
+ toaMeasurementsOfRef TOA-MeasurementsOfRef OPTIONAL,
+ stdResolution StdResolution,
+ taCorrection INTEGER (0..960) OPTIONAL, -- TA correction
+-- measured neighbors in OTD measurements
+ otd-FirstSetMsrs SeqOfOTD-FirstSetMsrs OPTIONAL
+}
+
+SeqOfOTD-FirstSetMsrs ::= SEQUENCE (SIZE(1..10)) OF OTD-FirstSetMsrs
+
+-- OTD measurent information 2 and 3 sets if exist
+OTD-MsrElementRest ::= SEQUENCE {
+ refFrameNumber INTEGER (0..42431), -- Frame number modulo 42432
+ referenceTimeSlot ModuloTimeSlot,
+ toaMeasurementsOfRef TOA-MeasurementsOfRef OPTIONAL,
+ stdResolution StdResolution,
+ taCorrection INTEGER (0..960) OPTIONAL, -- TA correction
+ -- measured neighbors in OTD measurements
+ otd-MsrsOfOtherSets SeqOfOTD-MsrsOfOtherSets OPTIONAL
+}
+
+SeqOfOTD-MsrsOfOtherSets ::= SEQUENCE (SIZE(1..10)) OF OTD-MsrsOfOtherSets
+
+-- Standard deviation of the TOA measurements from the reference BTS
+TOA-MeasurementsOfRef ::= SEQUENCE {
+ refQuality RefQuality,
+ numOfMeasurements NumOfMeasurements
+}
+
+RefQuality ::= INTEGER (0..31) -- St Dev of TOA of reference as defined in annex
+
+NumOfMeasurements ::= INTEGER (0..7) -- No. of measurements for RefQuality as defined in annex
+
+StdResolution ::= INTEGER (0..3) -- Values of resolution are defined in annex
+
+OTD-FirstSetMsrs ::= OTD-MeasurementWithID
+
+-- Neighbour info in OTD measurements 0-10 times in TD measurement info
+OTD-MsrsOfOtherSets ::= CHOICE {
+ identityNotPresent OTD-Measurement,
+ identityPresent OTD-MeasurementWithID
+}
+
+-- For this OTD measurement identity is same as the identity of BTS
+-- in the first set with same sequence number
+OTD-Measurement ::= SEQUENCE {
+ nborTimeSlot ModuloTimeSlot,
+ eotdQuality EOTDQuality,
+ otdValue OTDValue
+}
+
+-- This measurement contains the BTS identity and measurement
+OTD-MeasurementWithID ::=SEQUENCE {
+ neighborIdentity NeighborIdentity,
+ nborTimeSlot ModuloTimeSlot,
+ eotdQuality EOTDQuality,
+ otdValue OTDValue
+}
+
+EOTDQuality ::= SEQUENCE {
+ nbrOfMeasurements INTEGER (0..7),
+ stdOfEOTD INTEGER (0..31)
+}
+
+NeighborIdentity ::= CHOICE {
+ bsicAndCarrier BSICAndCarrier, -- BSIC and Carrier
+ ci CellID, -- Cell ID, LAC not needed
+ multiFrameCarrier MultiFrameCarrier, -- MultiFrameOffest and BSIC
+ requestIndex RequestIndex, -- Index to Requested Neighbor List
+ systemInfoIndex SystemInfoIndex, -- Index to System info list, this type of neighbour
+ -- identity shall not be used by the MS unless it has
+ -- received the SystemInfoAssistData from the SMLC for
+ -- this cell.
+ ciAndLAC CellIDAndLAC -- CI and LAC
+}
+
+-- Multiframe and carrier
+MultiFrameCarrier ::= SEQUENCE {
+ bcchCarrier BCCHCarrier,
+ multiFrameOffset MultiFrameOffset
+}
+
+-- OTD measurement value for neighbour
+OTDValue ::= INTEGER (0..39999)
+
+-- Location information IE
+LocationInfo ::= SEQUENCE {
+ refFrame INTEGER (0..65535), -- Reference Frame number
+ -- If refFrame is within (42432..65535), it shall be ignored by the receiver
+ -- in that case the MS should provide GPS TOW if available
+ gpsTOW INTEGER (0..14399999) OPTIONAL, -- GPS TOW
+ fixType FixType,
+ -- Note that applicable range for refFrame is 0 - 42431
+ -- Possible shapes carried in posEstimate are
+ -- ellipsoid point,
+ -- ellipsoid point with uncertainty circle
+ -- ellipsoid point with uncertainty ellipse
+ -- ellipsoid point with altitude and uncertainty ellipsoid
+ posEstimate Ext-GeographicalInformation
+}
+
+FixType ::= INTEGER {
+ twoDFix (0),
+ threeDFix (1)
+} (0..1)
+
+-- GPS-Measurement information
+GPS-MeasureInfo ::= SEQUENCE {
+ -- Measurement info elements
+ -- user has to make sure that in this element is number of elements
+ -- defined in reference BTS identity
+ gpsMsrSetList SeqOfGPS-MsrSetElement
+}
+
+SeqOfGPS-MsrSetElement ::= SEQUENCE (SIZE(1..3)) OF GPS-MsrSetElement
+
+-- OTD measurent information 1-3 times in message
+GPS-MsrSetElement ::= SEQUENCE {
+ refFrame INTEGER (0..65535) OPTIONAL, -- Reference Frame number
+ gpsTOW GPSTOW24b,
+ -- GPS TOW
+ -- Note that applicable range for refFrame is 0 - 42431
+ --N_SAT can be read from number of elements of gps-msrList
+ gps-msrList SeqOfGPS-MsrElement
+}
+
+-- 24 bit presentation for GPSTOW
+GPSTOW24b ::= INTEGER (0..14399999)
+
+-- measured elements in measurement parameters field
+SeqOfGPS-MsrElement ::= SEQUENCE (SIZE(1..16)) OF GPS-MsrElement
+
+GPS-MsrElement ::= SEQUENCE {
+ satelliteID SatelliteID, -- Satellite identifier
+ cNo INTEGER (0..63), -- carrier noise ratio
+ doppler INTEGER (-32768..32767), -- doppler, mulltiply by 0.2
+ wholeChips INTEGER (0..1022), -- whole value of the code phase measurement
+ fracChips INTEGER (0..1024), -- fractional value of the code phase measurement
+ -- a value of 1024 shall not be encoded by the sender
+ -- the receiver shall consider a value of 1024 to be
+ -- invalid data
+ mpathIndic MpathIndic, -- multipath indicator
+ pseuRangeRMSErr INTEGER (0..63) -- index
+}
+
+-- Multipath indicator
+MpathIndic ::= ENUMERATED {
+ notMeasured (0),
+ low (1),
+ medium (2),
+ high (3)
+}
+
+-- Location error IE
+LocationError ::= SEQUENCE {
+ locErrorReason LocErrorReason,
+ additionalAssistanceData AdditionalAssistanceData OPTIONAL,
+ ...
+}
+
+LocErrorReason ::= ENUMERATED {
+ unDefined (0),
+ notEnoughBTSs (1),
+ notEnoughSats (2),
+ eotdLocCalAssDataMissing (3),
+ eotdAssDataMissing (4),
+ gpsLocCalAssDataMissing (5),
+ gpsAssDataMissing (6),
+ methodNotSupported (7),
+ notProcessed (8),
+ refBTSForGPSNotServingBTS (9),
+ refBTSForEOTDNotServingBTS (10),
+ ...
+}
+
+-- exception handling:
+-- an unrecognized value shall be treated the same as value 0
+-- defines additional assistance data needed for any new location attempt
+-- MS shall retain any assistance data already received
+AdditionalAssistanceData ::= SEQUENCE {
+ gpsAssistanceData GPSAssistanceData OPTIONAL,
+ extensionContainer ExtensionContainer OPTIONAL,
+...
+}
+
+GPSAssistanceData ::= OCTET STRING (SIZE (1..maxGPSAssistanceData))
+-- GPSAssistanceData has identical structure and encoding to octets 3 to n of the
+-- GPS Assistance Data IE in 3GPP TS 49.031
+maxGPSAssistanceData INTEGER ::= 40
+-- Protocol Error Causes
+ErrorCodes ::= ENUMERATED {
+ unDefined (0),
+ missingComponet (1),
+ incorrectData (2),
+ missingIEorComponentElement (3),
+ messageTooShort (4),
+ unknowReferenceNumber (5),
+ ...
+}
+
+-- exception handling:
+-- an unrecognized value shall be treated the same as value 0
+-- GPS assistance data IE
+GPS-AssistData ::= SEQUENCE {
+ controlHeader ControlHeader
+}
+
+-- More Assistance Data To Be Sent IE
+-- More Assistance Data Components On the Way indication for delivery of an entire set of assistance
+-- data in multiple Assistance Data components.
+MoreAssDataToBeSent ::= ENUMERATED {
+ noMoreMessages (0), -- This is the only or last Assistance Data message used to deliver
+ -- the entire set of assistance data.
+ moreMessagesOnTheWay (1) -- The SMLC will send more Assistance Data messages or a final RRLP
+ -- Measure Position Request message to deliver the
+ -- the entire set of assistance data.
+}
+
+-- Control header of the GPS assistance data
+ControlHeader ::= SEQUENCE {
+ -- Field type Present information
+ referenceTime ReferenceTime OPTIONAL,
+ refLocation RefLocation OPTIONAL,
+ dgpsCorrections DGPSCorrections OPTIONAL,
+ navigationModel NavigationModel OPTIONAL,
+ ionosphericModel IonosphericModel OPTIONAL,
+ utcModel UTCModel OPTIONAL,
+ almanac Almanac OPTIONAL,
+ acquisAssist AcquisAssist OPTIONAL,
+ realTimeIntegrity SeqOf-BadSatelliteSet OPTIONAL
+}
+
+ReferenceTime ::= SEQUENCE {
+ gpsTime GPSTime,
+ gsmTime GSMTime OPTIONAL,
+ gpsTowAssist GPSTOWAssist OPTIONAL
+}
+
+-- GPS Time includes week number and time-of-week (TOW)
+GPSTime ::= SEQUENCE {
+ gpsTOW23b GPSTOW23b,
+ gpsWeek GPSWeek
+}
+
+-- GPSTOW, range 0-604799.92, resolution 0.08 sec, 23-bit presentation
+GPSTOW23b ::= INTEGER (0..7559999)
+
+-- GPS week number
+GPSWeek ::= INTEGER (0..1023)
+-- GPSTOWAssist consists of TLM message, Anti-spoof flag, Alert flag, and 2 reserved bits in TLM Word
+-- for each visible satellite.
+-- N_SAT can be read from number of elements in GPSTOWAssist
+
+GPSTOWAssist ::= SEQUENCE (SIZE(1..12)) OF GPSTOWAssistElement
+
+GPSTOWAssistElement ::= SEQUENCE {
+ satelliteID SatelliteID,
+ tlmWord TLMWord,
+ antiSpoof AntiSpoofFlag,
+ alert AlertFlag,
+ tlmRsvdBits TLMReservedBits
+}
+
+-- TLM Word, 14 bits
+TLMWord ::= INTEGER (0..16383)
+
+-- Anti-Spoof flag
+AntiSpoofFlag ::= INTEGER (0..1)
+
+-- Alert flag
+AlertFlag ::= INTEGER (0..1)
+
+-- Reserved bits in TLM word, MSB occurs earlier in TLM Word transmitted by satellite
+TLMReservedBits ::= INTEGER (0..3)
+
+GSMTime ::= SEQUENCE {
+ bcchCarrier BCCHCarrier, -- BCCH carrier
+ bsic BSIC, -- BSIC
+ frameNumber FrameNumber,
+ timeSlot TimeSlot,
+ bitNumber BitNumber
+}
+
+-- Frame number
+FrameNumber ::= INTEGER (0..2097151)
+
+-- Time slot number
+TimeSlot ::= INTEGER (0..7)
+
+-- Bit number
+BitNumber ::= INTEGER (0..156)
+
+-- Reference Location IE
+RefLocation ::= SEQUENCE {
+ threeDLocation Ext-GeographicalInformation
+}
+
+-- DGPS Corrections IE
+DGPSCorrections ::= SEQUENCE {
+ gpsTOW INTEGER (0..604799), -- DGPS reference time
+ status INTEGER (0..7),
+-- N_SAT can be read from number of elements of satList
+ satList SeqOfSatElement
+}
+SeqOfSatElement ::= SEQUENCE (SIZE (1..16)) OF SatElement
+
+-- number of correction for satellites
+SatElement ::= SEQUENCE {
+ satelliteID SatelliteID,
+--- Sequence number for ephemeris
+ iode INTEGER (0..239),
+-- User Differential Range Error
+ udre INTEGER (0..3),
+-- Pseudo Range Correction, range is
+-- -655.04 - +655.04,
+ pseudoRangeCor INTEGER (-2047..2047),
+-- Pseudo Range Rate Correction, range is
+-- -4.064 - +4.064,
+ rangeRateCor INTEGER (-127..127),
+-- Delta Pseudo Range Correction 2
+ deltaPseudoRangeCor2 INTEGER (-127..127), -- This IE shall be ignored by the receiver and
+-- set to zero by the sender
+-- Delta Pseudo Range Correction 2
+ deltaRangeRateCor2 INTEGER (-7..7), -- This IE shall be ignored by the receiver and
+-- set to zero by the sender
+-- Delta Pseudo Range Correction 3
+ deltaPseudoRangeCor3 INTEGER (-127..127), -- This IE shall be ignored by the receiver and
+-- set to zero by the sender
+-- Delta Pseudo Range Correction 3
+ deltaRangeRateCor3 INTEGER (-7..7) -- This IE shall be ignored by the receiver and
+-- set to zero by the sender
+}
+
+SatelliteID ::= INTEGER (0..63) -- identifies satellite
+
+-- Navigation Model IE
+NavigationModel ::= SEQUENCE {
+ navModelList SeqOfNavModelElement
+}
+
+-- navigation model satellite list
+SeqOfNavModelElement ::= SEQUENCE (SIZE(1..16)) OF NavModelElement
+
+NavModelElement ::= SEQUENCE {
+ satelliteID SatelliteID,
+ satStatus SatStatus -- satellite status
+}
+
+-- the Status of the navigation model
+SatStatus ::= CHOICE {
+-- New satellite, new Navigation Model
+ newSatelliteAndModelUC UncompressedEphemeris,
+-- Existing satellite, Existing Navigation Model
+ oldSatelliteAndModel NULL,
+-- Existing satellite, new Navigation Model
+ newNaviModelUC UncompressedEphemeris,
+ ...
+}
+
+-- Uncompressed satellite emhemeris and clock corrections
+UncompressedEphemeris ::= SEQUENCE {
+ ephemCodeOnL2 INTEGER (0..3),
+ ephemURA INTEGER (0..15),
+ ephemSVhealth INTEGER (0..63),
+ ephemIODC INTEGER (0..1023),
+ ephemL2Pflag INTEGER (0..1),
+ ephemSF1Rsvd EphemerisSubframe1Reserved,
+ ephemTgd INTEGER (-128..127),
+ ephemToc INTEGER (0..37799),
+ ephemAF2 INTEGER (-128..127),
+ ephemAF1 INTEGER (-32768..32767),
+ ephemAF0 INTEGER (-2097152..2097151),
+ ephemCrs INTEGER (-32768..32767),
+ ephemDeltaN INTEGER (-32768..32767),
+ ephemM0 INTEGER (-2147483648..2147483647),
+ ephemCuc INTEGER (-32768..32767),
+ ephemE INTEGER (0..4294967295),
+ ephemCus INTEGER (-32768..32767),
+ ephemAPowerHalf INTEGER (0..4294967295),
+ ephemToe INTEGER (0..37799),
+ ephemFitFlag INTEGER (0..1),
+ ephemAODA INTEGER (0..31),
+ ephemCic INTEGER (-32768..32767),
+ ephemOmegaA0 INTEGER (-2147483648..2147483647),
+ ephemCis INTEGER (-32768..32767),
+ ephemI0 INTEGER (-2147483648..2147483647),
+ ephemCrc INTEGER (-32768..32767),
+ ephemW INTEGER (-2147483648..2147483647),
+ ephemOmegaADot INTEGER (-8388608..8388607),
+ ephemIDot INTEGER (-8192..8191)
+}
+
+-- Reserved bits in subframe 1 of navigation message
+EphemerisSubframe1Reserved ::= SEQUENCE {
+ reserved1 INTEGER (0..8388607), -- 23-bit field
+ reserved2 INTEGER (0..16777215), -- 24-bit field
+ reserved3 INTEGER (0..16777215), -- 24-bit field
+ reserved4 INTEGER (0..65535) -- 16-bit field
+}
+
+-- Ionospheric Model IE
+IonosphericModel ::= SEQUENCE {
+ alfa0 INTEGER (-128..127),
+ alfa1 INTEGER (-128..127),
+ alfa2 INTEGER (-128..127),
+ alfa3 INTEGER (-128..127),
+ beta0 INTEGER (-128..127),
+ beta1 INTEGER (-128..127),
+ beta2 INTEGER (-128..127),
+ beta3 INTEGER (-128..127)
+}
+
+-- Universal Time Coordinate Model
+UTCModel ::= SEQUENCE {
+ utcA1 INTEGER (-8388608..8388607),
+ utcA0 INTEGER (-2147483648..2147483647),
+ utcTot INTEGER (0..255),
+ utcWNt INTEGER (0..255),
+ utcDeltaTls INTEGER (-128..127),
+ utcWNlsf INTEGER (0..255),
+ utcDN INTEGER (-128..127),
+ utcDeltaTlsf INTEGER (-128..127)
+}
+
+-- Almanac, Long term model
+-- NOTE: These are parameters are subset of the ephemeris
+-- NOTE: But with reduced resolution and accuracy
+Almanac ::= SEQUENCE {
+ alamanacWNa INTEGER (0..255), -- Once per message
+-- navigation model satellite list.
+-- The size of almanacList is actually Nums_Sats_Total field
+ almanacList SeqOfAlmanacElement
+}
+
+SeqOfAlmanacElement ::= SEQUENCE (SIZE(1..64)) OF AlmanacElement
+
+-- Almanac info once per satellite
+AlmanacElement ::= SEQUENCE {
+ satelliteID SatelliteID,
+ almanacE INTEGER (0..65535),
+ alamanacToa INTEGER (0..255),
+ almanacKsii INTEGER (-32768..32767),
+ almanacOmegaDot INTEGER (-32768..32767),
+ almanacSVhealth INTEGER (0..255),
+ almanacAPowerHalf INTEGER (0..16777215),
+ almanacOmega0 INTEGER (-8388608..8388607),
+ almanacW INTEGER (-8388608..8388607),
+ almanacM0 INTEGER (-8388608..8388607),
+ almanacAF0 INTEGER (-1024..1023),
+ almanacAF1 INTEGER (-1024..1023)
+}
+
+-- Acquisition Assistance
+AcquisAssist ::= SEQUENCE {
+-- Number of Satellites can be read from acquistList
+ timeRelation TimeRelation,
+-- Acquisition assistance list
+-- The size of Number of Satellites is actually Number of Satellites field
+ acquisList SeqOfAcquisElement
+}
+
+SeqOfAcquisElement ::= SEQUENCE (SIZE(1..16)) OF AcquisElement
+
+-- the relationship between GPS time and air-interface timing
+TimeRelation ::= SEQUENCE {
+--
+ gpsTOW GPSTOW23b, -- 23b presentation
+ gsmTime GSMTime OPTIONAL
+}
+
+-- data occuring per number of satellites
+AcquisElement ::= SEQUENCE {
+ svid SatelliteID,
+-- Doppler 0th order term,
+-- -5120.0 - 5117.5 Hz (= -2048 - 2047 with 2.5 Hz resolution)
+ doppler0 INTEGER (-2048..2047),
+ addionalDoppler AddionalDopplerFields OPTIONAL,
+ codePhase INTEGER (0..1022), -- Code Phase
+ intCodePhase INTEGER (0..19), -- Integer Code Phase
+ gpsBitNumber INTEGER (0..3), -- GPS bit number
+ codePhaseSearchWindow INTEGER (0..15), -- Code Phase Search Window
+ addionalAngle AddionalAngleFields OPTIONAL
+}
+
+AddionalDopplerFields ::= SEQUENCE {
+-- Doppler 1st order term, -1.0 - +0.5 Hz/sec
+-- (= -42 + (0 to 63) with 1/42 Hz/sec. resolution)
+ doppler1 INTEGER (0..63),
+ dopplerUncertainty INTEGER (0..7)
+-- a sender shall not encode any DopplerUncertainty value in the range 5 to 7
+-- a receiver shall ignore any value between 5 and 7.
+}
+
+AddionalAngleFields ::= SEQUENCE {
+-- azimuth angle, 0 - 348.75 deg (= 0 - 31 with 11.25 deg resolution)
+ azimuth INTEGER (0..31),
+-- elevation angle, 0 - 78.75 deg (= 0 - 7 with 11.25 deg resolution)
+ elevation INTEGER (0..7)
+}
+
+-- Real-Time Integrity
+-- number of bad satellites can be read from this element
+SeqOf-BadSatelliteSet ::= SEQUENCE (SIZE(1..16)) OF SatelliteID
+
+-- Extension Elements
+-- Release 98 Extensions here
+Rel98-MsrPosition-Req-Extension ::= SEQUENCE {
+ rel98-Ext-ExpOTD Rel98-Ext-ExpOTD OPTIONAL, -- ExpectedOTD extension
+ ...,
+ gpsTimeAssistanceMeasurementRequest NULL OPTIONAL,
+ gpsReferenceTimeUncertainty GPSReferenceTimeUncertainty OPTIONAL
+-- Further R98 extensions here
+}
+
+Rel98-AssistanceData-Extension ::= SEQUENCE {
+ rel98-Ext-ExpOTD Rel98-Ext-ExpOTD OPTIONAL, -- ExpectedOTD extension
+ ...,
+ gpsTimeAssistanceMeasurementRequest NULL OPTIONAL,
+ gpsReferenceTimeUncertainty GPSReferenceTimeUncertainty OPTIONAL
+-- Further R98 extensions here
+
+}
+-- Release 98 ExpOTD extension
+Rel98-Ext-ExpOTD ::= SEQUENCE {
+-- If MsrAssistBTS is included in message, msrAssistData-R98-ExpOTD shall be included.
+ msrAssistData-R98-ExpOTD MsrAssistData-R98-ExpOTD OPTIONAL,
+-- If SystemInfoAssistaData is included in message, systemInfoAssistData-R98-ExpOTD shall be
+-- included.
+ systemInfoAssistData-R98-ExpOTD SystemInfoAssistData-R98-ExpOTD OPTIONAL
+}
+
+-- MsrAssistData R98 extension
+MsrAssistData-R98-ExpOTD ::= SEQUENCE {
+ msrAssistList-R98-ExpOTD SeqOfMsrAssistBTS-R98-ExpOTD
+}
+
+-- Indexes in SeqOfMsrAssistBTS-R98-ExpOTD refer to SeqOfMsrAssistBTS
+-- If the index exceeds the SegOfMsrAssistBTS range or if there is other
+-- inconsistencies between the BTS indices, the MS shall apply protocol
+-- error cause incorrectData
+SeqOfMsrAssistBTS-R98-ExpOTD ::= SEQUENCE (SIZE(1..15)) OF MsrAssistBTS-R98-ExpOTD
+
+-- This element completes MsrAssistBTS IE
+MsrAssistBTS-R98-ExpOTD ::= SEQUENCE {
+ expectedOTD ExpectedOTD,
+ expOTDUncertainty ExpOTDUncertainty
+}
+
+-- SystemInfoAssistData R98 extension
+SystemInfoAssistData-R98-ExpOTD ::= SEQUENCE {
+ systemInfoAssistListR98-ExpOTD SeqOfSystemInfoAssistBTS-R98-ExpOTD
+}
+
+-- SeqOfSystemInfoAssistBTS-R98-ExpOTD index refer to SeqOfSystemInfoAssistBTS
+-- If the index exceeds the SegOfSystemInfoAssistBTS range or if there is other
+-- inconsistencies between the BTS indices, the MS shall apply protocol
+-- error cause incorrectData
+
+SeqOfSystemInfoAssistBTS-R98-ExpOTD ::= SEQUENCE (SIZE(1..32)) OF SystemInfoAssistBTS-R98-ExpOTD
+
+-- whether n.th is present or not ?
+SystemInfoAssistBTS-R98-ExpOTD ::= CHOICE {
+ notPresent NULL,
+ present AssistBTSData-R98-ExpOTD
+}
+
+-- This element completes AssistBTSData IE
+AssistBTSData-R98-ExpOTD ::= SEQUENCE {
+ expectedOTD ExpectedOTD,
+ expOTDuncertainty ExpOTDUncertainty -- Uncertainty of expected OTD
+}
+
+-- Expected OTD value between nbor base station and reference BTS
+-- at MS's current estimated location.
+ExpectedOTD ::= INTEGER (0..1250)
+
+-- The ExpectedOTD value 1250 shall not be encoded by the transmitting entity and
+-- shall be treated by the receiving entity as 0.
+-- Uncertainty of Exptected OTD in bits
+ExpOTDUncertainty ::= INTEGER(0..7)
+
+-- Release 98 extensions
+GPSReferenceTimeUncertainty ::= INTEGER (0 .. 127) -- Coding according to Annex
+
+GPSTimeAssistanceMeasurements ::= SEQUENCE {
+ referenceFrameMSB INTEGER (0 .. 63), -- MSB of frame number
+ gpsTowSubms INTEGER (0 .. 9999) OPTIONAL, -- in units of 100ns, for MS based AGPS
+ deltaTow INTEGER (0 .. 127) OPTIONAL, -- for MS assisted AGPS
+ gpsReferenceTimeUncertainty GPSReferenceTimeUncertainty OPTIONAL
+}
+
+Rel-98-MsrPosition-Rsp-Extension ::= SEQUENCE {
+-- First extension to Release 98
+ rel-98-Ext-MeasureInfo SEQUENCE {
+ otd-MeasureInfo-R98-Ext OTD-MeasureInfo-R98-Ext OPTIONAL
+ },
+ ...,
+ timeAssistanceMeasurements GPSTimeAssistanceMeasurements OPTIONAL
+-- Further R98 extensions here
+}
+
+-- This is an addition to OTD-MeasureInfo element defined in original message,
+-- If OTD-MeasureInfo is absent, or if one or more OTD-MsrElementRest are present
+-- OTD-MeasureInfo-R98-Ext shall be absent.
+-- OTD-MeasureInfo-R98-Ext
+OTD-MeasureInfo-R98-Ext ::= SEQUENCE {
+-- Measurement info elements
+ otdMsrFirstSets-R98-Ext OTD-MsrElementFirst-R98-Ext
+}
+
+-- OTD measurement information Ext for the first set only
+OTD-MsrElementFirst-R98-Ext ::= SEQUENCE {
+-- additional measured neighbors in OTD measurements
+ otd-FirstSetMsrs-R98-Ext SeqOfOTD-FirstSetMsrs-R98-Ext OPTIONAL
+}
+
+SeqOfOTD-FirstSetMsrs-R98-Ext ::= SEQUENCE (SIZE(1..5)) OF OTD-FirstSetMsrs
+
+Rel-5-MsrPosition-Rsp-Extension ::= SEQUENCE {
+ extended-reference Extended-reference OPTIONAL,
+-- The extended-reference shall be included by the MS if and only if previously
+-- received from the SMLC in a Measure Position Request. When included, the value sent
+-- by the MS shall equal the value received from the SMLC.
+-- extension to Release 5, for RRLP pseudo-segmentation here
+ otd-MeasureInfo-5-Ext OTD-MeasureInfo-5-Ext OPTIONAL,
+ ulPseudoSegInd UlPseudoSegInd OPTIONAL, -- Included when uplink RRLP
+-- Pseudo-segmentation is used, not included when no uplink pseudo-segmentation is used
+ ...
+-- Possibly more extensions for Release 5 here later
+}
+
+Extended-reference ::= SEQUENCE {
+ smlc-code INTEGER (0..63),
+ transaction-ID INTEGER (0..262143)
+}
+
+OTD-MeasureInfo-5-Ext ::= SeqOfOTD-MsrElementRest
+-- if more than one measurement sets are present this element is repeated
+-- NumberOfSets - 1 (-1 = first set) combined in OTD-MeasureInfo-5-Ext and
+-- OTD-MeasureInfo (e.g. if NumberOfSets is 3, then one otdMsrRestSets may
+-- be sent in OTD-MeasureInfo-5-Ext and one in OTD-MeasureInfo)
+-- First part of Uplink RRLP Pseudo-segmentation indication, possibly more may be defined
+-- in the future for segmentation with more than two segments.
+UlPseudoSegInd ::= ENUMERATED {
+ firstOfMany (0),
+ secondOfMany(1)
+}
+
+Rel5-MsrPosition-Req-Extension ::= SEQUENCE {
+ extended-reference Extended-reference,
+ ...
+-- Possibly more extensions for Release 5 here later
+}
+
+Rel5-AssistanceData-Extension ::= SEQUENCE {
+ extended-reference Extended-reference,
+ ...
+-- Possibly more extensions for Release 5 here later
+}
+
+Rel-5-ProtocolError-Extension::= SEQUENCE {
+ extended-reference Extended-reference OPTIONAL,
+-- The extended-reference shall be included by the MS if and only if previously
+-- received from the SMLC.
+-- When included, the value sent by the MS shall equal the value received from the SMLC.
+ ...
+-- Possibly more extensions for Release 5 here later
+}
+
+END \ No newline at end of file
diff --git a/asn1/rrlp/rrlp.cnf b/asn1/rrlp/rrlp.cnf
new file mode 100644
index 0000000000..0b942abf5e
--- /dev/null
+++ b/asn1/rrlp/rrlp.cnf
@@ -0,0 +1,19 @@
+# rrlp.cnf
+# rrlp conformation file
+# Copyright 2006 Anders Broman
+# $Id$
+
+#.PDU
+PDU
+
+#.FN_BODY PDU
+
+ proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, FALSE);
+
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ per_aligment_type_callback(FALSE);
+ %(DEFAULT_BODY)s
diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
index f99dddf26e..20d0d30887 100644
--- a/epan/dissectors/Makefile.common
+++ b/epan/dissectors/Makefile.common
@@ -535,6 +535,7 @@ DISSECTOR_SRC = \
packet-rpc.c \
packet-rpl.c \
packet-rquota.c \
+ packet-rrlp.c \
packet-rsh.c \
packet-rstat.c \
packet-rsvp.c \
@@ -871,6 +872,7 @@ DISSECTOR_INCLUDES = \
packet-ros.h \
packet-rpc.h \
packet-rquota.h \
+ packet-rrlp.h \
packet-rsvp.h \
packet-rtcp.h \
packet-rtp.h \
diff --git a/epan/dissectors/packet-rrlp.c b/epan/dissectors/packet-rrlp.c
new file mode 100644
index 0000000000..36ea4ea18b
--- /dev/null
+++ b/epan/dissectors/packet-rrlp.c
@@ -0,0 +1,5015 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* .\packet-rrlp.c */
+/* ../../tools/asn2eth.py -X -e -p rrlp -c rrlp.cnf -s packet-rrlp-template rrlp.asn */
+
+/* Input file: packet-rrlp-template.c */
+
+#line 1 "packet-rrlp-template.c"
+/* packet-rrlp.c
+ * Routines for 3GPP Radio Resource LCS Protocol (RRLP) packet dissection
+ * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * 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.
+ *
+ * Ref 3GPP TS 44.031 version 6.8.0 Release 6
+ * http://www.3gpp.org
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-rrlp.h"
+
+#include "packet-ber.h"
+#include "packet-per.h"
+#include "packet-gsm_map.h"
+
+#define PNAME "Radio Resource LCS Protocol (RRLP)"
+#define PSNAME "RRLP"
+#define PFNAME "rrlp"
+
+static dissector_handle_t rrlp_handle=NULL;
+
+
+/* Initialize the protocol and registered fields */
+static int proto_rrlp = -1;
+
+
+
+/*--- Included file: packet-rrlp-hf.c ---*/
+#line 1 "packet-rrlp-hf.c"
+static int hf_rrlp_PDU_PDU = -1; /* PDU */
+static int hf_rrlp_referenceNumber = -1; /* INTEGER_0_7 */
+static int hf_rrlp_component = -1; /* RRLP_Component */
+static int hf_rrlp_msrPositionReq = -1; /* MsrPosition_Req */
+static int hf_rrlp_msrPositionRsp = -1; /* MsrPosition_Rsp */
+static int hf_rrlp_assistanceData = -1; /* AssistanceData */
+static int hf_rrlp_assistanceDataAck = -1; /* NULL */
+static int hf_rrlp_protocolError = -1; /* ProtocolError */
+static int hf_rrlp_positionInstruct = -1; /* PositionInstruct */
+static int hf_rrlp_referenceAssistData = -1; /* ReferenceAssistData */
+static int hf_rrlp_msrAssistData = -1; /* MsrAssistData */
+static int hf_rrlp_systemInfoAssistData = -1; /* SystemInfoAssistData */
+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_multipleSets = -1; /* MultipleSets */
+static int hf_rrlp_referenceIdentity = -1; /* ReferenceIdentity */
+static int hf_rrlp_otd_MeasureInfo = -1; /* OTD_MeasureInfo */
+static int hf_rrlp_locationInfo = -1; /* LocationInfo */
+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_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_errorCause = -1; /* ErrorCodes */
+static int hf_rrlp_rel_5_ProtocolError_Extension = -1; /* Rel_5_ProtocolError_Extension */
+static int hf_rrlp_methodType = -1; /* MethodType */
+static int hf_rrlp_positionMethod = -1; /* PositionMethod */
+static int hf_rrlp_measureResponseTime = -1; /* MeasureResponseTime */
+static int hf_rrlp_useMultipleSets = -1; /* UseMultipleSets */
+static int hf_rrlp_environmentCharacter = -1; /* EnvironmentCharacter */
+static int hf_rrlp_msAssisted = -1; /* AccuracyOpt */
+static int hf_rrlp_msBased = -1; /* Accuracy */
+static int hf_rrlp_msBasedPref = -1; /* Accuracy */
+static int hf_rrlp_msAssistedPref = -1; /* Accuracy */
+static int hf_rrlp_accuracy = -1; /* Accuracy */
+static int hf_rrlp_bcchCarrier = -1; /* BCCHCarrier */
+static int hf_rrlp_bsic = -1; /* BSIC */
+static int hf_rrlp_timeSlotScheme = -1; /* TimeSlotScheme */
+static int hf_rrlp_btsPosition = -1; /* BTSPosition */
+static int hf_rrlp_msrAssistList = -1; /* SeqOfMsrAssistBTS */
+static int hf_rrlp_SeqOfMsrAssistBTS_item = -1; /* MsrAssistBTS */
+static int hf_rrlp_multiFrameOffset = -1; /* MultiFrameOffset */
+static int hf_rrlp_roughRTD = -1; /* RoughRTD */
+static int hf_rrlp_calcAssistanceBTS = -1; /* CalcAssistanceBTS */
+static int hf_rrlp_systemInfoAssistList = -1; /* SeqOfSystemInfoAssistBTS */
+static int hf_rrlp_SeqOfSystemInfoAssistBTS_item = -1; /* SystemInfoAssistBTS */
+static int hf_rrlp_notPresent = -1; /* NULL */
+static int hf_rrlp_present = -1; /* AssistBTSData */
+static int hf_rrlp_fineRTD = -1; /* FineRTD */
+static int hf_rrlp_referenceWGS84 = -1; /* ReferenceWGS84 */
+static int hf_rrlp_relativeNorth = -1; /* RelDistance */
+static int hf_rrlp_relativeEast = -1; /* RelDistance */
+static int hf_rrlp_relativeAlt = -1; /* RelativeAlt */
+static int hf_rrlp_nbrOfSets = -1; /* INTEGER_2_3 */
+static int hf_rrlp_nbrOfReferenceBTSs = -1; /* INTEGER_1_3 */
+static int hf_rrlp_referenceRelation = -1; /* ReferenceRelation */
+static int hf_rrlp_refBTSList = -1; /* SeqOfReferenceIdentityType */
+static int hf_rrlp_SeqOfReferenceIdentityType_item = -1; /* ReferenceIdentityType */
+static int hf_rrlp_bsicAndCarrier = -1; /* BSICAndCarrier */
+static int hf_rrlp_ci = -1; /* CellID */
+static int hf_rrlp_requestIndex = -1; /* RequestIndex */
+static int hf_rrlp_systemInfoIndex = -1; /* SystemInfoIndex */
+static int hf_rrlp_ciAndLAC = -1; /* CellIDAndLAC */
+static int hf_rrlp_carrier = -1; /* BCCHCarrier */
+static int hf_rrlp_referenceLAC = -1; /* LAC */
+static int hf_rrlp_referenceCI = -1; /* CellID */
+static int hf_rrlp_otdMsrFirstSets = -1; /* OTD_MsrElementFirst */
+static int hf_rrlp_otdMsrRestSets = -1; /* SeqOfOTD_MsrElementRest */
+static int hf_rrlp_SeqOfOTD_MsrElementRest_item = -1; /* OTD_MsrElementRest */
+static int hf_rrlp_refFrameNumber = -1; /* INTEGER_0_42431 */
+static int hf_rrlp_referenceTimeSlot = -1; /* ModuloTimeSlot */
+static int hf_rrlp_toaMeasurementsOfRef = -1; /* TOA_MeasurementsOfRef */
+static int hf_rrlp_stdResolution = -1; /* StdResolution */
+static int hf_rrlp_taCorrection = -1; /* INTEGER_0_960 */
+static int hf_rrlp_otd_FirstSetMsrs = -1; /* SeqOfOTD_FirstSetMsrs */
+static int hf_rrlp_SeqOfOTD_FirstSetMsrs_item = -1; /* OTD_FirstSetMsrs */
+static int hf_rrlp_otd_MsrsOfOtherSets = -1; /* SeqOfOTD_MsrsOfOtherSets */
+static int hf_rrlp_SeqOfOTD_MsrsOfOtherSets_item = -1; /* OTD_MsrsOfOtherSets */
+static int hf_rrlp_refQuality = -1; /* RefQuality */
+static int hf_rrlp_numOfMeasurements = -1; /* NumOfMeasurements */
+static int hf_rrlp_identityNotPresent = -1; /* OTD_Measurement */
+static int hf_rrlp_identityPresent = -1; /* OTD_MeasurementWithID */
+static int hf_rrlp_nborTimeSlot = -1; /* ModuloTimeSlot */
+static int hf_rrlp_eotdQuality = -1; /* EOTDQuality */
+static int hf_rrlp_otdValue = -1; /* OTDValue */
+static int hf_rrlp_neighborIdentity = -1; /* NeighborIdentity */
+static int hf_rrlp_nbrOfMeasurements = -1; /* INTEGER_0_7 */
+static int hf_rrlp_stdOfEOTD = -1; /* INTEGER_0_31 */
+static int hf_rrlp_multiFrameCarrier = -1; /* MultiFrameCarrier */
+static int hf_rrlp_refFrame = -1; /* INTEGER_0_65535 */
+static int hf_rrlp_gpsTOW = -1; /* INTEGER_0_14399999 */
+static int hf_rrlp_fixType = -1; /* FixType */
+static int hf_rrlp_posEstimate = -1; /* Ext_GeographicalInformation */
+static int hf_rrlp_gpsMsrSetList = -1; /* SeqOfGPS_MsrSetElement */
+static int hf_rrlp_SeqOfGPS_MsrSetElement_item = -1; /* GPS_MsrSetElement */
+static int hf_rrlp_gpsTOW1 = -1; /* GPSTOW24b */
+static int hf_rrlp_gps_msrList = -1; /* SeqOfGPS_MsrElement */
+static int hf_rrlp_SeqOfGPS_MsrElement_item = -1; /* GPS_MsrElement */
+static int hf_rrlp_satelliteID = -1; /* SatelliteID */
+static int hf_rrlp_cNo = -1; /* INTEGER_0_63 */
+static int hf_rrlp_doppler = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_wholeChips = -1; /* INTEGER_0_1022 */
+static int hf_rrlp_fracChips = -1; /* INTEGER_0_1024 */
+static int hf_rrlp_mpathIndic = -1; /* MpathIndic */
+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_controlHeader = -1; /* ControlHeader */
+static int hf_rrlp_referenceTime = -1; /* ReferenceTime */
+static int hf_rrlp_refLocation = -1; /* RefLocation */
+static int hf_rrlp_dgpsCorrections = -1; /* DGPSCorrections */
+static int hf_rrlp_navigationModel = -1; /* NavigationModel */
+static int hf_rrlp_ionosphericModel = -1; /* IonosphericModel */
+static int hf_rrlp_utcModel = -1; /* UTCModel */
+static int hf_rrlp_almanac = -1; /* Almanac */
+static int hf_rrlp_acquisAssist = -1; /* AcquisAssist */
+static int hf_rrlp_realTimeIntegrity = -1; /* SeqOf_BadSatelliteSet */
+static int hf_rrlp_gpsTime = -1; /* GPSTime */
+static int hf_rrlp_gsmTime = -1; /* GSMTime */
+static int hf_rrlp_gpsTowAssist = -1; /* GPSTOWAssist */
+static int hf_rrlp_gpsTOW23b = -1; /* GPSTOW23b */
+static int hf_rrlp_gpsWeek = -1; /* GPSWeek */
+static int hf_rrlp_GPSTOWAssist_item = -1; /* GPSTOWAssistElement */
+static int hf_rrlp_tlmWord = -1; /* TLMWord */
+static int hf_rrlp_antiSpoof = -1; /* AntiSpoofFlag */
+static int hf_rrlp_alert = -1; /* AlertFlag */
+static int hf_rrlp_tlmRsvdBits = -1; /* TLMReservedBits */
+static int hf_rrlp_frameNumber = -1; /* FrameNumber */
+static int hf_rrlp_timeSlot = -1; /* TimeSlot */
+static int hf_rrlp_bitNumber = -1; /* BitNumber */
+static int hf_rrlp_threeDLocation = -1; /* Ext_GeographicalInformation */
+static int hf_rrlp_gpsTOW2 = -1; /* INTEGER_0_604799 */
+static int hf_rrlp_status = -1; /* INTEGER_0_7 */
+static int hf_rrlp_satList = -1; /* SeqOfSatElement */
+static int hf_rrlp_SeqOfSatElement_item = -1; /* SatElement */
+static int hf_rrlp_iode = -1; /* INTEGER_0_239 */
+static int hf_rrlp_udre = -1; /* INTEGER_0_3 */
+static int hf_rrlp_pseudoRangeCor = -1; /* INTEGER_M2047_2047 */
+static int hf_rrlp_rangeRateCor = -1; /* INTEGER_M127_127 */
+static int hf_rrlp_deltaPseudoRangeCor2 = -1; /* INTEGER_M127_127 */
+static int hf_rrlp_deltaRangeRateCor2 = -1; /* INTEGER_M7_7 */
+static int hf_rrlp_deltaPseudoRangeCor3 = -1; /* INTEGER_M127_127 */
+static int hf_rrlp_deltaRangeRateCor3 = -1; /* INTEGER_M7_7 */
+static int hf_rrlp_navModelList = -1; /* SeqOfNavModelElement */
+static int hf_rrlp_SeqOfNavModelElement_item = -1; /* NavModelElement */
+static int hf_rrlp_satStatus = -1; /* SatStatus */
+static int hf_rrlp_newSatelliteAndModelUC = -1; /* UncompressedEphemeris */
+static int hf_rrlp_oldSatelliteAndModel = -1; /* NULL */
+static int hf_rrlp_newNaviModelUC = -1; /* UncompressedEphemeris */
+static int hf_rrlp_ephemCodeOnL2 = -1; /* INTEGER_0_3 */
+static int hf_rrlp_ephemURA = -1; /* INTEGER_0_15 */
+static int hf_rrlp_ephemSVhealth = -1; /* INTEGER_0_63 */
+static int hf_rrlp_ephemIODC = -1; /* INTEGER_0_1023 */
+static int hf_rrlp_ephemL2Pflag = -1; /* INTEGER_0_1 */
+static int hf_rrlp_ephemSF1Rsvd = -1; /* EphemerisSubframe1Reserved */
+static int hf_rrlp_ephemTgd = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_ephemToc = -1; /* INTEGER_0_37799 */
+static int hf_rrlp_ephemAF2 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_ephemAF1 = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemAF0 = -1; /* INTEGER_M2097152_2097151 */
+static int hf_rrlp_ephemCrs = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemDeltaN = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemM0 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_rrlp_ephemCuc = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemE = -1; /* INTEGER_0_4294967295 */
+static int hf_rrlp_ephemCus = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemAPowerHalf = -1; /* INTEGER_0_4294967295 */
+static int hf_rrlp_ephemToe = -1; /* INTEGER_0_37799 */
+static int hf_rrlp_ephemFitFlag = -1; /* INTEGER_0_1 */
+static int hf_rrlp_ephemAODA = -1; /* INTEGER_0_31 */
+static int hf_rrlp_ephemCic = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemOmegaA0 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_rrlp_ephemCis = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemI0 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_rrlp_ephemCrc = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_ephemW = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_rrlp_ephemOmegaADot = -1; /* INTEGER_M8388608_8388607 */
+static int hf_rrlp_ephemIDot = -1; /* INTEGER_M8192_8191 */
+static int hf_rrlp_reserved1 = -1; /* INTEGER_0_8388607 */
+static int hf_rrlp_reserved2 = -1; /* INTEGER_0_16777215 */
+static int hf_rrlp_reserved3 = -1; /* INTEGER_0_16777215 */
+static int hf_rrlp_reserved4 = -1; /* INTEGER_0_65535 */
+static int hf_rrlp_alfa0 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_alfa1 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_alfa2 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_alfa3 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_beta0 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_beta1 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_beta2 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_beta3 = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_utcA1 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_rrlp_utcA0 = -1; /* INTEGER_M2147483648_2147483647 */
+static int hf_rrlp_utcTot = -1; /* INTEGER_0_255 */
+static int hf_rrlp_utcWNt = -1; /* INTEGER_0_255 */
+static int hf_rrlp_utcDeltaTls = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_utcWNlsf = -1; /* INTEGER_0_255 */
+static int hf_rrlp_utcDN = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_utcDeltaTlsf = -1; /* INTEGER_M128_127 */
+static int hf_rrlp_alamanacWNa = -1; /* INTEGER_0_255 */
+static int hf_rrlp_almanacList = -1; /* SeqOfAlmanacElement */
+static int hf_rrlp_SeqOfAlmanacElement_item = -1; /* AlmanacElement */
+static int hf_rrlp_almanacE = -1; /* INTEGER_0_65535 */
+static int hf_rrlp_alamanacToa = -1; /* INTEGER_0_255 */
+static int hf_rrlp_almanacKsii = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_almanacOmegaDot = -1; /* INTEGER_M32768_32767 */
+static int hf_rrlp_almanacSVhealth = -1; /* INTEGER_0_255 */
+static int hf_rrlp_almanacAPowerHalf = -1; /* INTEGER_0_16777215 */
+static int hf_rrlp_almanacOmega0 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_rrlp_almanacW = -1; /* INTEGER_M8388608_8388607 */
+static int hf_rrlp_almanacM0 = -1; /* INTEGER_M8388608_8388607 */
+static int hf_rrlp_almanacAF0 = -1; /* INTEGER_M1024_1023 */
+static int hf_rrlp_almanacAF1 = -1; /* INTEGER_M1024_1023 */
+static int hf_rrlp_timeRelation = -1; /* TimeRelation */
+static int hf_rrlp_acquisList = -1; /* SeqOfAcquisElement */
+static int hf_rrlp_SeqOfAcquisElement_item = -1; /* AcquisElement */
+static int hf_rrlp_gpsTOW3 = -1; /* GPSTOW23b */
+static int hf_rrlp_svid = -1; /* SatelliteID */
+static int hf_rrlp_doppler0 = -1; /* INTEGER_M2048_2047 */
+static int hf_rrlp_addionalDoppler = -1; /* AddionalDopplerFields */
+static int hf_rrlp_codePhase = -1; /* INTEGER_0_1022 */
+static int hf_rrlp_intCodePhase = -1; /* INTEGER_0_19 */
+static int hf_rrlp_gpsBitNumber = -1; /* INTEGER_0_3 */
+static int hf_rrlp_codePhaseSearchWindow = -1; /* INTEGER_0_15 */
+static int hf_rrlp_addionalAngle = -1; /* AddionalAngleFields */
+static int hf_rrlp_doppler1 = -1; /* INTEGER_0_63 */
+static int hf_rrlp_dopplerUncertainty = -1; /* INTEGER_0_7 */
+static int hf_rrlp_azimuth = -1; /* INTEGER_0_31 */
+static int hf_rrlp_elevation = -1; /* INTEGER_0_7 */
+static int hf_rrlp_SeqOf_BadSatelliteSet_item = -1; /* SatelliteID */
+static int hf_rrlp_rel98_Ext_ExpOTD = -1; /* Rel98_Ext_ExpOTD */
+static int hf_rrlp_gpsTimeAssistanceMeasurementRequest = -1; /* NULL */
+static int hf_rrlp_gpsReferenceTimeUncertainty = -1; /* GPSReferenceTimeUncertainty */
+static int hf_rrlp_msrAssistData_R98_ExpOTD = -1; /* MsrAssistData_R98_ExpOTD */
+static int hf_rrlp_systemInfoAssistData_R98_ExpOTD = -1; /* SystemInfoAssistData_R98_ExpOTD */
+static int hf_rrlp_msrAssistList_R98_ExpOTD = -1; /* SeqOfMsrAssistBTS_R98_ExpOTD */
+static int hf_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD_item = -1; /* MsrAssistBTS_R98_ExpOTD */
+static int hf_rrlp_expectedOTD = -1; /* ExpectedOTD */
+static int hf_rrlp_expOTDUncertainty = -1; /* ExpOTDUncertainty */
+static int hf_rrlp_systemInfoAssistListR98_ExpOTD = -1; /* SeqOfSystemInfoAssistBTS_R98_ExpOTD */
+static int hf_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD_item = -1; /* SystemInfoAssistBTS_R98_ExpOTD */
+static int hf_rrlp_present1 = -1; /* AssistBTSData_R98_ExpOTD */
+static int hf_rrlp_expOTDuncertainty = -1; /* ExpOTDUncertainty */
+static int hf_rrlp_referenceFrameMSB = -1; /* INTEGER_0_63 */
+static int hf_rrlp_gpsTowSubms = -1; /* INTEGER_0_9999 */
+static int hf_rrlp_deltaTow = -1; /* INTEGER_0_127 */
+static int hf_rrlp_rel_98_Ext_MeasureInfo = -1; /* T_rel_98_Ext_MeasureInfo */
+static int hf_rrlp_otd_MeasureInfo_R98_Ext = -1; /* OTD_MeasureInfo_R98_Ext */
+static int hf_rrlp_timeAssistanceMeasurements = -1; /* GPSTimeAssistanceMeasurements */
+static int hf_rrlp_otdMsrFirstSets_R98_Ext = -1; /* OTD_MsrElementFirst_R98_Ext */
+static int hf_rrlp_otd_FirstSetMsrs_R98_Ext = -1; /* SeqOfOTD_FirstSetMsrs_R98_Ext */
+static int hf_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext_item = -1; /* OTD_FirstSetMsrs */
+static int hf_rrlp_extended_reference = -1; /* Extended_reference */
+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 */
+
+/*--- End of included file: packet-rrlp-hf.c ---*/
+#line 58 "packet-rrlp-template.c"
+
+/* Initialize the subtree pointers */
+static gint ett_rrlp = -1;
+
+/*--- Included file: packet-rrlp-ett.c ---*/
+#line 1 "packet-rrlp-ett.c"
+static gint ett_rrlp_PDU = -1;
+static gint ett_rrlp_RRLP_Component = -1;
+static gint ett_rrlp_MsrPosition_Req = -1;
+static gint ett_rrlp_MsrPosition_Rsp = -1;
+static gint ett_rrlp_AssistanceData = -1;
+static gint ett_rrlp_ProtocolError = -1;
+static gint ett_rrlp_PositionInstruct = -1;
+static gint ett_rrlp_MethodType = -1;
+static gint ett_rrlp_AccuracyOpt = -1;
+static gint ett_rrlp_ReferenceAssistData = -1;
+static gint ett_rrlp_MsrAssistData = -1;
+static gint ett_rrlp_SeqOfMsrAssistBTS = -1;
+static gint ett_rrlp_MsrAssistBTS = -1;
+static gint ett_rrlp_SystemInfoAssistData = -1;
+static gint ett_rrlp_SeqOfSystemInfoAssistBTS = -1;
+static gint ett_rrlp_SystemInfoAssistBTS = -1;
+static gint ett_rrlp_AssistBTSData = -1;
+static gint ett_rrlp_CalcAssistanceBTS = -1;
+static gint ett_rrlp_ReferenceWGS84 = -1;
+static gint ett_rrlp_MultipleSets = -1;
+static gint ett_rrlp_ReferenceIdentity = -1;
+static gint ett_rrlp_SeqOfReferenceIdentityType = -1;
+static gint ett_rrlp_ReferenceIdentityType = -1;
+static gint ett_rrlp_BSICAndCarrier = -1;
+static gint ett_rrlp_CellIDAndLAC = -1;
+static gint ett_rrlp_OTD_MeasureInfo = -1;
+static gint ett_rrlp_SeqOfOTD_MsrElementRest = -1;
+static gint ett_rrlp_OTD_MsrElementFirst = -1;
+static gint ett_rrlp_SeqOfOTD_FirstSetMsrs = -1;
+static gint ett_rrlp_OTD_MsrElementRest = -1;
+static gint ett_rrlp_SeqOfOTD_MsrsOfOtherSets = -1;
+static gint ett_rrlp_TOA_MeasurementsOfRef = -1;
+static gint ett_rrlp_OTD_MsrsOfOtherSets = -1;
+static gint ett_rrlp_OTD_Measurement = -1;
+static gint ett_rrlp_OTD_MeasurementWithID = -1;
+static gint ett_rrlp_EOTDQuality = -1;
+static gint ett_rrlp_NeighborIdentity = -1;
+static gint ett_rrlp_MultiFrameCarrier = -1;
+static gint ett_rrlp_LocationInfo = -1;
+static gint ett_rrlp_GPS_MeasureInfo = -1;
+static gint ett_rrlp_SeqOfGPS_MsrSetElement = -1;
+static gint ett_rrlp_GPS_MsrSetElement = -1;
+static gint ett_rrlp_SeqOfGPS_MsrElement = -1;
+static gint ett_rrlp_GPS_MsrElement = -1;
+static gint ett_rrlp_LocationError = -1;
+static gint ett_rrlp_AdditionalAssistanceData = -1;
+static gint ett_rrlp_GPS_AssistData = -1;
+static gint ett_rrlp_ControlHeader = -1;
+static gint ett_rrlp_ReferenceTime = -1;
+static gint ett_rrlp_GPSTime = -1;
+static gint ett_rrlp_GPSTOWAssist = -1;
+static gint ett_rrlp_GPSTOWAssistElement = -1;
+static gint ett_rrlp_GSMTime = -1;
+static gint ett_rrlp_RefLocation = -1;
+static gint ett_rrlp_DGPSCorrections = -1;
+static gint ett_rrlp_SeqOfSatElement = -1;
+static gint ett_rrlp_SatElement = -1;
+static gint ett_rrlp_NavigationModel = -1;
+static gint ett_rrlp_SeqOfNavModelElement = -1;
+static gint ett_rrlp_NavModelElement = -1;
+static gint ett_rrlp_SatStatus = -1;
+static gint ett_rrlp_UncompressedEphemeris = -1;
+static gint ett_rrlp_EphemerisSubframe1Reserved = -1;
+static gint ett_rrlp_IonosphericModel = -1;
+static gint ett_rrlp_UTCModel = -1;
+static gint ett_rrlp_Almanac = -1;
+static gint ett_rrlp_SeqOfAlmanacElement = -1;
+static gint ett_rrlp_AlmanacElement = -1;
+static gint ett_rrlp_AcquisAssist = -1;
+static gint ett_rrlp_SeqOfAcquisElement = -1;
+static gint ett_rrlp_TimeRelation = -1;
+static gint ett_rrlp_AcquisElement = -1;
+static gint ett_rrlp_AddionalDopplerFields = -1;
+static gint ett_rrlp_AddionalAngleFields = -1;
+static gint ett_rrlp_SeqOf_BadSatelliteSet = -1;
+static gint ett_rrlp_Rel98_MsrPosition_Req_Extension = -1;
+static gint ett_rrlp_Rel98_AssistanceData_Extension = -1;
+static gint ett_rrlp_Rel98_Ext_ExpOTD = -1;
+static gint ett_rrlp_MsrAssistData_R98_ExpOTD = -1;
+static gint ett_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD = -1;
+static gint ett_rrlp_MsrAssistBTS_R98_ExpOTD = -1;
+static gint ett_rrlp_SystemInfoAssistData_R98_ExpOTD = -1;
+static gint ett_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD = -1;
+static gint ett_rrlp_SystemInfoAssistBTS_R98_ExpOTD = -1;
+static gint ett_rrlp_AssistBTSData_R98_ExpOTD = -1;
+static gint ett_rrlp_GPSTimeAssistanceMeasurements = -1;
+static gint ett_rrlp_Rel_98_MsrPosition_Rsp_Extension = -1;
+static gint ett_rrlp_T_rel_98_Ext_MeasureInfo = -1;
+static gint ett_rrlp_OTD_MeasureInfo_R98_Ext = -1;
+static gint ett_rrlp_OTD_MsrElementFirst_R98_Ext = -1;
+static gint ett_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext = -1;
+static gint ett_rrlp_Rel_5_MsrPosition_Rsp_Extension = -1;
+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;
+
+/*--- End of included file: packet-rrlp-ett.c ---*/
+#line 62 "packet-rrlp-template.c"
+
+/* Include constants */
+
+/*--- Included file: packet-rrlp-val.h ---*/
+#line 1 "packet-rrlp-val.h"
+#define maxGPSAssistanceData 40
+
+/*--- End of included file: packet-rrlp-val.h ---*/
+#line 65 "packet-rrlp-template.c"
+
+/* If trying to use module import the "dissect_gsm_map_ExtensionContainer" will be wrongly constructed
+ * presumably because it assumes it will be PER encoded
+ */
+static int
+dissect_MAP_ExtensionDataTypes_ExtensionContainer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index){
+
+ return dissect_gsm_map_ExtensionContainer(TRUE, tvb, offset, pinfo, tree, hf_index);
+}
+
+static int
+dissect_MAP_LCS_DataTypes_Ext_GeographicalInformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index){
+
+ return dissect_gsm_map_Ext_GeographicalInformation(TRUE, tvb, offset, pinfo, tree, hf_index);
+}
+
+
+/*--- Included file: packet-rrlp-fn.c ---*/
+#line 1 "packet-rrlp-fn.c"
+/*--- Fields for imported types ---*/
+
+static int dissect_extensionContainer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_MAP_ExtensionDataTypes_ExtensionContainer(tvb, offset, pinfo, tree, hf_rrlp_extensionContainer);
+}
+static int dissect_posEstimate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_MAP_LCS_DataTypes_Ext_GeographicalInformation(tvb, offset, pinfo, tree, hf_rrlp_posEstimate);
+}
+static int dissect_threeDLocation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_MAP_LCS_DataTypes_Ext_GeographicalInformation(tvb, offset, pinfo, tree, hf_rrlp_threeDLocation);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_7(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 7U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_referenceNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_7(tvb, offset, pinfo, tree, hf_rrlp_referenceNumber);
+}
+static int dissect_nbrOfMeasurements(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_7(tvb, offset, pinfo, tree, hf_rrlp_nbrOfMeasurements);
+}
+static int dissect_status(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_7(tvb, offset, pinfo, tree, hf_rrlp_status);
+}
+static int dissect_dopplerUncertainty(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_7(tvb, offset, pinfo, tree, hf_rrlp_dopplerUncertainty);
+}
+static int dissect_elevation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_7(tvb, offset, pinfo, tree, hf_rrlp_elevation);
+}
+
+
+
+static int
+dissect_rrlp_Accuracy(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 127U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_msBased(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Accuracy(tvb, offset, pinfo, tree, hf_rrlp_msBased);
+}
+static int dissect_msBasedPref(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Accuracy(tvb, offset, pinfo, tree, hf_rrlp_msBasedPref);
+}
+static int dissect_msAssistedPref(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Accuracy(tvb, offset, pinfo, tree, hf_rrlp_msAssistedPref);
+}
+static int dissect_accuracy(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Accuracy(tvb, offset, pinfo, tree, hf_rrlp_accuracy);
+}
+
+
+static const per_sequence_t AccuracyOpt_sequence[] = {
+ { "accuracy" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_accuracy },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AccuracyOpt(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AccuracyOpt, AccuracyOpt_sequence);
+
+ return offset;
+}
+static int dissect_msAssisted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AccuracyOpt(tvb, offset, pinfo, tree, hf_rrlp_msAssisted);
+}
+
+
+static const value_string rrlp_MethodType_vals[] = {
+ { 0, "msAssisted" },
+ { 1, "msBased" },
+ { 2, "msBasedPref" },
+ { 3, "msAssistedPref" },
+ { 0, NULL }
+};
+
+static const per_choice_t MethodType_choice[] = {
+ { 0, "msAssisted" , ASN1_NO_EXTENSIONS , dissect_msAssisted },
+ { 1, "msBased" , ASN1_NO_EXTENSIONS , dissect_msBased },
+ { 2, "msBasedPref" , ASN1_NO_EXTENSIONS , dissect_msBasedPref },
+ { 3, "msAssistedPref" , ASN1_NO_EXTENSIONS , dissect_msAssistedPref },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_MethodType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MethodType, MethodType_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_methodType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MethodType(tvb, offset, pinfo, tree, hf_rrlp_methodType);
+}
+
+
+static const value_string rrlp_PositionMethod_vals[] = {
+ { 0, "eotd" },
+ { 1, "gps" },
+ { 2, "gpsOrEOTD" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_PositionMethod(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 2, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_positionMethod(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_PositionMethod(tvb, offset, pinfo, tree, hf_rrlp_positionMethod);
+}
+
+
+
+static int
+dissect_rrlp_MeasureResponseTime(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 7U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_measureResponseTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MeasureResponseTime(tvb, offset, pinfo, tree, hf_rrlp_measureResponseTime);
+}
+
+
+static const value_string rrlp_UseMultipleSets_vals[] = {
+ { 0, "multipleSets" },
+ { 1, "oneSet" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_UseMultipleSets(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 1, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_useMultipleSets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_UseMultipleSets(tvb, offset, pinfo, tree, hf_rrlp_useMultipleSets);
+}
+
+
+static const value_string rrlp_EnvironmentCharacter_vals[] = {
+ { 0, "badArea" },
+ { 1, "notBadArea" },
+ { 2, "mixedArea" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_EnvironmentCharacter(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 2, NULL, NULL, TRUE);
+
+ return offset;
+}
+static int dissect_environmentCharacter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_EnvironmentCharacter(tvb, offset, pinfo, tree, hf_rrlp_environmentCharacter);
+}
+
+
+static const per_sequence_t PositionInstruct_sequence[] = {
+ { "methodType" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_methodType },
+ { "positionMethod" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_positionMethod },
+ { "measureResponseTime" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_measureResponseTime },
+ { "useMultipleSets" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_useMultipleSets },
+ { "environmentCharacter" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_environmentCharacter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_PositionInstruct(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_PositionInstruct, PositionInstruct_sequence);
+
+ return offset;
+}
+static int dissect_positionInstruct(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_PositionInstruct(tvb, offset, pinfo, tree, hf_rrlp_positionInstruct);
+}
+
+
+
+static int
+dissect_rrlp_BCCHCarrier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1023U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_bcchCarrier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_BCCHCarrier(tvb, offset, pinfo, tree, hf_rrlp_bcchCarrier);
+}
+static int dissect_carrier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_BCCHCarrier(tvb, offset, pinfo, tree, hf_rrlp_carrier);
+}
+
+
+
+static int
+dissect_rrlp_BSIC(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 63U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_bsic(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_BSIC(tvb, offset, pinfo, tree, hf_rrlp_bsic);
+}
+
+
+static const value_string rrlp_TimeSlotScheme_vals[] = {
+ { 0, "equalLength" },
+ { 1, "variousLength" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_TimeSlotScheme(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 1, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_timeSlotScheme(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_TimeSlotScheme(tvb, offset, pinfo, tree, hf_rrlp_timeSlotScheme);
+}
+
+
+
+static int
+dissect_rrlp_BTSPosition(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_MAP_LCS_DataTypes_Ext_GeographicalInformation(tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_btsPosition(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_BTSPosition(tvb, offset, pinfo, tree, hf_rrlp_btsPosition);
+}
+
+
+static const per_sequence_t ReferenceAssistData_sequence[] = {
+ { "bcchCarrier" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bcchCarrier },
+ { "bsic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bsic },
+ { "timeSlotScheme" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_timeSlotScheme },
+ { "btsPosition" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_btsPosition },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceAssistData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ReferenceAssistData, ReferenceAssistData_sequence);
+
+ return offset;
+}
+static int dissect_referenceAssistData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ReferenceAssistData(tvb, offset, pinfo, tree, hf_rrlp_referenceAssistData);
+}
+
+
+
+static int
+dissect_rrlp_MultiFrameOffset(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 51U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_multiFrameOffset(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MultiFrameOffset(tvb, offset, pinfo, tree, hf_rrlp_multiFrameOffset);
+}
+
+
+
+static int
+dissect_rrlp_RoughRTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1250U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_roughRTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RoughRTD(tvb, offset, pinfo, tree, hf_rrlp_roughRTD);
+}
+
+
+
+static int
+dissect_rrlp_FineRTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 255U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_fineRTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_FineRTD(tvb, offset, pinfo, tree, hf_rrlp_fineRTD);
+}
+
+
+
+static int
+dissect_rrlp_RelDistance(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -200000, 200000U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_relativeNorth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RelDistance(tvb, offset, pinfo, tree, hf_rrlp_relativeNorth);
+}
+static int dissect_relativeEast(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RelDistance(tvb, offset, pinfo, tree, hf_rrlp_relativeEast);
+}
+
+
+
+static int
+dissect_rrlp_RelativeAlt(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -4000, 4000U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_relativeAlt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RelativeAlt(tvb, offset, pinfo, tree, hf_rrlp_relativeAlt);
+}
+
+
+static const per_sequence_t ReferenceWGS84_sequence[] = {
+ { "relativeNorth" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_relativeNorth },
+ { "relativeEast" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_relativeEast },
+ { "relativeAlt" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_relativeAlt },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceWGS84(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ReferenceWGS84, ReferenceWGS84_sequence);
+
+ return offset;
+}
+static int dissect_referenceWGS84(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ReferenceWGS84(tvb, offset, pinfo, tree, hf_rrlp_referenceWGS84);
+}
+
+
+static const per_sequence_t CalcAssistanceBTS_sequence[] = {
+ { "fineRTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_fineRTD },
+ { "referenceWGS84" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceWGS84 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_CalcAssistanceBTS(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_CalcAssistanceBTS, CalcAssistanceBTS_sequence);
+
+ return offset;
+}
+static int dissect_calcAssistanceBTS(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_CalcAssistanceBTS(tvb, offset, pinfo, tree, hf_rrlp_calcAssistanceBTS);
+}
+
+
+static const per_sequence_t MsrAssistBTS_sequence[] = {
+ { "bcchCarrier" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bcchCarrier },
+ { "bsic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bsic },
+ { "multiFrameOffset" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_multiFrameOffset },
+ { "timeSlotScheme" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_timeSlotScheme },
+ { "roughRTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_roughRTD },
+ { "calcAssistanceBTS" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_calcAssistanceBTS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MsrAssistBTS(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MsrAssistBTS, MsrAssistBTS_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfMsrAssistBTS_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MsrAssistBTS(tvb, offset, pinfo, tree, hf_rrlp_SeqOfMsrAssistBTS_item);
+}
+
+
+static const per_sequence_t SeqOfMsrAssistBTS_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfMsrAssistBTS_item },
+};
+
+static int
+dissect_rrlp_SeqOfMsrAssistBTS(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfMsrAssistBTS, SeqOfMsrAssistBTS_sequence_of,
+ 1, 15);
+
+ return offset;
+}
+static int dissect_msrAssistList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfMsrAssistBTS(tvb, offset, pinfo, tree, hf_rrlp_msrAssistList);
+}
+
+
+static const per_sequence_t MsrAssistData_sequence[] = {
+ { "msrAssistList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_msrAssistList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MsrAssistData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MsrAssistData, MsrAssistData_sequence);
+
+ return offset;
+}
+static int dissect_msrAssistData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MsrAssistData(tvb, offset, pinfo, tree, hf_rrlp_msrAssistData);
+}
+
+
+
+static int
+dissect_rrlp_NULL(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_null(tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_assistanceDataAck(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NULL(tvb, offset, pinfo, tree, hf_rrlp_assistanceDataAck);
+}
+static int dissect_notPresent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NULL(tvb, offset, pinfo, tree, hf_rrlp_notPresent);
+}
+static int dissect_oldSatelliteAndModel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NULL(tvb, offset, pinfo, tree, hf_rrlp_oldSatelliteAndModel);
+}
+static int dissect_gpsTimeAssistanceMeasurementRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NULL(tvb, offset, pinfo, tree, hf_rrlp_gpsTimeAssistanceMeasurementRequest);
+}
+
+
+static const per_sequence_t AssistBTSData_sequence[] = {
+ { "bsic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bsic },
+ { "multiFrameOffset" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_multiFrameOffset },
+ { "timeSlotScheme" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_timeSlotScheme },
+ { "roughRTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_roughRTD },
+ { "calcAssistanceBTS" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_calcAssistanceBTS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AssistBTSData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AssistBTSData, AssistBTSData_sequence);
+
+ return offset;
+}
+static int dissect_present(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AssistBTSData(tvb, offset, pinfo, tree, hf_rrlp_present);
+}
+
+
+static const value_string rrlp_SystemInfoAssistBTS_vals[] = {
+ { 0, "notPresent" },
+ { 1, "present" },
+ { 0, NULL }
+};
+
+static const per_choice_t SystemInfoAssistBTS_choice[] = {
+ { 0, "notPresent" , ASN1_NO_EXTENSIONS , dissect_notPresent },
+ { 1, "present" , ASN1_NO_EXTENSIONS , dissect_present },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_SystemInfoAssistBTS(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SystemInfoAssistBTS, SystemInfoAssistBTS_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_SeqOfSystemInfoAssistBTS_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SystemInfoAssistBTS(tvb, offset, pinfo, tree, hf_rrlp_SeqOfSystemInfoAssistBTS_item);
+}
+
+
+static const per_sequence_t SeqOfSystemInfoAssistBTS_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfSystemInfoAssistBTS_item },
+};
+
+static int
+dissect_rrlp_SeqOfSystemInfoAssistBTS(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfSystemInfoAssistBTS, SeqOfSystemInfoAssistBTS_sequence_of,
+ 1, 32);
+
+ return offset;
+}
+static int dissect_systemInfoAssistList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfSystemInfoAssistBTS(tvb, offset, pinfo, tree, hf_rrlp_systemInfoAssistList);
+}
+
+
+static const per_sequence_t SystemInfoAssistData_sequence[] = {
+ { "systemInfoAssistList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_systemInfoAssistList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_SystemInfoAssistData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SystemInfoAssistData, SystemInfoAssistData_sequence);
+
+ return offset;
+}
+static int dissect_systemInfoAssistData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SystemInfoAssistData(tvb, offset, pinfo, tree, hf_rrlp_systemInfoAssistData);
+}
+
+
+
+static int
+dissect_rrlp_GPSTOW23b(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 7559999U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsTOW23b(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTOW23b(tvb, offset, pinfo, tree, hf_rrlp_gpsTOW23b);
+}
+static int dissect_gpsTOW3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTOW23b(tvb, offset, pinfo, tree, hf_rrlp_gpsTOW3);
+}
+
+
+
+static int
+dissect_rrlp_GPSWeek(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1023U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsWeek(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSWeek(tvb, offset, pinfo, tree, hf_rrlp_gpsWeek);
+}
+
+
+static const per_sequence_t GPSTime_sequence[] = {
+ { "gpsTOW23b" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsTOW23b },
+ { "gpsWeek" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsWeek },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPSTime(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPSTime, GPSTime_sequence);
+
+ return offset;
+}
+static int dissect_gpsTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTime(tvb, offset, pinfo, tree, hf_rrlp_gpsTime);
+}
+
+
+
+static int
+dissect_rrlp_FrameNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 2097151U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_frameNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_FrameNumber(tvb, offset, pinfo, tree, hf_rrlp_frameNumber);
+}
+
+
+
+static int
+dissect_rrlp_TimeSlot(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 7U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_timeSlot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_TimeSlot(tvb, offset, pinfo, tree, hf_rrlp_timeSlot);
+}
+
+
+
+static int
+dissect_rrlp_BitNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 156U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_bitNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_BitNumber(tvb, offset, pinfo, tree, hf_rrlp_bitNumber);
+}
+
+
+static const per_sequence_t GSMTime_sequence[] = {
+ { "bcchCarrier" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bcchCarrier },
+ { "bsic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bsic },
+ { "frameNumber" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_frameNumber },
+ { "timeSlot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_timeSlot },
+ { "bitNumber" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bitNumber },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GSMTime(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GSMTime, GSMTime_sequence);
+
+ return offset;
+}
+static int dissect_gsmTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GSMTime(tvb, offset, pinfo, tree, hf_rrlp_gsmTime);
+}
+
+
+
+static int
+dissect_rrlp_SatelliteID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 63U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_satelliteID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SatelliteID(tvb, offset, pinfo, tree, hf_rrlp_satelliteID);
+}
+static int dissect_svid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SatelliteID(tvb, offset, pinfo, tree, hf_rrlp_svid);
+}
+static int dissect_SeqOf_BadSatelliteSet_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SatelliteID(tvb, offset, pinfo, tree, hf_rrlp_SeqOf_BadSatelliteSet_item);
+}
+
+
+
+static int
+dissect_rrlp_TLMWord(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 16383U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_tlmWord(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_TLMWord(tvb, offset, pinfo, tree, hf_rrlp_tlmWord);
+}
+
+
+
+static int
+dissect_rrlp_AntiSpoofFlag(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_antiSpoof(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AntiSpoofFlag(tvb, offset, pinfo, tree, hf_rrlp_antiSpoof);
+}
+
+
+
+static int
+dissect_rrlp_AlertFlag(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_alert(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AlertFlag(tvb, offset, pinfo, tree, hf_rrlp_alert);
+}
+
+
+
+static int
+dissect_rrlp_TLMReservedBits(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 3U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_tlmRsvdBits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_TLMReservedBits(tvb, offset, pinfo, tree, hf_rrlp_tlmRsvdBits);
+}
+
+
+static const per_sequence_t GPSTOWAssistElement_sequence[] = {
+ { "satelliteID" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satelliteID },
+ { "tlmWord" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tlmWord },
+ { "antiSpoof" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_antiSpoof },
+ { "alert" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alert },
+ { "tlmRsvdBits" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tlmRsvdBits },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPSTOWAssistElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPSTOWAssistElement, GPSTOWAssistElement_sequence);
+
+ return offset;
+}
+static int dissect_GPSTOWAssist_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTOWAssistElement(tvb, offset, pinfo, tree, hf_rrlp_GPSTOWAssist_item);
+}
+
+
+static const per_sequence_t GPSTOWAssist_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_GPSTOWAssist_item },
+};
+
+static int
+dissect_rrlp_GPSTOWAssist(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPSTOWAssist, GPSTOWAssist_sequence_of,
+ 1, 12);
+
+ return offset;
+}
+static int dissect_gpsTowAssist(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTOWAssist(tvb, offset, pinfo, tree, hf_rrlp_gpsTowAssist);
+}
+
+
+static const per_sequence_t ReferenceTime_sequence[] = {
+ { "gpsTime" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsTime },
+ { "gsmTime" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gsmTime },
+ { "gpsTowAssist" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gpsTowAssist },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceTime(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ReferenceTime, ReferenceTime_sequence);
+
+ return offset;
+}
+static int dissect_referenceTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ReferenceTime(tvb, offset, pinfo, tree, hf_rrlp_referenceTime);
+}
+
+
+static const per_sequence_t RefLocation_sequence[] = {
+ { "threeDLocation" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_threeDLocation },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_RefLocation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_RefLocation, RefLocation_sequence);
+
+ return offset;
+}
+static int dissect_refLocation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RefLocation(tvb, offset, pinfo, tree, hf_rrlp_refLocation);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_604799(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 604799U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsTOW2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_604799(tvb, offset, pinfo, tree, hf_rrlp_gpsTOW2);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_239(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 239U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_iode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_239(tvb, offset, pinfo, tree, hf_rrlp_iode);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_3(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 3U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_udre(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_3(tvb, offset, pinfo, tree, hf_rrlp_udre);
+}
+static int dissect_ephemCodeOnL2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_3(tvb, offset, pinfo, tree, hf_rrlp_ephemCodeOnL2);
+}
+static int dissect_gpsBitNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_3(tvb, offset, pinfo, tree, hf_rrlp_gpsBitNumber);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M2047_2047(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -2047, 2047U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_pseudoRangeCor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2047_2047(tvb, offset, pinfo, tree, hf_rrlp_pseudoRangeCor);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M127_127(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -127, 127U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_rangeRateCor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M127_127(tvb, offset, pinfo, tree, hf_rrlp_rangeRateCor);
+}
+static int dissect_deltaPseudoRangeCor2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M127_127(tvb, offset, pinfo, tree, hf_rrlp_deltaPseudoRangeCor2);
+}
+static int dissect_deltaPseudoRangeCor3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M127_127(tvb, offset, pinfo, tree, hf_rrlp_deltaPseudoRangeCor3);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M7_7(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -7, 7U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_deltaRangeRateCor2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M7_7(tvb, offset, pinfo, tree, hf_rrlp_deltaRangeRateCor2);
+}
+static int dissect_deltaRangeRateCor3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M7_7(tvb, offset, pinfo, tree, hf_rrlp_deltaRangeRateCor3);
+}
+
+
+static const per_sequence_t SatElement_sequence[] = {
+ { "satelliteID" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satelliteID },
+ { "iode" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_iode },
+ { "udre" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_udre },
+ { "pseudoRangeCor" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_pseudoRangeCor },
+ { "rangeRateCor" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rangeRateCor },
+ { "deltaPseudoRangeCor2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_deltaPseudoRangeCor2 },
+ { "deltaRangeRateCor2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_deltaRangeRateCor2 },
+ { "deltaPseudoRangeCor3" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_deltaPseudoRangeCor3 },
+ { "deltaRangeRateCor3" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_deltaRangeRateCor3 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_SatElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SatElement, SatElement_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfSatElement_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SatElement(tvb, offset, pinfo, tree, hf_rrlp_SeqOfSatElement_item);
+}
+
+
+static const per_sequence_t SeqOfSatElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfSatElement_item },
+};
+
+static int
+dissect_rrlp_SeqOfSatElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfSatElement, SeqOfSatElement_sequence_of,
+ 1, 16);
+
+ return offset;
+}
+static int dissect_satList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfSatElement(tvb, offset, pinfo, tree, hf_rrlp_satList);
+}
+
+
+static const per_sequence_t DGPSCorrections_sequence[] = {
+ { "gpsTOW" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsTOW2 },
+ { "status" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_status },
+ { "satList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_DGPSCorrections(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_DGPSCorrections, DGPSCorrections_sequence);
+
+ return offset;
+}
+static int dissect_dgpsCorrections(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_DGPSCorrections(tvb, offset, pinfo, tree, hf_rrlp_dgpsCorrections);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_15(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 15U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemURA(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_15(tvb, offset, pinfo, tree, hf_rrlp_ephemURA);
+}
+static int dissect_codePhaseSearchWindow(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_15(tvb, offset, pinfo, tree, hf_rrlp_codePhaseSearchWindow);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_63(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 63U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_cNo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_63(tvb, offset, pinfo, tree, hf_rrlp_cNo);
+}
+static int dissect_pseuRangeRMSErr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_63(tvb, offset, pinfo, tree, hf_rrlp_pseuRangeRMSErr);
+}
+static int dissect_ephemSVhealth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_63(tvb, offset, pinfo, tree, hf_rrlp_ephemSVhealth);
+}
+static int dissect_doppler1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_63(tvb, offset, pinfo, tree, hf_rrlp_doppler1);
+}
+static int dissect_referenceFrameMSB(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_63(tvb, offset, pinfo, tree, hf_rrlp_referenceFrameMSB);
+}
+static int dissect_smlc_code(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_63(tvb, offset, pinfo, tree, hf_rrlp_smlc_code);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_1023(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1023U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemIODC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_1023(tvb, offset, pinfo, tree, hf_rrlp_ephemIODC);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_1(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemL2Pflag(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_1(tvb, offset, pinfo, tree, hf_rrlp_ephemL2Pflag);
+}
+static int dissect_ephemFitFlag(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_1(tvb, offset, pinfo, tree, hf_rrlp_ephemFitFlag);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_8388607(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 8388607U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_reserved1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_8388607(tvb, offset, pinfo, tree, hf_rrlp_reserved1);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_16777215(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 16777215U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_reserved2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_16777215(tvb, offset, pinfo, tree, hf_rrlp_reserved2);
+}
+static int dissect_reserved3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_16777215(tvb, offset, pinfo, tree, hf_rrlp_reserved3);
+}
+static int dissect_almanacAPowerHalf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_16777215(tvb, offset, pinfo, tree, hf_rrlp_almanacAPowerHalf);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_65535(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 65535U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_refFrame(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_rrlp_refFrame);
+}
+static int dissect_reserved4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_rrlp_reserved4);
+}
+static int dissect_almanacE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_rrlp_almanacE);
+}
+
+
+static const per_sequence_t EphemerisSubframe1Reserved_sequence[] = {
+ { "reserved1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_reserved1 },
+ { "reserved2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_reserved2 },
+ { "reserved3" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_reserved3 },
+ { "reserved4" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_reserved4 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_EphemerisSubframe1Reserved(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_EphemerisSubframe1Reserved, EphemerisSubframe1Reserved_sequence);
+
+ return offset;
+}
+static int dissect_ephemSF1Rsvd(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_EphemerisSubframe1Reserved(tvb, offset, pinfo, tree, hf_rrlp_ephemSF1Rsvd);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M128_127(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -128, 127U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemTgd(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_ephemTgd);
+}
+static int dissect_ephemAF2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_ephemAF2);
+}
+static int dissect_alfa0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_alfa0);
+}
+static int dissect_alfa1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_alfa1);
+}
+static int dissect_alfa2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_alfa2);
+}
+static int dissect_alfa3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_alfa3);
+}
+static int dissect_beta0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_beta0);
+}
+static int dissect_beta1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_beta1);
+}
+static int dissect_beta2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_beta2);
+}
+static int dissect_beta3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_beta3);
+}
+static int dissect_utcDeltaTls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_utcDeltaTls);
+}
+static int dissect_utcDN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_utcDN);
+}
+static int dissect_utcDeltaTlsf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M128_127(tvb, offset, pinfo, tree, hf_rrlp_utcDeltaTlsf);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_37799(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 37799U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemToc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_37799(tvb, offset, pinfo, tree, hf_rrlp_ephemToc);
+}
+static int dissect_ephemToe(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_37799(tvb, offset, pinfo, tree, hf_rrlp_ephemToe);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M32768_32767(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -32768, 32767U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_doppler(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_doppler);
+}
+static int dissect_ephemAF1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemAF1);
+}
+static int dissect_ephemCrs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemCrs);
+}
+static int dissect_ephemDeltaN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemDeltaN);
+}
+static int dissect_ephemCuc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemCuc);
+}
+static int dissect_ephemCus(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemCus);
+}
+static int dissect_ephemCic(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemCic);
+}
+static int dissect_ephemCis(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemCis);
+}
+static int dissect_ephemCrc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_ephemCrc);
+}
+static int dissect_almanacKsii(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_almanacKsii);
+}
+static int dissect_almanacOmegaDot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M32768_32767(tvb, offset, pinfo, tree, hf_rrlp_almanacOmegaDot);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M2097152_2097151(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -2097152, 2097151U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemAF0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2097152_2097151(tvb, offset, pinfo, tree, hf_rrlp_ephemAF0);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M2147483648_2147483647(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -2147483648, 2147483647U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemM0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2147483648_2147483647(tvb, offset, pinfo, tree, hf_rrlp_ephemM0);
+}
+static int dissect_ephemOmegaA0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2147483648_2147483647(tvb, offset, pinfo, tree, hf_rrlp_ephemOmegaA0);
+}
+static int dissect_ephemI0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2147483648_2147483647(tvb, offset, pinfo, tree, hf_rrlp_ephemI0);
+}
+static int dissect_ephemW(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2147483648_2147483647(tvb, offset, pinfo, tree, hf_rrlp_ephemW);
+}
+static int dissect_utcA0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2147483648_2147483647(tvb, offset, pinfo, tree, hf_rrlp_utcA0);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_4294967295(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 4294967295U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_4294967295(tvb, offset, pinfo, tree, hf_rrlp_ephemE);
+}
+static int dissect_ephemAPowerHalf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_4294967295(tvb, offset, pinfo, tree, hf_rrlp_ephemAPowerHalf);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_31(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 31U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_stdOfEOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_31(tvb, offset, pinfo, tree, hf_rrlp_stdOfEOTD);
+}
+static int dissect_ephemAODA(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_31(tvb, offset, pinfo, tree, hf_rrlp_ephemAODA);
+}
+static int dissect_azimuth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_31(tvb, offset, pinfo, tree, hf_rrlp_azimuth);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M8388608_8388607(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -8388608, 8388607U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemOmegaADot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M8388608_8388607(tvb, offset, pinfo, tree, hf_rrlp_ephemOmegaADot);
+}
+static int dissect_utcA1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M8388608_8388607(tvb, offset, pinfo, tree, hf_rrlp_utcA1);
+}
+static int dissect_almanacOmega0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M8388608_8388607(tvb, offset, pinfo, tree, hf_rrlp_almanacOmega0);
+}
+static int dissect_almanacW(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M8388608_8388607(tvb, offset, pinfo, tree, hf_rrlp_almanacW);
+}
+static int dissect_almanacM0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M8388608_8388607(tvb, offset, pinfo, tree, hf_rrlp_almanacM0);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M8192_8191(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -8192, 8191U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ephemIDot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M8192_8191(tvb, offset, pinfo, tree, hf_rrlp_ephemIDot);
+}
+
+
+static const per_sequence_t UncompressedEphemeris_sequence[] = {
+ { "ephemCodeOnL2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCodeOnL2 },
+ { "ephemURA" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemURA },
+ { "ephemSVhealth" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemSVhealth },
+ { "ephemIODC" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemIODC },
+ { "ephemL2Pflag" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemL2Pflag },
+ { "ephemSF1Rsvd" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemSF1Rsvd },
+ { "ephemTgd" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemTgd },
+ { "ephemToc" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemToc },
+ { "ephemAF2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemAF2 },
+ { "ephemAF1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemAF1 },
+ { "ephemAF0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemAF0 },
+ { "ephemCrs" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCrs },
+ { "ephemDeltaN" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemDeltaN },
+ { "ephemM0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemM0 },
+ { "ephemCuc" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCuc },
+ { "ephemE" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemE },
+ { "ephemCus" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCus },
+ { "ephemAPowerHalf" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemAPowerHalf },
+ { "ephemToe" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemToe },
+ { "ephemFitFlag" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemFitFlag },
+ { "ephemAODA" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemAODA },
+ { "ephemCic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCic },
+ { "ephemOmegaA0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemOmegaA0 },
+ { "ephemCis" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCis },
+ { "ephemI0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemI0 },
+ { "ephemCrc" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemCrc },
+ { "ephemW" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemW },
+ { "ephemOmegaADot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemOmegaADot },
+ { "ephemIDot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ephemIDot },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_UncompressedEphemeris(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_UncompressedEphemeris, UncompressedEphemeris_sequence);
+
+ return offset;
+}
+static int dissect_newSatelliteAndModelUC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_UncompressedEphemeris(tvb, offset, pinfo, tree, hf_rrlp_newSatelliteAndModelUC);
+}
+static int dissect_newNaviModelUC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_UncompressedEphemeris(tvb, offset, pinfo, tree, hf_rrlp_newNaviModelUC);
+}
+
+
+static const value_string rrlp_SatStatus_vals[] = {
+ { 0, "newSatelliteAndModelUC" },
+ { 1, "oldSatelliteAndModel" },
+ { 2, "newNaviModelUC" },
+ { 0, NULL }
+};
+
+static const per_choice_t SatStatus_choice[] = {
+ { 0, "newSatelliteAndModelUC" , ASN1_EXTENSION_ROOT , dissect_newSatelliteAndModelUC },
+ { 1, "oldSatelliteAndModel" , ASN1_EXTENSION_ROOT , dissect_oldSatelliteAndModel },
+ { 2, "newNaviModelUC" , ASN1_EXTENSION_ROOT , dissect_newNaviModelUC },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_SatStatus(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SatStatus, SatStatus_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_satStatus(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SatStatus(tvb, offset, pinfo, tree, hf_rrlp_satStatus);
+}
+
+
+static const per_sequence_t NavModelElement_sequence[] = {
+ { "satelliteID" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satelliteID },
+ { "satStatus" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satStatus },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_NavModelElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_NavModelElement, NavModelElement_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfNavModelElement_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NavModelElement(tvb, offset, pinfo, tree, hf_rrlp_SeqOfNavModelElement_item);
+}
+
+
+static const per_sequence_t SeqOfNavModelElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfNavModelElement_item },
+};
+
+static int
+dissect_rrlp_SeqOfNavModelElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfNavModelElement, SeqOfNavModelElement_sequence_of,
+ 1, 16);
+
+ return offset;
+}
+static int dissect_navModelList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfNavModelElement(tvb, offset, pinfo, tree, hf_rrlp_navModelList);
+}
+
+
+static const per_sequence_t NavigationModel_sequence[] = {
+ { "navModelList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_navModelList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_NavigationModel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_NavigationModel, NavigationModel_sequence);
+
+ return offset;
+}
+static int dissect_navigationModel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NavigationModel(tvb, offset, pinfo, tree, hf_rrlp_navigationModel);
+}
+
+
+static const per_sequence_t IonosphericModel_sequence[] = {
+ { "alfa0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alfa0 },
+ { "alfa1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alfa1 },
+ { "alfa2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alfa2 },
+ { "alfa3" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alfa3 },
+ { "beta0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_beta0 },
+ { "beta1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_beta1 },
+ { "beta2" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_beta2 },
+ { "beta3" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_beta3 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_IonosphericModel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_IonosphericModel, IonosphericModel_sequence);
+
+ return offset;
+}
+static int dissect_ionosphericModel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_IonosphericModel(tvb, offset, pinfo, tree, hf_rrlp_ionosphericModel);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_255(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 255U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_utcTot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_255(tvb, offset, pinfo, tree, hf_rrlp_utcTot);
+}
+static int dissect_utcWNt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_255(tvb, offset, pinfo, tree, hf_rrlp_utcWNt);
+}
+static int dissect_utcWNlsf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_255(tvb, offset, pinfo, tree, hf_rrlp_utcWNlsf);
+}
+static int dissect_alamanacWNa(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_255(tvb, offset, pinfo, tree, hf_rrlp_alamanacWNa);
+}
+static int dissect_alamanacToa(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_255(tvb, offset, pinfo, tree, hf_rrlp_alamanacToa);
+}
+static int dissect_almanacSVhealth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_255(tvb, offset, pinfo, tree, hf_rrlp_almanacSVhealth);
+}
+
+
+static const per_sequence_t UTCModel_sequence[] = {
+ { "utcA1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcA1 },
+ { "utcA0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcA0 },
+ { "utcTot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcTot },
+ { "utcWNt" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcWNt },
+ { "utcDeltaTls" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcDeltaTls },
+ { "utcWNlsf" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcWNlsf },
+ { "utcDN" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcDN },
+ { "utcDeltaTlsf" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_utcDeltaTlsf },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_UTCModel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_UTCModel, UTCModel_sequence);
+
+ return offset;
+}
+static int dissect_utcModel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_UTCModel(tvb, offset, pinfo, tree, hf_rrlp_utcModel);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M1024_1023(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -1024, 1023U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_almanacAF0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M1024_1023(tvb, offset, pinfo, tree, hf_rrlp_almanacAF0);
+}
+static int dissect_almanacAF1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M1024_1023(tvb, offset, pinfo, tree, hf_rrlp_almanacAF1);
+}
+
+
+static const per_sequence_t AlmanacElement_sequence[] = {
+ { "satelliteID" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satelliteID },
+ { "almanacE" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacE },
+ { "alamanacToa" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alamanacToa },
+ { "almanacKsii" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacKsii },
+ { "almanacOmegaDot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacOmegaDot },
+ { "almanacSVhealth" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacSVhealth },
+ { "almanacAPowerHalf" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacAPowerHalf },
+ { "almanacOmega0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacOmega0 },
+ { "almanacW" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacW },
+ { "almanacM0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacM0 },
+ { "almanacAF0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacAF0 },
+ { "almanacAF1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacAF1 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AlmanacElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AlmanacElement, AlmanacElement_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfAlmanacElement_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AlmanacElement(tvb, offset, pinfo, tree, hf_rrlp_SeqOfAlmanacElement_item);
+}
+
+
+static const per_sequence_t SeqOfAlmanacElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfAlmanacElement_item },
+};
+
+static int
+dissect_rrlp_SeqOfAlmanacElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfAlmanacElement, SeqOfAlmanacElement_sequence_of,
+ 1, 64);
+
+ return offset;
+}
+static int dissect_almanacList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfAlmanacElement(tvb, offset, pinfo, tree, hf_rrlp_almanacList);
+}
+
+
+static const per_sequence_t Almanac_sequence[] = {
+ { "alamanacWNa" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_alamanacWNa },
+ { "almanacList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_almanacList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Almanac(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Almanac, Almanac_sequence);
+
+ return offset;
+}
+static int dissect_almanac(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Almanac(tvb, offset, pinfo, tree, hf_rrlp_almanac);
+}
+
+
+static const per_sequence_t TimeRelation_sequence[] = {
+ { "gpsTOW" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsTOW3 },
+ { "gsmTime" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gsmTime },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_TimeRelation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_TimeRelation, TimeRelation_sequence);
+
+ return offset;
+}
+static int dissect_timeRelation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_TimeRelation(tvb, offset, pinfo, tree, hf_rrlp_timeRelation);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_M2048_2047(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ -2048, 2047U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_doppler0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_M2048_2047(tvb, offset, pinfo, tree, hf_rrlp_doppler0);
+}
+
+
+static const per_sequence_t AddionalDopplerFields_sequence[] = {
+ { "doppler1" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_doppler1 },
+ { "dopplerUncertainty" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dopplerUncertainty },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AddionalDopplerFields(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AddionalDopplerFields, AddionalDopplerFields_sequence);
+
+ return offset;
+}
+static int dissect_addionalDoppler(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AddionalDopplerFields(tvb, offset, pinfo, tree, hf_rrlp_addionalDoppler);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_1022(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1022U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_wholeChips(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_1022(tvb, offset, pinfo, tree, hf_rrlp_wholeChips);
+}
+static int dissect_codePhase(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_1022(tvb, offset, pinfo, tree, hf_rrlp_codePhase);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_19(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 19U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_intCodePhase(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_19(tvb, offset, pinfo, tree, hf_rrlp_intCodePhase);
+}
+
+
+static const per_sequence_t AddionalAngleFields_sequence[] = {
+ { "azimuth" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_azimuth },
+ { "elevation" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_elevation },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AddionalAngleFields(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AddionalAngleFields, AddionalAngleFields_sequence);
+
+ return offset;
+}
+static int dissect_addionalAngle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AddionalAngleFields(tvb, offset, pinfo, tree, hf_rrlp_addionalAngle);
+}
+
+
+static const per_sequence_t AcquisElement_sequence[] = {
+ { "svid" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_svid },
+ { "doppler0" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_doppler0 },
+ { "addionalDoppler" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_addionalDoppler },
+ { "codePhase" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_codePhase },
+ { "intCodePhase" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_intCodePhase },
+ { "gpsBitNumber" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsBitNumber },
+ { "codePhaseSearchWindow" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_codePhaseSearchWindow },
+ { "addionalAngle" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_addionalAngle },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AcquisElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AcquisElement, AcquisElement_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfAcquisElement_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AcquisElement(tvb, offset, pinfo, tree, hf_rrlp_SeqOfAcquisElement_item);
+}
+
+
+static const per_sequence_t SeqOfAcquisElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfAcquisElement_item },
+};
+
+static int
+dissect_rrlp_SeqOfAcquisElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfAcquisElement, SeqOfAcquisElement_sequence_of,
+ 1, 16);
+
+ return offset;
+}
+static int dissect_acquisList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfAcquisElement(tvb, offset, pinfo, tree, hf_rrlp_acquisList);
+}
+
+
+static const per_sequence_t AcquisAssist_sequence[] = {
+ { "timeRelation" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_timeRelation },
+ { "acquisList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_acquisList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AcquisAssist(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AcquisAssist, AcquisAssist_sequence);
+
+ return offset;
+}
+static int dissect_acquisAssist(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AcquisAssist(tvb, offset, pinfo, tree, hf_rrlp_acquisAssist);
+}
+
+
+static const per_sequence_t SeqOf_BadSatelliteSet_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOf_BadSatelliteSet_item },
+};
+
+static int
+dissect_rrlp_SeqOf_BadSatelliteSet(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOf_BadSatelliteSet, SeqOf_BadSatelliteSet_sequence_of,
+ 1, 16);
+
+ return offset;
+}
+static int dissect_realTimeIntegrity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOf_BadSatelliteSet(tvb, offset, pinfo, tree, hf_rrlp_realTimeIntegrity);
+}
+
+
+static const per_sequence_t ControlHeader_sequence[] = {
+ { "referenceTime" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_referenceTime },
+ { "refLocation" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_refLocation },
+ { "dgpsCorrections" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dgpsCorrections },
+ { "navigationModel" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_navigationModel },
+ { "ionosphericModel" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ionosphericModel },
+ { "utcModel" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_utcModel },
+ { "almanac" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_almanac },
+ { "acquisAssist" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_acquisAssist },
+ { "realTimeIntegrity" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_realTimeIntegrity },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ControlHeader(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ControlHeader, ControlHeader_sequence);
+
+ return offset;
+}
+static int dissect_controlHeader(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ControlHeader(tvb, offset, pinfo, tree, hf_rrlp_controlHeader);
+}
+
+
+static const per_sequence_t GPS_AssistData_sequence[] = {
+ { "controlHeader" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_controlHeader },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPS_AssistData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPS_AssistData, GPS_AssistData_sequence);
+
+ return offset;
+}
+static int dissect_gps_AssistData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPS_AssistData(tvb, offset, pinfo, tree, hf_rrlp_gps_AssistData);
+}
+
+
+
+static int
+dissect_rrlp_ExpectedOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1250U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_expectedOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ExpectedOTD(tvb, offset, pinfo, tree, hf_rrlp_expectedOTD);
+}
+
+
+
+static int
+dissect_rrlp_ExpOTDUncertainty(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 7U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_expOTDUncertainty(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ExpOTDUncertainty(tvb, offset, pinfo, tree, hf_rrlp_expOTDUncertainty);
+}
+static int dissect_expOTDuncertainty(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ExpOTDUncertainty(tvb, offset, pinfo, tree, hf_rrlp_expOTDuncertainty);
+}
+
+
+static const per_sequence_t MsrAssistBTS_R98_ExpOTD_sequence[] = {
+ { "expectedOTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_expectedOTD },
+ { "expOTDUncertainty" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_expOTDUncertainty },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MsrAssistBTS_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MsrAssistBTS_R98_ExpOTD, MsrAssistBTS_R98_ExpOTD_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfMsrAssistBTS_R98_ExpOTD_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MsrAssistBTS_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD_item);
+}
+
+
+static const per_sequence_t SeqOfMsrAssistBTS_R98_ExpOTD_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfMsrAssistBTS_R98_ExpOTD_item },
+};
+
+static int
+dissect_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD, SeqOfMsrAssistBTS_R98_ExpOTD_sequence_of,
+ 1, 15);
+
+ return offset;
+}
+static int dissect_msrAssistList_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_msrAssistList_R98_ExpOTD);
+}
+
+
+static const per_sequence_t MsrAssistData_R98_ExpOTD_sequence[] = {
+ { "msrAssistList-R98-ExpOTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_msrAssistList_R98_ExpOTD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MsrAssistData_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MsrAssistData_R98_ExpOTD, MsrAssistData_R98_ExpOTD_sequence);
+
+ return offset;
+}
+static int dissect_msrAssistData_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MsrAssistData_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_msrAssistData_R98_ExpOTD);
+}
+
+
+static const per_sequence_t AssistBTSData_R98_ExpOTD_sequence[] = {
+ { "expectedOTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_expectedOTD },
+ { "expOTDuncertainty" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_expOTDuncertainty },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AssistBTSData_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AssistBTSData_R98_ExpOTD, AssistBTSData_R98_ExpOTD_sequence);
+
+ return offset;
+}
+static int dissect_present1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AssistBTSData_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_present1);
+}
+
+
+static const value_string rrlp_SystemInfoAssistBTS_R98_ExpOTD_vals[] = {
+ { 0, "notPresent" },
+ { 1, "present" },
+ { 0, NULL }
+};
+
+static const per_choice_t SystemInfoAssistBTS_R98_ExpOTD_choice[] = {
+ { 0, "notPresent" , ASN1_NO_EXTENSIONS , dissect_notPresent },
+ { 1, "present" , ASN1_NO_EXTENSIONS , dissect_present1 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_SystemInfoAssistBTS_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SystemInfoAssistBTS_R98_ExpOTD, SystemInfoAssistBTS_R98_ExpOTD_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_SeqOfSystemInfoAssistBTS_R98_ExpOTD_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SystemInfoAssistBTS_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD_item);
+}
+
+
+static const per_sequence_t SeqOfSystemInfoAssistBTS_R98_ExpOTD_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfSystemInfoAssistBTS_R98_ExpOTD_item },
+};
+
+static int
+dissect_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD, SeqOfSystemInfoAssistBTS_R98_ExpOTD_sequence_of,
+ 1, 32);
+
+ return offset;
+}
+static int dissect_systemInfoAssistListR98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_systemInfoAssistListR98_ExpOTD);
+}
+
+
+static const per_sequence_t SystemInfoAssistData_R98_ExpOTD_sequence[] = {
+ { "systemInfoAssistListR98-ExpOTD", ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_systemInfoAssistListR98_ExpOTD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_SystemInfoAssistData_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SystemInfoAssistData_R98_ExpOTD, SystemInfoAssistData_R98_ExpOTD_sequence);
+
+ return offset;
+}
+static int dissect_systemInfoAssistData_R98_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SystemInfoAssistData_R98_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_systemInfoAssistData_R98_ExpOTD);
+}
+
+
+static const per_sequence_t Rel98_Ext_ExpOTD_sequence[] = {
+ { "msrAssistData-R98-ExpOTD" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_msrAssistData_R98_ExpOTD },
+ { "systemInfoAssistData-R98-ExpOTD", ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_systemInfoAssistData_R98_ExpOTD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel98_Ext_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel98_Ext_ExpOTD, Rel98_Ext_ExpOTD_sequence);
+
+ return offset;
+}
+static int dissect_rel98_Ext_ExpOTD(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel98_Ext_ExpOTD(tvb, offset, pinfo, tree, hf_rrlp_rel98_Ext_ExpOTD);
+}
+
+
+
+static int
+dissect_rrlp_GPSReferenceTimeUncertainty(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 127U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsReferenceTimeUncertainty(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSReferenceTimeUncertainty(tvb, offset, pinfo, tree, hf_rrlp_gpsReferenceTimeUncertainty);
+}
+
+
+static const per_sequence_t Rel98_MsrPosition_Req_Extension_sequence[] = {
+ { "rel98-Ext-ExpOTD" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rel98_Ext_ExpOTD },
+ { "gpsTimeAssistanceMeasurementRequest", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_gpsTimeAssistanceMeasurementRequest },
+ { "gpsReferenceTimeUncertainty" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_gpsReferenceTimeUncertainty },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel98_MsrPosition_Req_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel98_MsrPosition_Req_Extension, Rel98_MsrPosition_Req_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel98_MsrPosition_Req_extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel98_MsrPosition_Req_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel98_MsrPosition_Req_extension);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_262143(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 262143U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_transaction_ID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_262143(tvb, offset, pinfo, tree, hf_rrlp_transaction_ID);
+}
+
+
+static const per_sequence_t Extended_reference_sequence[] = {
+ { "smlc-code" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_smlc_code },
+ { "transaction-ID" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_transaction_ID },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Extended_reference(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Extended_reference, Extended_reference_sequence);
+
+ return offset;
+}
+static int dissect_extended_reference(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Extended_reference(tvb, offset, pinfo, tree, hf_rrlp_extended_reference);
+}
+
+
+static const per_sequence_t Rel5_MsrPosition_Req_Extension_sequence[] = {
+ { "extended-reference" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_extended_reference },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel5_MsrPosition_Req_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel5_MsrPosition_Req_Extension, Rel5_MsrPosition_Req_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel5_MsrPosition_Req_extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel5_MsrPosition_Req_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel5_MsrPosition_Req_extension);
+}
+
+
+static const per_sequence_t MsrPosition_Req_sequence[] = {
+ { "positionInstruct" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_positionInstruct },
+ { "referenceAssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_referenceAssistData },
+ { "msrAssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_msrAssistData },
+ { "systemInfoAssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_systemInfoAssistData },
+ { "gps-AssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_gps_AssistData },
+ { "extensionContainer" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extensionContainer },
+ { "rel98-MsrPosition-Req-extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel98_MsrPosition_Req_extension },
+ { "rel5-MsrPosition-Req-extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel5_MsrPosition_Req_extension },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MsrPosition_Req(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MsrPosition_Req, MsrPosition_Req_sequence);
+
+ return offset;
+}
+static int dissect_msrPositionReq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MsrPosition_Req(tvb, offset, pinfo, tree, hf_rrlp_msrPositionReq);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_2_3(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 2U, 3U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_nbrOfSets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_2_3(tvb, offset, pinfo, tree, hf_rrlp_nbrOfSets);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_1_3(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 1U, 3U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_nbrOfReferenceBTSs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_1_3(tvb, offset, pinfo, tree, hf_rrlp_nbrOfReferenceBTSs);
+}
+
+
+static const value_string rrlp_ReferenceRelation_vals[] = {
+ { 0, "secondBTSThirdSet" },
+ { 1, "secondBTSSecondSet" },
+ { 2, "firstBTSFirstSet" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_ReferenceRelation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 2, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_referenceRelation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ReferenceRelation(tvb, offset, pinfo, tree, hf_rrlp_referenceRelation);
+}
+
+
+static const per_sequence_t MultipleSets_sequence[] = {
+ { "nbrOfSets" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nbrOfSets },
+ { "nbrOfReferenceBTSs" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nbrOfReferenceBTSs },
+ { "referenceRelation" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_referenceRelation },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MultipleSets(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MultipleSets, MultipleSets_sequence);
+
+ return offset;
+}
+static int dissect_multipleSets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MultipleSets(tvb, offset, pinfo, tree, hf_rrlp_multipleSets);
+}
+
+
+static const per_sequence_t BSICAndCarrier_sequence[] = {
+ { "carrier" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_carrier },
+ { "bsic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bsic },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_BSICAndCarrier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_BSICAndCarrier, BSICAndCarrier_sequence);
+
+ return offset;
+}
+static int dissect_bsicAndCarrier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_BSICAndCarrier(tvb, offset, pinfo, tree, hf_rrlp_bsicAndCarrier);
+}
+
+
+
+static int
+dissect_rrlp_CellID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 65535U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ci(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_CellID(tvb, offset, pinfo, tree, hf_rrlp_ci);
+}
+static int dissect_referenceCI(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_CellID(tvb, offset, pinfo, tree, hf_rrlp_referenceCI);
+}
+
+
+
+static int
+dissect_rrlp_RequestIndex(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 1U, 16U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_requestIndex(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RequestIndex(tvb, offset, pinfo, tree, hf_rrlp_requestIndex);
+}
+
+
+
+static int
+dissect_rrlp_SystemInfoIndex(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 1U, 32U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_systemInfoIndex(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SystemInfoIndex(tvb, offset, pinfo, tree, hf_rrlp_systemInfoIndex);
+}
+
+
+
+static int
+dissect_rrlp_LAC(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 65535U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_referenceLAC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_LAC(tvb, offset, pinfo, tree, hf_rrlp_referenceLAC);
+}
+
+
+static const per_sequence_t CellIDAndLAC_sequence[] = {
+ { "referenceLAC" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceLAC },
+ { "referenceCI" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceCI },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_CellIDAndLAC(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_CellIDAndLAC, CellIDAndLAC_sequence);
+
+ return offset;
+}
+static int dissect_ciAndLAC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_CellIDAndLAC(tvb, offset, pinfo, tree, hf_rrlp_ciAndLAC);
+}
+
+
+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, "bsicAndCarrier" , ASN1_NO_EXTENSIONS , dissect_bsicAndCarrier },
+ { 1, "ci" , ASN1_NO_EXTENSIONS , dissect_ci },
+ { 2, "requestIndex" , ASN1_NO_EXTENSIONS , dissect_requestIndex },
+ { 3, "systemInfoIndex" , ASN1_NO_EXTENSIONS , dissect_systemInfoIndex },
+ { 4, "ciAndLAC" , ASN1_NO_EXTENSIONS , dissect_ciAndLAC },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceIdentityType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ReferenceIdentityType, ReferenceIdentityType_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_SeqOfReferenceIdentityType_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ReferenceIdentityType(tvb, offset, pinfo, tree, hf_rrlp_SeqOfReferenceIdentityType_item);
+}
+
+
+static const per_sequence_t SeqOfReferenceIdentityType_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfReferenceIdentityType_item },
+};
+
+static int
+dissect_rrlp_SeqOfReferenceIdentityType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfReferenceIdentityType, SeqOfReferenceIdentityType_sequence_of,
+ 1, 3);
+
+ return offset;
+}
+static int dissect_refBTSList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfReferenceIdentityType(tvb, offset, pinfo, tree, hf_rrlp_refBTSList);
+}
+
+
+static const per_sequence_t ReferenceIdentity_sequence[] = {
+ { "refBTSList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_refBTSList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ReferenceIdentity(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ReferenceIdentity, ReferenceIdentity_sequence);
+
+ return offset;
+}
+static int dissect_referenceIdentity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ReferenceIdentity(tvb, offset, pinfo, tree, hf_rrlp_referenceIdentity);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_42431(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 42431U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_refFrameNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_42431(tvb, offset, pinfo, tree, hf_rrlp_refFrameNumber);
+}
+
+
+
+static int
+dissect_rrlp_ModuloTimeSlot(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 3U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_referenceTimeSlot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ModuloTimeSlot(tvb, offset, pinfo, tree, hf_rrlp_referenceTimeSlot);
+}
+static int dissect_nborTimeSlot(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ModuloTimeSlot(tvb, offset, pinfo, tree, hf_rrlp_nborTimeSlot);
+}
+
+
+
+static int
+dissect_rrlp_RefQuality(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 31U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_refQuality(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RefQuality(tvb, offset, pinfo, tree, hf_rrlp_refQuality);
+}
+
+
+
+static int
+dissect_rrlp_NumOfMeasurements(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 7U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_numOfMeasurements(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NumOfMeasurements(tvb, offset, pinfo, tree, hf_rrlp_numOfMeasurements);
+}
+
+
+static const per_sequence_t TOA_MeasurementsOfRef_sequence[] = {
+ { "refQuality" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_refQuality },
+ { "numOfMeasurements" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_numOfMeasurements },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_TOA_MeasurementsOfRef(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_TOA_MeasurementsOfRef, TOA_MeasurementsOfRef_sequence);
+
+ return offset;
+}
+static int dissect_toaMeasurementsOfRef(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_TOA_MeasurementsOfRef(tvb, offset, pinfo, tree, hf_rrlp_toaMeasurementsOfRef);
+}
+
+
+
+static int
+dissect_rrlp_StdResolution(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 3U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_stdResolution(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_StdResolution(tvb, offset, pinfo, tree, hf_rrlp_stdResolution);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_960(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 960U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_taCorrection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_960(tvb, offset, pinfo, tree, hf_rrlp_taCorrection);
+}
+
+
+static const per_sequence_t MultiFrameCarrier_sequence[] = {
+ { "bcchCarrier" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_bcchCarrier },
+ { "multiFrameOffset" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_multiFrameOffset },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MultiFrameCarrier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MultiFrameCarrier, MultiFrameCarrier_sequence);
+
+ return offset;
+}
+static int dissect_multiFrameCarrier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MultiFrameCarrier(tvb, offset, pinfo, tree, hf_rrlp_multiFrameCarrier);
+}
+
+
+static const value_string rrlp_NeighborIdentity_vals[] = {
+ { 0, "bsicAndCarrier" },
+ { 1, "ci" },
+ { 2, "multiFrameCarrier" },
+ { 3, "requestIndex" },
+ { 4, "systemInfoIndex" },
+ { 5, "ciAndLAC" },
+ { 0, NULL }
+};
+
+static const per_choice_t NeighborIdentity_choice[] = {
+ { 0, "bsicAndCarrier" , ASN1_NO_EXTENSIONS , dissect_bsicAndCarrier },
+ { 1, "ci" , ASN1_NO_EXTENSIONS , dissect_ci },
+ { 2, "multiFrameCarrier" , ASN1_NO_EXTENSIONS , dissect_multiFrameCarrier },
+ { 3, "requestIndex" , ASN1_NO_EXTENSIONS , dissect_requestIndex },
+ { 4, "systemInfoIndex" , ASN1_NO_EXTENSIONS , dissect_systemInfoIndex },
+ { 5, "ciAndLAC" , ASN1_NO_EXTENSIONS , dissect_ciAndLAC },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_NeighborIdentity(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_NeighborIdentity, NeighborIdentity_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_neighborIdentity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_NeighborIdentity(tvb, offset, pinfo, tree, hf_rrlp_neighborIdentity);
+}
+
+
+static const per_sequence_t EOTDQuality_sequence[] = {
+ { "nbrOfMeasurements" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nbrOfMeasurements },
+ { "stdOfEOTD" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_stdOfEOTD },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_EOTDQuality(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_EOTDQuality, EOTDQuality_sequence);
+
+ return offset;
+}
+static int dissect_eotdQuality(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_EOTDQuality(tvb, offset, pinfo, tree, hf_rrlp_eotdQuality);
+}
+
+
+
+static int
+dissect_rrlp_OTDValue(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 39999U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_otdValue(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTDValue(tvb, offset, pinfo, tree, hf_rrlp_otdValue);
+}
+
+
+static const per_sequence_t OTD_MeasurementWithID_sequence[] = {
+ { "neighborIdentity" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_neighborIdentity },
+ { "nborTimeSlot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nborTimeSlot },
+ { "eotdQuality" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_eotdQuality },
+ { "otdValue" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_otdValue },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MeasurementWithID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MeasurementWithID, OTD_MeasurementWithID_sequence);
+
+ return offset;
+}
+static int dissect_identityPresent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MeasurementWithID(tvb, offset, pinfo, tree, hf_rrlp_identityPresent);
+}
+
+
+
+static int
+dissect_rrlp_OTD_FirstSetMsrs(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_rrlp_OTD_MeasurementWithID(tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_SeqOfOTD_FirstSetMsrs_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_FirstSetMsrs(tvb, offset, pinfo, tree, hf_rrlp_SeqOfOTD_FirstSetMsrs_item);
+}
+static int dissect_SeqOfOTD_FirstSetMsrs_R98_Ext_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_FirstSetMsrs(tvb, offset, pinfo, tree, hf_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext_item);
+}
+
+
+static const per_sequence_t SeqOfOTD_FirstSetMsrs_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfOTD_FirstSetMsrs_item },
+};
+
+static int
+dissect_rrlp_SeqOfOTD_FirstSetMsrs(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfOTD_FirstSetMsrs, SeqOfOTD_FirstSetMsrs_sequence_of,
+ 1, 10);
+
+ return offset;
+}
+static int dissect_otd_FirstSetMsrs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfOTD_FirstSetMsrs(tvb, offset, pinfo, tree, hf_rrlp_otd_FirstSetMsrs);
+}
+
+
+static const per_sequence_t OTD_MsrElementFirst_sequence[] = {
+ { "refFrameNumber" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_refFrameNumber },
+ { "referenceTimeSlot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceTimeSlot },
+ { "toaMeasurementsOfRef" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_toaMeasurementsOfRef },
+ { "stdResolution" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_stdResolution },
+ { "taCorrection" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_taCorrection },
+ { "otd-FirstSetMsrs" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_otd_FirstSetMsrs },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MsrElementFirst(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MsrElementFirst, OTD_MsrElementFirst_sequence);
+
+ return offset;
+}
+static int dissect_otdMsrFirstSets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MsrElementFirst(tvb, offset, pinfo, tree, hf_rrlp_otdMsrFirstSets);
+}
+
+
+static const per_sequence_t OTD_Measurement_sequence[] = {
+ { "nborTimeSlot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_nborTimeSlot },
+ { "eotdQuality" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_eotdQuality },
+ { "otdValue" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_otdValue },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_Measurement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_Measurement, OTD_Measurement_sequence);
+
+ return offset;
+}
+static int dissect_identityNotPresent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_Measurement(tvb, offset, pinfo, tree, hf_rrlp_identityNotPresent);
+}
+
+
+static const value_string rrlp_OTD_MsrsOfOtherSets_vals[] = {
+ { 0, "identityNotPresent" },
+ { 1, "identityPresent" },
+ { 0, NULL }
+};
+
+static const per_choice_t OTD_MsrsOfOtherSets_choice[] = {
+ { 0, "identityNotPresent" , ASN1_NO_EXTENSIONS , dissect_identityNotPresent },
+ { 1, "identityPresent" , ASN1_NO_EXTENSIONS , dissect_identityPresent },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MsrsOfOtherSets(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MsrsOfOtherSets, OTD_MsrsOfOtherSets_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_SeqOfOTD_MsrsOfOtherSets_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MsrsOfOtherSets(tvb, offset, pinfo, tree, hf_rrlp_SeqOfOTD_MsrsOfOtherSets_item);
+}
+
+
+static const per_sequence_t SeqOfOTD_MsrsOfOtherSets_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfOTD_MsrsOfOtherSets_item },
+};
+
+static int
+dissect_rrlp_SeqOfOTD_MsrsOfOtherSets(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfOTD_MsrsOfOtherSets, SeqOfOTD_MsrsOfOtherSets_sequence_of,
+ 1, 10);
+
+ return offset;
+}
+static int dissect_otd_MsrsOfOtherSets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfOTD_MsrsOfOtherSets(tvb, offset, pinfo, tree, hf_rrlp_otd_MsrsOfOtherSets);
+}
+
+
+static const per_sequence_t OTD_MsrElementRest_sequence[] = {
+ { "refFrameNumber" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_refFrameNumber },
+ { "referenceTimeSlot" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceTimeSlot },
+ { "toaMeasurementsOfRef" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_toaMeasurementsOfRef },
+ { "stdResolution" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_stdResolution },
+ { "taCorrection" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_taCorrection },
+ { "otd-MsrsOfOtherSets" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_otd_MsrsOfOtherSets },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MsrElementRest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MsrElementRest, OTD_MsrElementRest_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfOTD_MsrElementRest_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MsrElementRest(tvb, offset, pinfo, tree, hf_rrlp_SeqOfOTD_MsrElementRest_item);
+}
+
+
+static const per_sequence_t SeqOfOTD_MsrElementRest_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfOTD_MsrElementRest_item },
+};
+
+static int
+dissect_rrlp_SeqOfOTD_MsrElementRest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfOTD_MsrElementRest, SeqOfOTD_MsrElementRest_sequence_of,
+ 1, 2);
+
+ return offset;
+}
+static int dissect_otdMsrRestSets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfOTD_MsrElementRest(tvb, offset, pinfo, tree, hf_rrlp_otdMsrRestSets);
+}
+
+
+static const per_sequence_t OTD_MeasureInfo_sequence[] = {
+ { "otdMsrFirstSets" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_otdMsrFirstSets },
+ { "otdMsrRestSets" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_otdMsrRestSets },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MeasureInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MeasureInfo, OTD_MeasureInfo_sequence);
+
+ return offset;
+}
+static int dissect_otd_MeasureInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MeasureInfo(tvb, offset, pinfo, tree, hf_rrlp_otd_MeasureInfo);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_14399999(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 14399999U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsTOW(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_14399999(tvb, offset, pinfo, tree, hf_rrlp_gpsTOW);
+}
+
+
+static const value_string rrlp_FixType_vals[] = {
+ { 0, "twoDFix" },
+ { 1, "threeDFix" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_FixType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_fixType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_FixType(tvb, offset, pinfo, tree, hf_rrlp_fixType);
+}
+
+
+static const per_sequence_t LocationInfo_sequence[] = {
+ { "refFrame" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_refFrame },
+ { "gpsTOW" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gpsTOW },
+ { "fixType" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_fixType },
+ { "posEstimate" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_posEstimate },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_LocationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_LocationInfo, LocationInfo_sequence);
+
+ return offset;
+}
+static int dissect_locationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_LocationInfo(tvb, offset, pinfo, tree, hf_rrlp_locationInfo);
+}
+
+
+
+static int
+dissect_rrlp_GPSTOW24b(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 14399999U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsTOW1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTOW24b(tvb, offset, pinfo, tree, hf_rrlp_gpsTOW1);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_1024(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 1024U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_fracChips(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_1024(tvb, offset, pinfo, tree, hf_rrlp_fracChips);
+}
+
+
+static const value_string rrlp_MpathIndic_vals[] = {
+ { 0, "notMeasured" },
+ { 1, "low" },
+ { 2, "medium" },
+ { 3, "high" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_MpathIndic(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 3, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_mpathIndic(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MpathIndic(tvb, offset, pinfo, tree, hf_rrlp_mpathIndic);
+}
+
+
+static const per_sequence_t GPS_MsrElement_sequence[] = {
+ { "satelliteID" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_satelliteID },
+ { "cNo" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cNo },
+ { "doppler" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_doppler },
+ { "wholeChips" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_wholeChips },
+ { "fracChips" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_fracChips },
+ { "mpathIndic" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_mpathIndic },
+ { "pseuRangeRMSErr" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_pseuRangeRMSErr },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPS_MsrElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPS_MsrElement, GPS_MsrElement_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfGPS_MsrElement_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPS_MsrElement(tvb, offset, pinfo, tree, hf_rrlp_SeqOfGPS_MsrElement_item);
+}
+
+
+static const per_sequence_t SeqOfGPS_MsrElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfGPS_MsrElement_item },
+};
+
+static int
+dissect_rrlp_SeqOfGPS_MsrElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfGPS_MsrElement, SeqOfGPS_MsrElement_sequence_of,
+ 1, 16);
+
+ return offset;
+}
+static int dissect_gps_msrList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfGPS_MsrElement(tvb, offset, pinfo, tree, hf_rrlp_gps_msrList);
+}
+
+
+static const per_sequence_t GPS_MsrSetElement_sequence[] = {
+ { "refFrame" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_refFrame },
+ { "gpsTOW" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsTOW1 },
+ { "gps-msrList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gps_msrList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPS_MsrSetElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPS_MsrSetElement, GPS_MsrSetElement_sequence);
+
+ return offset;
+}
+static int dissect_SeqOfGPS_MsrSetElement_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPS_MsrSetElement(tvb, offset, pinfo, tree, hf_rrlp_SeqOfGPS_MsrSetElement_item);
+}
+
+
+static const per_sequence_t SeqOfGPS_MsrSetElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfGPS_MsrSetElement_item },
+};
+
+static int
+dissect_rrlp_SeqOfGPS_MsrSetElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfGPS_MsrSetElement, SeqOfGPS_MsrSetElement_sequence_of,
+ 1, 3);
+
+ return offset;
+}
+static int dissect_gpsMsrSetList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfGPS_MsrSetElement(tvb, offset, pinfo, tree, hf_rrlp_gpsMsrSetList);
+}
+
+
+static const per_sequence_t GPS_MeasureInfo_sequence[] = {
+ { "gpsMsrSetList" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gpsMsrSetList },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPS_MeasureInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPS_MeasureInfo, GPS_MeasureInfo_sequence);
+
+ return offset;
+}
+static int dissect_gps_MeasureInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPS_MeasureInfo(tvb, offset, pinfo, tree, hf_rrlp_gps_MeasureInfo);
+}
+
+
+static const value_string rrlp_LocErrorReason_vals[] = {
+ { 0, "unDefined" },
+ { 1, "notEnoughBTSs" },
+ { 2, "notEnoughSats" },
+ { 3, "eotdLocCalAssDataMissing" },
+ { 4, "eotdAssDataMissing" },
+ { 5, "gpsLocCalAssDataMissing" },
+ { 6, "gpsAssDataMissing" },
+ { 7, "methodNotSupported" },
+ { 8, "notProcessed" },
+ { 9, "refBTSForGPSNotServingBTS" },
+ { 10, "refBTSForEOTDNotServingBTS" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_LocErrorReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 10, NULL, NULL, TRUE);
+
+ return offset;
+}
+static int dissect_locErrorReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_LocErrorReason(tvb, offset, pinfo, tree, hf_rrlp_locErrorReason);
+}
+
+
+
+static int
+dissect_rrlp_GPSAssistanceData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
+ 1, maxGPSAssistanceData, NULL);
+
+ return offset;
+}
+static int dissect_gpsAssistanceData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSAssistanceData(tvb, offset, pinfo, tree, hf_rrlp_gpsAssistanceData);
+}
+
+
+static const per_sequence_t AdditionalAssistanceData_sequence[] = {
+ { "gpsAssistanceData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_gpsAssistanceData },
+ { "extensionContainer" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extensionContainer },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AdditionalAssistanceData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AdditionalAssistanceData, AdditionalAssistanceData_sequence);
+
+ return offset;
+}
+static int dissect_additionalAssistanceData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AdditionalAssistanceData(tvb, offset, pinfo, tree, hf_rrlp_additionalAssistanceData);
+}
+
+
+static const per_sequence_t LocationError_sequence[] = {
+ { "locErrorReason" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_locErrorReason },
+ { "additionalAssistanceData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_additionalAssistanceData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_LocationError(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_LocationError, LocationError_sequence);
+
+ return offset;
+}
+static int dissect_locationError(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_LocationError(tvb, offset, pinfo, tree, hf_rrlp_locationError);
+}
+
+
+static const per_sequence_t SeqOfOTD_FirstSetMsrs_R98_Ext_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SeqOfOTD_FirstSetMsrs_R98_Ext_item },
+};
+
+static int
+dissect_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext, SeqOfOTD_FirstSetMsrs_R98_Ext_sequence_of,
+ 1, 5);
+
+ return offset;
+}
+static int dissect_otd_FirstSetMsrs_R98_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext(tvb, offset, pinfo, tree, hf_rrlp_otd_FirstSetMsrs_R98_Ext);
+}
+
+
+static const per_sequence_t OTD_MsrElementFirst_R98_Ext_sequence[] = {
+ { "otd-FirstSetMsrs-R98-Ext" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_otd_FirstSetMsrs_R98_Ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MsrElementFirst_R98_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MsrElementFirst_R98_Ext, OTD_MsrElementFirst_R98_Ext_sequence);
+
+ return offset;
+}
+static int dissect_otdMsrFirstSets_R98_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MsrElementFirst_R98_Ext(tvb, offset, pinfo, tree, hf_rrlp_otdMsrFirstSets_R98_Ext);
+}
+
+
+static const per_sequence_t OTD_MeasureInfo_R98_Ext_sequence[] = {
+ { "otdMsrFirstSets-R98-Ext" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_otdMsrFirstSets_R98_Ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_OTD_MeasureInfo_R98_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_OTD_MeasureInfo_R98_Ext, OTD_MeasureInfo_R98_Ext_sequence);
+
+ return offset;
+}
+static int dissect_otd_MeasureInfo_R98_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MeasureInfo_R98_Ext(tvb, offset, pinfo, tree, hf_rrlp_otd_MeasureInfo_R98_Ext);
+}
+
+
+static const per_sequence_t T_rel_98_Ext_MeasureInfo_sequence[] = {
+ { "otd-MeasureInfo-R98-Ext" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_otd_MeasureInfo_R98_Ext },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_T_rel_98_Ext_MeasureInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_T_rel_98_Ext_MeasureInfo, T_rel_98_Ext_MeasureInfo_sequence);
+
+ return offset;
+}
+static int dissect_rel_98_Ext_MeasureInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_T_rel_98_Ext_MeasureInfo(tvb, offset, pinfo, tree, hf_rrlp_rel_98_Ext_MeasureInfo);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_9999(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 9999U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_gpsTowSubms(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_9999(tvb, offset, pinfo, tree, hf_rrlp_gpsTowSubms);
+}
+
+
+
+static int
+dissect_rrlp_INTEGER_0_127(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 127U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_deltaTow(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_INTEGER_0_127(tvb, offset, pinfo, tree, hf_rrlp_deltaTow);
+}
+
+
+static const per_sequence_t GPSTimeAssistanceMeasurements_sequence[] = {
+ { "referenceFrameMSB" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceFrameMSB },
+ { "gpsTowSubms" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gpsTowSubms },
+ { "deltaTow" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_deltaTow },
+ { "gpsReferenceTimeUncertainty" , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gpsReferenceTimeUncertainty },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_GPSTimeAssistanceMeasurements(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_GPSTimeAssistanceMeasurements, GPSTimeAssistanceMeasurements_sequence);
+
+ return offset;
+}
+static int dissect_timeAssistanceMeasurements(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_GPSTimeAssistanceMeasurements(tvb, offset, pinfo, tree, hf_rrlp_timeAssistanceMeasurements);
+}
+
+
+static const per_sequence_t Rel_98_MsrPosition_Rsp_Extension_sequence[] = {
+ { "rel-98-Ext-MeasureInfo" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rel_98_Ext_MeasureInfo },
+ { "timeAssistanceMeasurements" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_timeAssistanceMeasurements },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel_98_MsrPosition_Rsp_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel_98_MsrPosition_Rsp_Extension, Rel_98_MsrPosition_Rsp_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel_98_MsrPosition_Rsp_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel_98_MsrPosition_Rsp_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel_98_MsrPosition_Rsp_Extension);
+}
+
+
+
+static int
+dissect_rrlp_OTD_MeasureInfo_5_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_rrlp_SeqOfOTD_MsrElementRest(tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_otd_MeasureInfo_5_Ext(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_OTD_MeasureInfo_5_Ext(tvb, offset, pinfo, tree, hf_rrlp_otd_MeasureInfo_5_Ext);
+}
+
+
+static const value_string rrlp_UlPseudoSegInd_vals[] = {
+ { 0, "firstOfMany" },
+ { 1, "secondOfMany" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_UlPseudoSegInd(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 1, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_ulPseudoSegInd(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_UlPseudoSegInd(tvb, offset, pinfo, tree, hf_rrlp_ulPseudoSegInd);
+}
+
+
+static const per_sequence_t Rel_5_MsrPosition_Rsp_Extension_sequence[] = {
+ { "extended-reference" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extended_reference },
+ { "otd-MeasureInfo-5-Ext" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_otd_MeasureInfo_5_Ext },
+ { "ulPseudoSegInd" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulPseudoSegInd },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel_5_MsrPosition_Rsp_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel_5_MsrPosition_Rsp_Extension, Rel_5_MsrPosition_Rsp_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel_5_MsrPosition_Rsp_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel_5_MsrPosition_Rsp_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel_5_MsrPosition_Rsp_Extension);
+}
+
+
+static const per_sequence_t MsrPosition_Rsp_sequence[] = {
+ { "multipleSets" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_multipleSets },
+ { "referenceIdentity" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_referenceIdentity },
+ { "otd-MeasureInfo" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_otd_MeasureInfo },
+ { "locationInfo" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_locationInfo },
+ { "gps-MeasureInfo" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_gps_MeasureInfo },
+ { "locationError" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_locationError },
+ { "extensionContainer" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extensionContainer },
+ { "rel-98-MsrPosition-Rsp-Extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel_98_MsrPosition_Rsp_Extension },
+ { "rel-5-MsrPosition-Rsp-Extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel_5_MsrPosition_Rsp_Extension },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_MsrPosition_Rsp(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_MsrPosition_Rsp, MsrPosition_Rsp_sequence);
+
+ return offset;
+}
+static int dissect_msrPositionRsp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MsrPosition_Rsp(tvb, offset, pinfo, tree, hf_rrlp_msrPositionRsp);
+}
+
+
+static const value_string rrlp_MoreAssDataToBeSent_vals[] = {
+ { 0, "noMoreMessages" },
+ { 1, "moreMessagesOnTheWay" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_MoreAssDataToBeSent(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 1, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_moreAssDataToBeSent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_MoreAssDataToBeSent(tvb, offset, pinfo, tree, hf_rrlp_moreAssDataToBeSent);
+}
+
+
+static const per_sequence_t Rel98_AssistanceData_Extension_sequence[] = {
+ { "rel98-Ext-ExpOTD" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rel98_Ext_ExpOTD },
+ { "gpsTimeAssistanceMeasurementRequest", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_gpsTimeAssistanceMeasurementRequest },
+ { "gpsReferenceTimeUncertainty" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_gpsReferenceTimeUncertainty },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel98_AssistanceData_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel98_AssistanceData_Extension, Rel98_AssistanceData_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel98_AssistanceData_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel98_AssistanceData_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel98_AssistanceData_Extension);
+}
+
+
+static const per_sequence_t Rel5_AssistanceData_Extension_sequence[] = {
+ { "extended-reference" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_extended_reference },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel5_AssistanceData_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel5_AssistanceData_Extension, Rel5_AssistanceData_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel5_AssistanceData_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel5_AssistanceData_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel5_AssistanceData_Extension);
+}
+
+
+static const per_sequence_t AssistanceData_sequence[] = {
+ { "referenceAssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_referenceAssistData },
+ { "msrAssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_msrAssistData },
+ { "systemInfoAssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_systemInfoAssistData },
+ { "gps-AssistData" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_gps_AssistData },
+ { "moreAssDataToBeSent" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_moreAssDataToBeSent },
+ { "extensionContainer" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extensionContainer },
+ { "rel98-AssistanceData-Extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel98_AssistanceData_Extension },
+ { "rel5-AssistanceData-Extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel5_AssistanceData_Extension },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_AssistanceData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_AssistanceData, AssistanceData_sequence);
+
+ return offset;
+}
+static int dissect_assistanceData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_AssistanceData(tvb, offset, pinfo, tree, hf_rrlp_assistanceData);
+}
+
+
+static const value_string rrlp_ErrorCodes_vals[] = {
+ { 0, "unDefined" },
+ { 1, "missingComponet" },
+ { 2, "incorrectData" },
+ { 3, "missingIEorComponentElement" },
+ { 4, "messageTooShort" },
+ { 5, "unknowReferenceNumber" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_rrlp_ErrorCodes(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0, 5, NULL, NULL, TRUE);
+
+ return offset;
+}
+static int dissect_errorCause(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ErrorCodes(tvb, offset, pinfo, tree, hf_rrlp_errorCause);
+}
+
+
+static const per_sequence_t Rel_5_ProtocolError_Extension_sequence[] = {
+ { "extended-reference" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extended_reference },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_Rel_5_ProtocolError_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_Rel_5_ProtocolError_Extension, Rel_5_ProtocolError_Extension_sequence);
+
+ return offset;
+}
+static int dissect_rel_5_ProtocolError_Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_Rel_5_ProtocolError_Extension(tvb, offset, pinfo, tree, hf_rrlp_rel_5_ProtocolError_Extension);
+}
+
+
+static const per_sequence_t ProtocolError_sequence[] = {
+ { "errorCause" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_errorCause },
+ { "extensionContainer" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_extensionContainer },
+ { "rel-5-ProtocolError-Extension", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_rel_5_ProtocolError_Extension },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_ProtocolError(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_ProtocolError, ProtocolError_sequence);
+
+ return offset;
+}
+static int dissect_protocolError(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_ProtocolError(tvb, offset, pinfo, tree, hf_rrlp_protocolError);
+}
+
+
+static const value_string rrlp_RRLP_Component_vals[] = {
+ { 0, "msrPositionReq" },
+ { 1, "msrPositionRsp" },
+ { 2, "assistanceData" },
+ { 3, "assistanceDataAck" },
+ { 4, "protocolError" },
+ { 0, NULL }
+};
+
+static const per_choice_t RRLP_Component_choice[] = {
+ { 0, "msrPositionReq" , ASN1_EXTENSION_ROOT , dissect_msrPositionReq },
+ { 1, "msrPositionRsp" , ASN1_EXTENSION_ROOT , dissect_msrPositionRsp },
+ { 2, "assistanceData" , ASN1_EXTENSION_ROOT , dissect_assistanceData },
+ { 3, "assistanceDataAck" , ASN1_EXTENSION_ROOT , dissect_assistanceDataAck },
+ { 4, "protocolError" , ASN1_EXTENSION_ROOT , dissect_protocolError },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_rrlp_RRLP_Component(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_RRLP_Component, RRLP_Component_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_component(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_rrlp_RRLP_Component(tvb, offset, pinfo, tree, hf_rrlp_component);
+}
+
+
+static const per_sequence_t PDU_sequence[] = {
+ { "referenceNumber" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_referenceNumber },
+ { "component" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_component },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_rrlp_PDU(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+#line 10 "rrlp.cnf"
+
+ proto_tree_add_item(tree, proto_rrlp, tvb, 0, -1, FALSE);
+
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ per_aligment_type_callback(FALSE);
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_rrlp_PDU, PDU_sequence);
+
+
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static void dissect_PDU_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_rrlp_PDU(tvb, 0, pinfo, tree, hf_rrlp_PDU_PDU);
+}
+
+
+/*--- End of included file: packet-rrlp-fn.c ---*/
+#line 82 "packet-rrlp-template.c"
+
+
+/*--- proto_register_rrlp -------------------------------------------*/
+void proto_register_rrlp(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+
+/*--- Included file: packet-rrlp-hfarr.c ---*/
+#line 1 "packet-rrlp-hfarr.c"
+ { &hf_rrlp_PDU_PDU,
+ { "PDU", "rrlp.PDU",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PDU", HFILL }},
+ { &hf_rrlp_referenceNumber,
+ { "referenceNumber", "rrlp.referenceNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PDU/referenceNumber", HFILL }},
+ { &hf_rrlp_component,
+ { "component", "rrlp.component",
+ FT_UINT32, BASE_DEC, VALS(rrlp_RRLP_Component_vals), 0,
+ "PDU/component", HFILL }},
+ { &hf_rrlp_msrPositionReq,
+ { "msrPositionReq", "rrlp.msrPositionReq",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRLP-Component/msrPositionReq", HFILL }},
+ { &hf_rrlp_msrPositionRsp,
+ { "msrPositionRsp", "rrlp.msrPositionRsp",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRLP-Component/msrPositionRsp", HFILL }},
+ { &hf_rrlp_assistanceData,
+ { "assistanceData", "rrlp.assistanceData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRLP-Component/assistanceData", HFILL }},
+ { &hf_rrlp_assistanceDataAck,
+ { "assistanceDataAck", "rrlp.assistanceDataAck",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRLP-Component/assistanceDataAck", HFILL }},
+ { &hf_rrlp_protocolError,
+ { "protocolError", "rrlp.protocolError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RRLP-Component/protocolError", HFILL }},
+ { &hf_rrlp_positionInstruct,
+ { "positionInstruct", "rrlp.positionInstruct",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Req/positionInstruct", HFILL }},
+ { &hf_rrlp_referenceAssistData,
+ { "referenceAssistData", "rrlp.referenceAssistData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_msrAssistData,
+ { "msrAssistData", "rrlp.msrAssistData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_systemInfoAssistData,
+ { "systemInfoAssistData", "rrlp.systemInfoAssistData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_gps_AssistData,
+ { "gps-AssistData", "rrlp.gps_AssistData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_extensionContainer,
+ { "extensionContainer", "rrlp.extensionContainer",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_rel98_MsrPosition_Req_extension,
+ { "rel98-MsrPosition-Req-extension", "rrlp.rel98_MsrPosition_Req_extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Req/rel98-MsrPosition-Req-extension", HFILL }},
+ { &hf_rrlp_rel5_MsrPosition_Req_extension,
+ { "rel5-MsrPosition-Req-extension", "rrlp.rel5_MsrPosition_Req_extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Req/rel5-MsrPosition-Req-extension", HFILL }},
+ { &hf_rrlp_multipleSets,
+ { "multipleSets", "rrlp.multipleSets",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/multipleSets", HFILL }},
+ { &hf_rrlp_referenceIdentity,
+ { "referenceIdentity", "rrlp.referenceIdentity",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/referenceIdentity", HFILL }},
+ { &hf_rrlp_otd_MeasureInfo,
+ { "otd-MeasureInfo", "rrlp.otd_MeasureInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/otd-MeasureInfo", HFILL }},
+ { &hf_rrlp_locationInfo,
+ { "locationInfo", "rrlp.locationInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/locationInfo", HFILL }},
+ { &hf_rrlp_gps_MeasureInfo,
+ { "gps-MeasureInfo", "rrlp.gps_MeasureInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/gps-MeasureInfo", HFILL }},
+ { &hf_rrlp_locationError,
+ { "locationError", "rrlp.locationError",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/locationError", HFILL }},
+ { &hf_rrlp_rel_98_MsrPosition_Rsp_Extension,
+ { "rel-98-MsrPosition-Rsp-Extension", "rrlp.rel_98_MsrPosition_Rsp_Extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/rel-98-MsrPosition-Rsp-Extension", HFILL }},
+ { &hf_rrlp_rel_5_MsrPosition_Rsp_Extension,
+ { "rel-5-MsrPosition-Rsp-Extension", "rrlp.rel_5_MsrPosition_Rsp_Extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MsrPosition-Rsp/rel-5-MsrPosition-Rsp-Extension", HFILL }},
+ { &hf_rrlp_moreAssDataToBeSent,
+ { "moreAssDataToBeSent", "rrlp.moreAssDataToBeSent",
+ FT_UINT32, BASE_DEC, VALS(rrlp_MoreAssDataToBeSent_vals), 0,
+ "AssistanceData/moreAssDataToBeSent", HFILL }},
+ { &hf_rrlp_rel98_AssistanceData_Extension,
+ { "rel98-AssistanceData-Extension", "rrlp.rel98_AssistanceData_Extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AssistanceData/rel98-AssistanceData-Extension", HFILL }},
+ { &hf_rrlp_rel5_AssistanceData_Extension,
+ { "rel5-AssistanceData-Extension", "rrlp.rel5_AssistanceData_Extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AssistanceData/rel5-AssistanceData-Extension", HFILL }},
+ { &hf_rrlp_errorCause,
+ { "errorCause", "rrlp.errorCause",
+ FT_UINT32, BASE_DEC, VALS(rrlp_ErrorCodes_vals), 0,
+ "ProtocolError/errorCause", HFILL }},
+ { &hf_rrlp_rel_5_ProtocolError_Extension,
+ { "rel-5-ProtocolError-Extension", "rrlp.rel_5_ProtocolError_Extension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ProtocolError/rel-5-ProtocolError-Extension", HFILL }},
+ { &hf_rrlp_methodType,
+ { "methodType", "rrlp.methodType",
+ FT_UINT32, BASE_DEC, VALS(rrlp_MethodType_vals), 0,
+ "PositionInstruct/methodType", HFILL }},
+ { &hf_rrlp_positionMethod,
+ { "positionMethod", "rrlp.positionMethod",
+ FT_UINT32, BASE_DEC, VALS(rrlp_PositionMethod_vals), 0,
+ "PositionInstruct/positionMethod", HFILL }},
+ { &hf_rrlp_measureResponseTime,
+ { "measureResponseTime", "rrlp.measureResponseTime",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "PositionInstruct/measureResponseTime", HFILL }},
+ { &hf_rrlp_useMultipleSets,
+ { "useMultipleSets", "rrlp.useMultipleSets",
+ FT_UINT32, BASE_DEC, VALS(rrlp_UseMultipleSets_vals), 0,
+ "PositionInstruct/useMultipleSets", HFILL }},
+ { &hf_rrlp_environmentCharacter,
+ { "environmentCharacter", "rrlp.environmentCharacter",
+ FT_UINT32, BASE_DEC, VALS(rrlp_EnvironmentCharacter_vals), 0,
+ "PositionInstruct/environmentCharacter", HFILL }},
+ { &hf_rrlp_msAssisted,
+ { "msAssisted", "rrlp.msAssisted",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MethodType/msAssisted", HFILL }},
+ { &hf_rrlp_msBased,
+ { "msBased", "rrlp.msBased",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MethodType/msBased", HFILL }},
+ { &hf_rrlp_msBasedPref,
+ { "msBasedPref", "rrlp.msBasedPref",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MethodType/msBasedPref", HFILL }},
+ { &hf_rrlp_msAssistedPref,
+ { "msAssistedPref", "rrlp.msAssistedPref",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MethodType/msAssistedPref", HFILL }},
+ { &hf_rrlp_accuracy,
+ { "accuracy", "rrlp.accuracy",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AccuracyOpt/accuracy", HFILL }},
+ { &hf_rrlp_bcchCarrier,
+ { "bcchCarrier", "rrlp.bcchCarrier",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_bsic,
+ { "bsic", "rrlp.bsic",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_timeSlotScheme,
+ { "timeSlotScheme", "rrlp.timeSlotScheme",
+ FT_UINT32, BASE_DEC, VALS(rrlp_TimeSlotScheme_vals), 0,
+ "", HFILL }},
+ { &hf_rrlp_btsPosition,
+ { "btsPosition", "rrlp.btsPosition",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReferenceAssistData/btsPosition", HFILL }},
+ { &hf_rrlp_msrAssistList,
+ { "msrAssistList", "rrlp.msrAssistList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MsrAssistData/msrAssistList", HFILL }},
+ { &hf_rrlp_SeqOfMsrAssistBTS_item,
+ { "Item", "rrlp.SeqOfMsrAssistBTS_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfMsrAssistBTS/_item", HFILL }},
+ { &hf_rrlp_multiFrameOffset,
+ { "multiFrameOffset", "rrlp.multiFrameOffset",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_roughRTD,
+ { "roughRTD", "rrlp.roughRTD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_calcAssistanceBTS,
+ { "calcAssistanceBTS", "rrlp.calcAssistanceBTS",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_systemInfoAssistList,
+ { "systemInfoAssistList", "rrlp.systemInfoAssistList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SystemInfoAssistData/systemInfoAssistList", HFILL }},
+ { &hf_rrlp_SeqOfSystemInfoAssistBTS_item,
+ { "Item", "rrlp.SeqOfSystemInfoAssistBTS_item",
+ FT_UINT32, BASE_DEC, VALS(rrlp_SystemInfoAssistBTS_vals), 0,
+ "SeqOfSystemInfoAssistBTS/_item", HFILL }},
+ { &hf_rrlp_notPresent,
+ { "notPresent", "rrlp.notPresent",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_present,
+ { "present", "rrlp.present",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SystemInfoAssistBTS/present", HFILL }},
+ { &hf_rrlp_fineRTD,
+ { "fineRTD", "rrlp.fineRTD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CalcAssistanceBTS/fineRTD", HFILL }},
+ { &hf_rrlp_referenceWGS84,
+ { "referenceWGS84", "rrlp.referenceWGS84",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CalcAssistanceBTS/referenceWGS84", HFILL }},
+ { &hf_rrlp_relativeNorth,
+ { "relativeNorth", "rrlp.relativeNorth",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ReferenceWGS84/relativeNorth", HFILL }},
+ { &hf_rrlp_relativeEast,
+ { "relativeEast", "rrlp.relativeEast",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ReferenceWGS84/relativeEast", HFILL }},
+ { &hf_rrlp_relativeAlt,
+ { "relativeAlt", "rrlp.relativeAlt",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "ReferenceWGS84/relativeAlt", HFILL }},
+ { &hf_rrlp_nbrOfSets,
+ { "nbrOfSets", "rrlp.nbrOfSets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MultipleSets/nbrOfSets", HFILL }},
+ { &hf_rrlp_nbrOfReferenceBTSs,
+ { "nbrOfReferenceBTSs", "rrlp.nbrOfReferenceBTSs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MultipleSets/nbrOfReferenceBTSs", HFILL }},
+ { &hf_rrlp_referenceRelation,
+ { "referenceRelation", "rrlp.referenceRelation",
+ FT_UINT32, BASE_DEC, VALS(rrlp_ReferenceRelation_vals), 0,
+ "MultipleSets/referenceRelation", HFILL }},
+ { &hf_rrlp_refBTSList,
+ { "refBTSList", "rrlp.refBTSList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ReferenceIdentity/refBTSList", HFILL }},
+ { &hf_rrlp_SeqOfReferenceIdentityType_item,
+ { "Item", "rrlp.SeqOfReferenceIdentityType_item",
+ FT_UINT32, BASE_DEC, VALS(rrlp_ReferenceIdentityType_vals), 0,
+ "SeqOfReferenceIdentityType/_item", HFILL }},
+ { &hf_rrlp_bsicAndCarrier,
+ { "bsicAndCarrier", "rrlp.bsicAndCarrier",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_ci,
+ { "ci", "rrlp.ci",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_requestIndex,
+ { "requestIndex", "rrlp.requestIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_systemInfoIndex,
+ { "systemInfoIndex", "rrlp.systemInfoIndex",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_ciAndLAC,
+ { "ciAndLAC", "rrlp.ciAndLAC",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_carrier,
+ { "carrier", "rrlp.carrier",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "BSICAndCarrier/carrier", HFILL }},
+ { &hf_rrlp_referenceLAC,
+ { "referenceLAC", "rrlp.referenceLAC",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CellIDAndLAC/referenceLAC", HFILL }},
+ { &hf_rrlp_referenceCI,
+ { "referenceCI", "rrlp.referenceCI",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "CellIDAndLAC/referenceCI", HFILL }},
+ { &hf_rrlp_otdMsrFirstSets,
+ { "otdMsrFirstSets", "rrlp.otdMsrFirstSets",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "OTD-MeasureInfo/otdMsrFirstSets", HFILL }},
+ { &hf_rrlp_otdMsrRestSets,
+ { "otdMsrRestSets", "rrlp.otdMsrRestSets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "OTD-MeasureInfo/otdMsrRestSets", HFILL }},
+ { &hf_rrlp_SeqOfOTD_MsrElementRest_item,
+ { "Item", "rrlp.SeqOfOTD_MsrElementRest_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfOTD-MsrElementRest/_item", HFILL }},
+ { &hf_rrlp_refFrameNumber,
+ { "refFrameNumber", "rrlp.refFrameNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_referenceTimeSlot,
+ { "referenceTimeSlot", "rrlp.referenceTimeSlot",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_toaMeasurementsOfRef,
+ { "toaMeasurementsOfRef", "rrlp.toaMeasurementsOfRef",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_stdResolution,
+ { "stdResolution", "rrlp.stdResolution",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_taCorrection,
+ { "taCorrection", "rrlp.taCorrection",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_otd_FirstSetMsrs,
+ { "otd-FirstSetMsrs", "rrlp.otd_FirstSetMsrs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "OTD-MsrElementFirst/otd-FirstSetMsrs", HFILL }},
+ { &hf_rrlp_SeqOfOTD_FirstSetMsrs_item,
+ { "Item", "rrlp.SeqOfOTD_FirstSetMsrs_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfOTD-FirstSetMsrs/_item", HFILL }},
+ { &hf_rrlp_otd_MsrsOfOtherSets,
+ { "otd-MsrsOfOtherSets", "rrlp.otd_MsrsOfOtherSets",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "OTD-MsrElementRest/otd-MsrsOfOtherSets", HFILL }},
+ { &hf_rrlp_SeqOfOTD_MsrsOfOtherSets_item,
+ { "Item", "rrlp.SeqOfOTD_MsrsOfOtherSets_item",
+ FT_UINT32, BASE_DEC, VALS(rrlp_OTD_MsrsOfOtherSets_vals), 0,
+ "SeqOfOTD-MsrsOfOtherSets/_item", HFILL }},
+ { &hf_rrlp_refQuality,
+ { "refQuality", "rrlp.refQuality",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "TOA-MeasurementsOfRef/refQuality", HFILL }},
+ { &hf_rrlp_numOfMeasurements,
+ { "numOfMeasurements", "rrlp.numOfMeasurements",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "TOA-MeasurementsOfRef/numOfMeasurements", HFILL }},
+ { &hf_rrlp_identityNotPresent,
+ { "identityNotPresent", "rrlp.identityNotPresent",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "OTD-MsrsOfOtherSets/identityNotPresent", HFILL }},
+ { &hf_rrlp_identityPresent,
+ { "identityPresent", "rrlp.identityPresent",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "OTD-MsrsOfOtherSets/identityPresent", HFILL }},
+ { &hf_rrlp_nborTimeSlot,
+ { "nborTimeSlot", "rrlp.nborTimeSlot",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_eotdQuality,
+ { "eotdQuality", "rrlp.eotdQuality",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_otdValue,
+ { "otdValue", "rrlp.otdValue",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_neighborIdentity,
+ { "neighborIdentity", "rrlp.neighborIdentity",
+ FT_UINT32, BASE_DEC, VALS(rrlp_NeighborIdentity_vals), 0,
+ "OTD-MeasurementWithID/neighborIdentity", HFILL }},
+ { &hf_rrlp_nbrOfMeasurements,
+ { "nbrOfMeasurements", "rrlp.nbrOfMeasurements",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EOTDQuality/nbrOfMeasurements", HFILL }},
+ { &hf_rrlp_stdOfEOTD,
+ { "stdOfEOTD", "rrlp.stdOfEOTD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EOTDQuality/stdOfEOTD", HFILL }},
+ { &hf_rrlp_multiFrameCarrier,
+ { "multiFrameCarrier", "rrlp.multiFrameCarrier",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NeighborIdentity/multiFrameCarrier", HFILL }},
+ { &hf_rrlp_refFrame,
+ { "refFrame", "rrlp.refFrame",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_gpsTOW,
+ { "gpsTOW", "rrlp.gpsTOW",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "LocationInfo/gpsTOW", HFILL }},
+ { &hf_rrlp_fixType,
+ { "fixType", "rrlp.fixType",
+ FT_UINT32, BASE_DEC, VALS(rrlp_FixType_vals), 0,
+ "LocationInfo/fixType", HFILL }},
+ { &hf_rrlp_posEstimate,
+ { "posEstimate", "rrlp.posEstimate",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LocationInfo/posEstimate", HFILL }},
+ { &hf_rrlp_gpsMsrSetList,
+ { "gpsMsrSetList", "rrlp.gpsMsrSetList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MeasureInfo/gpsMsrSetList", HFILL }},
+ { &hf_rrlp_SeqOfGPS_MsrSetElement_item,
+ { "Item", "rrlp.SeqOfGPS_MsrSetElement_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfGPS-MsrSetElement/_item", HFILL }},
+ { &hf_rrlp_gpsTOW1,
+ { "gpsTOW", "rrlp.gpsTOW",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MsrSetElement/gpsTOW", HFILL }},
+ { &hf_rrlp_gps_msrList,
+ { "gps-msrList", "rrlp.gps_msrList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MsrSetElement/gps-msrList", HFILL }},
+ { &hf_rrlp_SeqOfGPS_MsrElement_item,
+ { "Item", "rrlp.SeqOfGPS_MsrElement_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfGPS-MsrElement/_item", HFILL }},
+ { &hf_rrlp_satelliteID,
+ { "satelliteID", "rrlp.satelliteID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_cNo,
+ { "cNo", "rrlp.cNo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MsrElement/cNo", HFILL }},
+ { &hf_rrlp_doppler,
+ { "doppler", "rrlp.doppler",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "GPS-MsrElement/doppler", HFILL }},
+ { &hf_rrlp_wholeChips,
+ { "wholeChips", "rrlp.wholeChips",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MsrElement/wholeChips", HFILL }},
+ { &hf_rrlp_fracChips,
+ { "fracChips", "rrlp.fracChips",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MsrElement/fracChips", HFILL }},
+ { &hf_rrlp_mpathIndic,
+ { "mpathIndic", "rrlp.mpathIndic",
+ FT_UINT32, BASE_DEC, VALS(rrlp_MpathIndic_vals), 0,
+ "GPS-MsrElement/mpathIndic", HFILL }},
+ { &hf_rrlp_pseuRangeRMSErr,
+ { "pseuRangeRMSErr", "rrlp.pseuRangeRMSErr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPS-MsrElement/pseuRangeRMSErr", HFILL }},
+ { &hf_rrlp_locErrorReason,
+ { "locErrorReason", "rrlp.locErrorReason",
+ FT_UINT32, BASE_DEC, VALS(rrlp_LocErrorReason_vals), 0,
+ "LocationError/locErrorReason", HFILL }},
+ { &hf_rrlp_additionalAssistanceData,
+ { "additionalAssistanceData", "rrlp.additionalAssistanceData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LocationError/additionalAssistanceData", HFILL }},
+ { &hf_rrlp_gpsAssistanceData,
+ { "gpsAssistanceData", "rrlp.gpsAssistanceData",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "AdditionalAssistanceData/gpsAssistanceData", HFILL }},
+ { &hf_rrlp_controlHeader,
+ { "controlHeader", "rrlp.controlHeader",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "GPS-AssistData/controlHeader", HFILL }},
+ { &hf_rrlp_referenceTime,
+ { "referenceTime", "rrlp.referenceTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/referenceTime", HFILL }},
+ { &hf_rrlp_refLocation,
+ { "refLocation", "rrlp.refLocation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/refLocation", HFILL }},
+ { &hf_rrlp_dgpsCorrections,
+ { "dgpsCorrections", "rrlp.dgpsCorrections",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/dgpsCorrections", HFILL }},
+ { &hf_rrlp_navigationModel,
+ { "navigationModel", "rrlp.navigationModel",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/navigationModel", HFILL }},
+ { &hf_rrlp_ionosphericModel,
+ { "ionosphericModel", "rrlp.ionosphericModel",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/ionosphericModel", HFILL }},
+ { &hf_rrlp_utcModel,
+ { "utcModel", "rrlp.utcModel",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/utcModel", HFILL }},
+ { &hf_rrlp_almanac,
+ { "almanac", "rrlp.almanac",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/almanac", HFILL }},
+ { &hf_rrlp_acquisAssist,
+ { "acquisAssist", "rrlp.acquisAssist",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ControlHeader/acquisAssist", HFILL }},
+ { &hf_rrlp_realTimeIntegrity,
+ { "realTimeIntegrity", "rrlp.realTimeIntegrity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ControlHeader/realTimeIntegrity", HFILL }},
+ { &hf_rrlp_gpsTime,
+ { "gpsTime", "rrlp.gpsTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReferenceTime/gpsTime", HFILL }},
+ { &hf_rrlp_gsmTime,
+ { "gsmTime", "rrlp.gsmTime",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_gpsTowAssist,
+ { "gpsTowAssist", "rrlp.gpsTowAssist",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ReferenceTime/gpsTowAssist", HFILL }},
+ { &hf_rrlp_gpsTOW23b,
+ { "gpsTOW23b", "rrlp.gpsTOW23b",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTime/gpsTOW23b", HFILL }},
+ { &hf_rrlp_gpsWeek,
+ { "gpsWeek", "rrlp.gpsWeek",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTime/gpsWeek", HFILL }},
+ { &hf_rrlp_GPSTOWAssist_item,
+ { "Item", "rrlp.GPSTOWAssist_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "GPSTOWAssist/_item", HFILL }},
+ { &hf_rrlp_tlmWord,
+ { "tlmWord", "rrlp.tlmWord",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTOWAssistElement/tlmWord", HFILL }},
+ { &hf_rrlp_antiSpoof,
+ { "antiSpoof", "rrlp.antiSpoof",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTOWAssistElement/antiSpoof", HFILL }},
+ { &hf_rrlp_alert,
+ { "alert", "rrlp.alert",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTOWAssistElement/alert", HFILL }},
+ { &hf_rrlp_tlmRsvdBits,
+ { "tlmRsvdBits", "rrlp.tlmRsvdBits",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTOWAssistElement/tlmRsvdBits", HFILL }},
+ { &hf_rrlp_frameNumber,
+ { "frameNumber", "rrlp.frameNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GSMTime/frameNumber", HFILL }},
+ { &hf_rrlp_timeSlot,
+ { "timeSlot", "rrlp.timeSlot",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GSMTime/timeSlot", HFILL }},
+ { &hf_rrlp_bitNumber,
+ { "bitNumber", "rrlp.bitNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GSMTime/bitNumber", HFILL }},
+ { &hf_rrlp_threeDLocation,
+ { "threeDLocation", "rrlp.threeDLocation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RefLocation/threeDLocation", HFILL }},
+ { &hf_rrlp_gpsTOW2,
+ { "gpsTOW", "rrlp.gpsTOW",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DGPSCorrections/gpsTOW", HFILL }},
+ { &hf_rrlp_status,
+ { "status", "rrlp.status",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DGPSCorrections/status", HFILL }},
+ { &hf_rrlp_satList,
+ { "satList", "rrlp.satList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DGPSCorrections/satList", HFILL }},
+ { &hf_rrlp_SeqOfSatElement_item,
+ { "Item", "rrlp.SeqOfSatElement_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfSatElement/_item", HFILL }},
+ { &hf_rrlp_iode,
+ { "iode", "rrlp.iode",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SatElement/iode", HFILL }},
+ { &hf_rrlp_udre,
+ { "udre", "rrlp.udre",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SatElement/udre", HFILL }},
+ { &hf_rrlp_pseudoRangeCor,
+ { "pseudoRangeCor", "rrlp.pseudoRangeCor",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SatElement/pseudoRangeCor", HFILL }},
+ { &hf_rrlp_rangeRateCor,
+ { "rangeRateCor", "rrlp.rangeRateCor",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SatElement/rangeRateCor", HFILL }},
+ { &hf_rrlp_deltaPseudoRangeCor2,
+ { "deltaPseudoRangeCor2", "rrlp.deltaPseudoRangeCor2",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SatElement/deltaPseudoRangeCor2", HFILL }},
+ { &hf_rrlp_deltaRangeRateCor2,
+ { "deltaRangeRateCor2", "rrlp.deltaRangeRateCor2",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SatElement/deltaRangeRateCor2", HFILL }},
+ { &hf_rrlp_deltaPseudoRangeCor3,
+ { "deltaPseudoRangeCor3", "rrlp.deltaPseudoRangeCor3",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SatElement/deltaPseudoRangeCor3", HFILL }},
+ { &hf_rrlp_deltaRangeRateCor3,
+ { "deltaRangeRateCor3", "rrlp.deltaRangeRateCor3",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SatElement/deltaRangeRateCor3", HFILL }},
+ { &hf_rrlp_navModelList,
+ { "navModelList", "rrlp.navModelList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "NavigationModel/navModelList", HFILL }},
+ { &hf_rrlp_SeqOfNavModelElement_item,
+ { "Item", "rrlp.SeqOfNavModelElement_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfNavModelElement/_item", HFILL }},
+ { &hf_rrlp_satStatus,
+ { "satStatus", "rrlp.satStatus",
+ FT_UINT32, BASE_DEC, VALS(rrlp_SatStatus_vals), 0,
+ "NavModelElement/satStatus", HFILL }},
+ { &hf_rrlp_newSatelliteAndModelUC,
+ { "newSatelliteAndModelUC", "rrlp.newSatelliteAndModelUC",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SatStatus/newSatelliteAndModelUC", HFILL }},
+ { &hf_rrlp_oldSatelliteAndModel,
+ { "oldSatelliteAndModel", "rrlp.oldSatelliteAndModel",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SatStatus/oldSatelliteAndModel", HFILL }},
+ { &hf_rrlp_newNaviModelUC,
+ { "newNaviModelUC", "rrlp.newNaviModelUC",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SatStatus/newNaviModelUC", HFILL }},
+ { &hf_rrlp_ephemCodeOnL2,
+ { "ephemCodeOnL2", "rrlp.ephemCodeOnL2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCodeOnL2", HFILL }},
+ { &hf_rrlp_ephemURA,
+ { "ephemURA", "rrlp.ephemURA",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemURA", HFILL }},
+ { &hf_rrlp_ephemSVhealth,
+ { "ephemSVhealth", "rrlp.ephemSVhealth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemSVhealth", HFILL }},
+ { &hf_rrlp_ephemIODC,
+ { "ephemIODC", "rrlp.ephemIODC",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemIODC", HFILL }},
+ { &hf_rrlp_ephemL2Pflag,
+ { "ephemL2Pflag", "rrlp.ephemL2Pflag",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemL2Pflag", HFILL }},
+ { &hf_rrlp_ephemSF1Rsvd,
+ { "ephemSF1Rsvd", "rrlp.ephemSF1Rsvd",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "UncompressedEphemeris/ephemSF1Rsvd", HFILL }},
+ { &hf_rrlp_ephemTgd,
+ { "ephemTgd", "rrlp.ephemTgd",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemTgd", HFILL }},
+ { &hf_rrlp_ephemToc,
+ { "ephemToc", "rrlp.ephemToc",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemToc", HFILL }},
+ { &hf_rrlp_ephemAF2,
+ { "ephemAF2", "rrlp.ephemAF2",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemAF2", HFILL }},
+ { &hf_rrlp_ephemAF1,
+ { "ephemAF1", "rrlp.ephemAF1",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemAF1", HFILL }},
+ { &hf_rrlp_ephemAF0,
+ { "ephemAF0", "rrlp.ephemAF0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemAF0", HFILL }},
+ { &hf_rrlp_ephemCrs,
+ { "ephemCrs", "rrlp.ephemCrs",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCrs", HFILL }},
+ { &hf_rrlp_ephemDeltaN,
+ { "ephemDeltaN", "rrlp.ephemDeltaN",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemDeltaN", HFILL }},
+ { &hf_rrlp_ephemM0,
+ { "ephemM0", "rrlp.ephemM0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemM0", HFILL }},
+ { &hf_rrlp_ephemCuc,
+ { "ephemCuc", "rrlp.ephemCuc",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCuc", HFILL }},
+ { &hf_rrlp_ephemE,
+ { "ephemE", "rrlp.ephemE",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemE", HFILL }},
+ { &hf_rrlp_ephemCus,
+ { "ephemCus", "rrlp.ephemCus",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCus", HFILL }},
+ { &hf_rrlp_ephemAPowerHalf,
+ { "ephemAPowerHalf", "rrlp.ephemAPowerHalf",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemAPowerHalf", HFILL }},
+ { &hf_rrlp_ephemToe,
+ { "ephemToe", "rrlp.ephemToe",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemToe", HFILL }},
+ { &hf_rrlp_ephemFitFlag,
+ { "ephemFitFlag", "rrlp.ephemFitFlag",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemFitFlag", HFILL }},
+ { &hf_rrlp_ephemAODA,
+ { "ephemAODA", "rrlp.ephemAODA",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemAODA", HFILL }},
+ { &hf_rrlp_ephemCic,
+ { "ephemCic", "rrlp.ephemCic",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCic", HFILL }},
+ { &hf_rrlp_ephemOmegaA0,
+ { "ephemOmegaA0", "rrlp.ephemOmegaA0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemOmegaA0", HFILL }},
+ { &hf_rrlp_ephemCis,
+ { "ephemCis", "rrlp.ephemCis",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCis", HFILL }},
+ { &hf_rrlp_ephemI0,
+ { "ephemI0", "rrlp.ephemI0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemI0", HFILL }},
+ { &hf_rrlp_ephemCrc,
+ { "ephemCrc", "rrlp.ephemCrc",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemCrc", HFILL }},
+ { &hf_rrlp_ephemW,
+ { "ephemW", "rrlp.ephemW",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemW", HFILL }},
+ { &hf_rrlp_ephemOmegaADot,
+ { "ephemOmegaADot", "rrlp.ephemOmegaADot",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemOmegaADot", HFILL }},
+ { &hf_rrlp_ephemIDot,
+ { "ephemIDot", "rrlp.ephemIDot",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UncompressedEphemeris/ephemIDot", HFILL }},
+ { &hf_rrlp_reserved1,
+ { "reserved1", "rrlp.reserved1",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EphemerisSubframe1Reserved/reserved1", HFILL }},
+ { &hf_rrlp_reserved2,
+ { "reserved2", "rrlp.reserved2",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EphemerisSubframe1Reserved/reserved2", HFILL }},
+ { &hf_rrlp_reserved3,
+ { "reserved3", "rrlp.reserved3",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EphemerisSubframe1Reserved/reserved3", HFILL }},
+ { &hf_rrlp_reserved4,
+ { "reserved4", "rrlp.reserved4",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "EphemerisSubframe1Reserved/reserved4", HFILL }},
+ { &hf_rrlp_alfa0,
+ { "alfa0", "rrlp.alfa0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/alfa0", HFILL }},
+ { &hf_rrlp_alfa1,
+ { "alfa1", "rrlp.alfa1",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/alfa1", HFILL }},
+ { &hf_rrlp_alfa2,
+ { "alfa2", "rrlp.alfa2",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/alfa2", HFILL }},
+ { &hf_rrlp_alfa3,
+ { "alfa3", "rrlp.alfa3",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/alfa3", HFILL }},
+ { &hf_rrlp_beta0,
+ { "beta0", "rrlp.beta0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/beta0", HFILL }},
+ { &hf_rrlp_beta1,
+ { "beta1", "rrlp.beta1",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/beta1", HFILL }},
+ { &hf_rrlp_beta2,
+ { "beta2", "rrlp.beta2",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/beta2", HFILL }},
+ { &hf_rrlp_beta3,
+ { "beta3", "rrlp.beta3",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "IonosphericModel/beta3", HFILL }},
+ { &hf_rrlp_utcA1,
+ { "utcA1", "rrlp.utcA1",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcA1", HFILL }},
+ { &hf_rrlp_utcA0,
+ { "utcA0", "rrlp.utcA0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcA0", HFILL }},
+ { &hf_rrlp_utcTot,
+ { "utcTot", "rrlp.utcTot",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcTot", HFILL }},
+ { &hf_rrlp_utcWNt,
+ { "utcWNt", "rrlp.utcWNt",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcWNt", HFILL }},
+ { &hf_rrlp_utcDeltaTls,
+ { "utcDeltaTls", "rrlp.utcDeltaTls",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcDeltaTls", HFILL }},
+ { &hf_rrlp_utcWNlsf,
+ { "utcWNlsf", "rrlp.utcWNlsf",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcWNlsf", HFILL }},
+ { &hf_rrlp_utcDN,
+ { "utcDN", "rrlp.utcDN",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcDN", HFILL }},
+ { &hf_rrlp_utcDeltaTlsf,
+ { "utcDeltaTlsf", "rrlp.utcDeltaTlsf",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "UTCModel/utcDeltaTlsf", HFILL }},
+ { &hf_rrlp_alamanacWNa,
+ { "alamanacWNa", "rrlp.alamanacWNa",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Almanac/alamanacWNa", HFILL }},
+ { &hf_rrlp_almanacList,
+ { "almanacList", "rrlp.almanacList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Almanac/almanacList", HFILL }},
+ { &hf_rrlp_SeqOfAlmanacElement_item,
+ { "Item", "rrlp.SeqOfAlmanacElement_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfAlmanacElement/_item", HFILL }},
+ { &hf_rrlp_almanacE,
+ { "almanacE", "rrlp.almanacE",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacE", HFILL }},
+ { &hf_rrlp_alamanacToa,
+ { "alamanacToa", "rrlp.alamanacToa",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/alamanacToa", HFILL }},
+ { &hf_rrlp_almanacKsii,
+ { "almanacKsii", "rrlp.almanacKsii",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacKsii", HFILL }},
+ { &hf_rrlp_almanacOmegaDot,
+ { "almanacOmegaDot", "rrlp.almanacOmegaDot",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacOmegaDot", HFILL }},
+ { &hf_rrlp_almanacSVhealth,
+ { "almanacSVhealth", "rrlp.almanacSVhealth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacSVhealth", HFILL }},
+ { &hf_rrlp_almanacAPowerHalf,
+ { "almanacAPowerHalf", "rrlp.almanacAPowerHalf",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacAPowerHalf", HFILL }},
+ { &hf_rrlp_almanacOmega0,
+ { "almanacOmega0", "rrlp.almanacOmega0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacOmega0", HFILL }},
+ { &hf_rrlp_almanacW,
+ { "almanacW", "rrlp.almanacW",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacW", HFILL }},
+ { &hf_rrlp_almanacM0,
+ { "almanacM0", "rrlp.almanacM0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacM0", HFILL }},
+ { &hf_rrlp_almanacAF0,
+ { "almanacAF0", "rrlp.almanacAF0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacAF0", HFILL }},
+ { &hf_rrlp_almanacAF1,
+ { "almanacAF1", "rrlp.almanacAF1",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AlmanacElement/almanacAF1", HFILL }},
+ { &hf_rrlp_timeRelation,
+ { "timeRelation", "rrlp.timeRelation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AcquisAssist/timeRelation", HFILL }},
+ { &hf_rrlp_acquisList,
+ { "acquisList", "rrlp.acquisList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisAssist/acquisList", HFILL }},
+ { &hf_rrlp_SeqOfAcquisElement_item,
+ { "Item", "rrlp.SeqOfAcquisElement_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfAcquisElement/_item", HFILL }},
+ { &hf_rrlp_gpsTOW3,
+ { "gpsTOW", "rrlp.gpsTOW",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "TimeRelation/gpsTOW", HFILL }},
+ { &hf_rrlp_svid,
+ { "svid", "rrlp.svid",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisElement/svid", HFILL }},
+ { &hf_rrlp_doppler0,
+ { "doppler0", "rrlp.doppler0",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "AcquisElement/doppler0", HFILL }},
+ { &hf_rrlp_addionalDoppler,
+ { "addionalDoppler", "rrlp.addionalDoppler",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AcquisElement/addionalDoppler", HFILL }},
+ { &hf_rrlp_codePhase,
+ { "codePhase", "rrlp.codePhase",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisElement/codePhase", HFILL }},
+ { &hf_rrlp_intCodePhase,
+ { "intCodePhase", "rrlp.intCodePhase",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisElement/intCodePhase", HFILL }},
+ { &hf_rrlp_gpsBitNumber,
+ { "gpsBitNumber", "rrlp.gpsBitNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisElement/gpsBitNumber", HFILL }},
+ { &hf_rrlp_codePhaseSearchWindow,
+ { "codePhaseSearchWindow", "rrlp.codePhaseSearchWindow",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AcquisElement/codePhaseSearchWindow", HFILL }},
+ { &hf_rrlp_addionalAngle,
+ { "addionalAngle", "rrlp.addionalAngle",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AcquisElement/addionalAngle", HFILL }},
+ { &hf_rrlp_doppler1,
+ { "doppler1", "rrlp.doppler1",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AddionalDopplerFields/doppler1", HFILL }},
+ { &hf_rrlp_dopplerUncertainty,
+ { "dopplerUncertainty", "rrlp.dopplerUncertainty",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AddionalDopplerFields/dopplerUncertainty", HFILL }},
+ { &hf_rrlp_azimuth,
+ { "azimuth", "rrlp.azimuth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AddionalAngleFields/azimuth", HFILL }},
+ { &hf_rrlp_elevation,
+ { "elevation", "rrlp.elevation",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AddionalAngleFields/elevation", HFILL }},
+ { &hf_rrlp_SeqOf_BadSatelliteSet_item,
+ { "Item", "rrlp.SeqOf_BadSatelliteSet_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SeqOf-BadSatelliteSet/_item", HFILL }},
+ { &hf_rrlp_rel98_Ext_ExpOTD,
+ { "rel98-Ext-ExpOTD", "rrlp.rel98_Ext_ExpOTD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_gpsTimeAssistanceMeasurementRequest,
+ { "gpsTimeAssistanceMeasurementRequest", "rrlp.gpsTimeAssistanceMeasurementRequest",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_gpsReferenceTimeUncertainty,
+ { "gpsReferenceTimeUncertainty", "rrlp.gpsReferenceTimeUncertainty",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_msrAssistData_R98_ExpOTD,
+ { "msrAssistData-R98-ExpOTD", "rrlp.msrAssistData_R98_ExpOTD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Rel98-Ext-ExpOTD/msrAssistData-R98-ExpOTD", HFILL }},
+ { &hf_rrlp_systemInfoAssistData_R98_ExpOTD,
+ { "systemInfoAssistData-R98-ExpOTD", "rrlp.systemInfoAssistData_R98_ExpOTD",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Rel98-Ext-ExpOTD/systemInfoAssistData-R98-ExpOTD", HFILL }},
+ { &hf_rrlp_msrAssistList_R98_ExpOTD,
+ { "msrAssistList-R98-ExpOTD", "rrlp.msrAssistList_R98_ExpOTD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MsrAssistData-R98-ExpOTD/msrAssistList-R98-ExpOTD", HFILL }},
+ { &hf_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD_item,
+ { "Item", "rrlp.SeqOfMsrAssistBTS_R98_ExpOTD_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfMsrAssistBTS-R98-ExpOTD/_item", HFILL }},
+ { &hf_rrlp_expectedOTD,
+ { "expectedOTD", "rrlp.expectedOTD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_expOTDUncertainty,
+ { "expOTDUncertainty", "rrlp.expOTDUncertainty",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MsrAssistBTS-R98-ExpOTD/expOTDUncertainty", HFILL }},
+ { &hf_rrlp_systemInfoAssistListR98_ExpOTD,
+ { "systemInfoAssistListR98-ExpOTD", "rrlp.systemInfoAssistListR98_ExpOTD",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SystemInfoAssistData-R98-ExpOTD/systemInfoAssistListR98-ExpOTD", HFILL }},
+ { &hf_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD_item,
+ { "Item", "rrlp.SeqOfSystemInfoAssistBTS_R98_ExpOTD_item",
+ FT_UINT32, BASE_DEC, VALS(rrlp_SystemInfoAssistBTS_R98_ExpOTD_vals), 0,
+ "SeqOfSystemInfoAssistBTS-R98-ExpOTD/_item", HFILL }},
+ { &hf_rrlp_present1,
+ { "present", "rrlp.present",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SystemInfoAssistBTS-R98-ExpOTD/present", HFILL }},
+ { &hf_rrlp_expOTDuncertainty,
+ { "expOTDuncertainty", "rrlp.expOTDuncertainty",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AssistBTSData-R98-ExpOTD/expOTDuncertainty", HFILL }},
+ { &hf_rrlp_referenceFrameMSB,
+ { "referenceFrameMSB", "rrlp.referenceFrameMSB",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTimeAssistanceMeasurements/referenceFrameMSB", HFILL }},
+ { &hf_rrlp_gpsTowSubms,
+ { "gpsTowSubms", "rrlp.gpsTowSubms",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTimeAssistanceMeasurements/gpsTowSubms", HFILL }},
+ { &hf_rrlp_deltaTow,
+ { "deltaTow", "rrlp.deltaTow",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GPSTimeAssistanceMeasurements/deltaTow", HFILL }},
+ { &hf_rrlp_rel_98_Ext_MeasureInfo,
+ { "rel-98-Ext-MeasureInfo", "rrlp.rel_98_Ext_MeasureInfo",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Rel-98-MsrPosition-Rsp-Extension/rel-98-Ext-MeasureInfo", HFILL }},
+ { &hf_rrlp_otd_MeasureInfo_R98_Ext,
+ { "otd-MeasureInfo-R98-Ext", "rrlp.otd_MeasureInfo_R98_Ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Rel-98-MsrPosition-Rsp-Extension/rel-98-Ext-MeasureInfo/otd-MeasureInfo-R98-Ext", HFILL }},
+ { &hf_rrlp_timeAssistanceMeasurements,
+ { "timeAssistanceMeasurements", "rrlp.timeAssistanceMeasurements",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Rel-98-MsrPosition-Rsp-Extension/timeAssistanceMeasurements", HFILL }},
+ { &hf_rrlp_otdMsrFirstSets_R98_Ext,
+ { "otdMsrFirstSets-R98-Ext", "rrlp.otdMsrFirstSets_R98_Ext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "OTD-MeasureInfo-R98-Ext/otdMsrFirstSets-R98-Ext", HFILL }},
+ { &hf_rrlp_otd_FirstSetMsrs_R98_Ext,
+ { "otd-FirstSetMsrs-R98-Ext", "rrlp.otd_FirstSetMsrs_R98_Ext",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "OTD-MsrElementFirst-R98-Ext/otd-FirstSetMsrs-R98-Ext", HFILL }},
+ { &hf_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext_item,
+ { "Item", "rrlp.SeqOfOTD_FirstSetMsrs_R98_Ext_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SeqOfOTD-FirstSetMsrs-R98-Ext/_item", HFILL }},
+ { &hf_rrlp_extended_reference,
+ { "extended-reference", "rrlp.extended_reference",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_rrlp_otd_MeasureInfo_5_Ext,
+ { "otd-MeasureInfo-5-Ext", "rrlp.otd_MeasureInfo_5_Ext",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Rel-5-MsrPosition-Rsp-Extension/otd-MeasureInfo-5-Ext", HFILL }},
+ { &hf_rrlp_ulPseudoSegInd,
+ { "ulPseudoSegInd", "rrlp.ulPseudoSegInd",
+ FT_UINT32, BASE_DEC, VALS(rrlp_UlPseudoSegInd_vals), 0,
+ "Rel-5-MsrPosition-Rsp-Extension/ulPseudoSegInd", HFILL }},
+ { &hf_rrlp_smlc_code,
+ { "smlc-code", "rrlp.smlc_code",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Extended-reference/smlc-code", HFILL }},
+ { &hf_rrlp_transaction_ID,
+ { "transaction-ID", "rrlp.transaction_ID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Extended-reference/transaction-ID", HFILL }},
+
+/*--- End of included file: packet-rrlp-hfarr.c ---*/
+#line 91 "packet-rrlp-template.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_rrlp,
+
+/*--- Included file: packet-rrlp-ettarr.c ---*/
+#line 1 "packet-rrlp-ettarr.c"
+ &ett_rrlp_PDU,
+ &ett_rrlp_RRLP_Component,
+ &ett_rrlp_MsrPosition_Req,
+ &ett_rrlp_MsrPosition_Rsp,
+ &ett_rrlp_AssistanceData,
+ &ett_rrlp_ProtocolError,
+ &ett_rrlp_PositionInstruct,
+ &ett_rrlp_MethodType,
+ &ett_rrlp_AccuracyOpt,
+ &ett_rrlp_ReferenceAssistData,
+ &ett_rrlp_MsrAssistData,
+ &ett_rrlp_SeqOfMsrAssistBTS,
+ &ett_rrlp_MsrAssistBTS,
+ &ett_rrlp_SystemInfoAssistData,
+ &ett_rrlp_SeqOfSystemInfoAssistBTS,
+ &ett_rrlp_SystemInfoAssistBTS,
+ &ett_rrlp_AssistBTSData,
+ &ett_rrlp_CalcAssistanceBTS,
+ &ett_rrlp_ReferenceWGS84,
+ &ett_rrlp_MultipleSets,
+ &ett_rrlp_ReferenceIdentity,
+ &ett_rrlp_SeqOfReferenceIdentityType,
+ &ett_rrlp_ReferenceIdentityType,
+ &ett_rrlp_BSICAndCarrier,
+ &ett_rrlp_CellIDAndLAC,
+ &ett_rrlp_OTD_MeasureInfo,
+ &ett_rrlp_SeqOfOTD_MsrElementRest,
+ &ett_rrlp_OTD_MsrElementFirst,
+ &ett_rrlp_SeqOfOTD_FirstSetMsrs,
+ &ett_rrlp_OTD_MsrElementRest,
+ &ett_rrlp_SeqOfOTD_MsrsOfOtherSets,
+ &ett_rrlp_TOA_MeasurementsOfRef,
+ &ett_rrlp_OTD_MsrsOfOtherSets,
+ &ett_rrlp_OTD_Measurement,
+ &ett_rrlp_OTD_MeasurementWithID,
+ &ett_rrlp_EOTDQuality,
+ &ett_rrlp_NeighborIdentity,
+ &ett_rrlp_MultiFrameCarrier,
+ &ett_rrlp_LocationInfo,
+ &ett_rrlp_GPS_MeasureInfo,
+ &ett_rrlp_SeqOfGPS_MsrSetElement,
+ &ett_rrlp_GPS_MsrSetElement,
+ &ett_rrlp_SeqOfGPS_MsrElement,
+ &ett_rrlp_GPS_MsrElement,
+ &ett_rrlp_LocationError,
+ &ett_rrlp_AdditionalAssistanceData,
+ &ett_rrlp_GPS_AssistData,
+ &ett_rrlp_ControlHeader,
+ &ett_rrlp_ReferenceTime,
+ &ett_rrlp_GPSTime,
+ &ett_rrlp_GPSTOWAssist,
+ &ett_rrlp_GPSTOWAssistElement,
+ &ett_rrlp_GSMTime,
+ &ett_rrlp_RefLocation,
+ &ett_rrlp_DGPSCorrections,
+ &ett_rrlp_SeqOfSatElement,
+ &ett_rrlp_SatElement,
+ &ett_rrlp_NavigationModel,
+ &ett_rrlp_SeqOfNavModelElement,
+ &ett_rrlp_NavModelElement,
+ &ett_rrlp_SatStatus,
+ &ett_rrlp_UncompressedEphemeris,
+ &ett_rrlp_EphemerisSubframe1Reserved,
+ &ett_rrlp_IonosphericModel,
+ &ett_rrlp_UTCModel,
+ &ett_rrlp_Almanac,
+ &ett_rrlp_SeqOfAlmanacElement,
+ &ett_rrlp_AlmanacElement,
+ &ett_rrlp_AcquisAssist,
+ &ett_rrlp_SeqOfAcquisElement,
+ &ett_rrlp_TimeRelation,
+ &ett_rrlp_AcquisElement,
+ &ett_rrlp_AddionalDopplerFields,
+ &ett_rrlp_AddionalAngleFields,
+ &ett_rrlp_SeqOf_BadSatelliteSet,
+ &ett_rrlp_Rel98_MsrPosition_Req_Extension,
+ &ett_rrlp_Rel98_AssistanceData_Extension,
+ &ett_rrlp_Rel98_Ext_ExpOTD,
+ &ett_rrlp_MsrAssistData_R98_ExpOTD,
+ &ett_rrlp_SeqOfMsrAssistBTS_R98_ExpOTD,
+ &ett_rrlp_MsrAssistBTS_R98_ExpOTD,
+ &ett_rrlp_SystemInfoAssistData_R98_ExpOTD,
+ &ett_rrlp_SeqOfSystemInfoAssistBTS_R98_ExpOTD,
+ &ett_rrlp_SystemInfoAssistBTS_R98_ExpOTD,
+ &ett_rrlp_AssistBTSData_R98_ExpOTD,
+ &ett_rrlp_GPSTimeAssistanceMeasurements,
+ &ett_rrlp_Rel_98_MsrPosition_Rsp_Extension,
+ &ett_rrlp_T_rel_98_Ext_MeasureInfo,
+ &ett_rrlp_OTD_MeasureInfo_R98_Ext,
+ &ett_rrlp_OTD_MsrElementFirst_R98_Ext,
+ &ett_rrlp_SeqOfOTD_FirstSetMsrs_R98_Ext,
+ &ett_rrlp_Rel_5_MsrPosition_Rsp_Extension,
+ &ett_rrlp_Extended_reference,
+ &ett_rrlp_Rel5_MsrPosition_Req_Extension,
+ &ett_rrlp_Rel5_AssistanceData_Extension,
+ &ett_rrlp_Rel_5_ProtocolError_Extension,
+
+/*--- End of included file: packet-rrlp-ettarr.c ---*/
+#line 97 "packet-rrlp-template.c"
+ };
+
+
+ /* Register protocol */
+ proto_rrlp = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ register_dissector("rrlp", dissect_PDU_PDU, proto_rrlp);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_rrlp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+
+}
+
+
+/*--- proto_reg_handoff_rrlp ---------------------------------------*/
+void
+proto_reg_handoff_rrlp(void)
+{
+
+ rrlp_handle = create_dissector_handle(dissect_PDU_PDU, proto_rrlp);
+
+
+}
+
+
diff --git a/epan/dissectors/packet-rrlp.h b/epan/dissectors/packet-rrlp.h
new file mode 100644
index 0000000000..3300686c42
--- /dev/null
+++ b/epan/dissectors/packet-rrlp.h
@@ -0,0 +1,43 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
+/* .\packet-rrlp.h */
+/* ../../tools/asn2eth.py -X -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$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * 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 */
+
+